"
for(var/V in stored_food)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index e02c3c1334..e5c5a4f933 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -176,7 +176,7 @@
newmeat.name = "[sourcename] [newmeat.name]"
if(istype(newmeat))
newmeat.subjectname = sourcename
- newmeat.reagents.add_reagent ("nutriment", sourcenutriment / meat_produced) // Thehehe. Fat guys go first
+ newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, sourcenutriment / meat_produced) // Thehehe. Fat guys go first
if(sourcejob)
newmeat.subjectjob = sourcejob
allmeat[i] = newmeat
diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm
index 449da2afe3..c52389cd56 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm
@@ -52,10 +52,10 @@
grill_loop.start()
return
else
- if(I.reagents.has_reagent("monkey_energy"))
- grill_fuel += (20 * (I.reagents.get_reagent_amount("monkey_energy")))
+ if(I.reagents.has_reagent(/datum/reagent/consumable/monkey_energy))
+ grill_fuel += (20 * (I.reagents.get_reagent_amount(/datum/reagent/consumable/monkey_energy)))
to_chat(user, "
You pour the Monkey Energy in [src].")
- I.reagents.remove_reagent("monkey_energy", I.reagents.get_reagent_amount("monkey_energy"))
+ I.reagents.remove_reagent("monkey_energy", I.reagents.get_reagent_amount(/datum/reagent/consumable/monkey_energy))
update_icon()
return
..()
diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm
index 8db6956da9..71becf0542 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm
@@ -25,37 +25,37 @@
var/flavour_name = "vanilla"
var/obj/item/reagent_containers/beaker = null
var/static/list/icecream_vat_reagents = list(
- "milk" = 6,
- "flour" = 6,
- "sugar" = 6,
- "ice" = 6,
- "cocoa" = 6,
- "vanilla" = 6,
- "berryjuice" = 6,
- "singulo" = 6,
- "peachjuice" = 6,
- "grapejuice" = 6)
+ /datum/reagent/consumable/milk = 6,
+ /datum/reagent/consumable/flour = 6,
+ /datum/reagent/consumable/sugar = 6,
+ /datum/reagent/consumable/ice = 6,
+ /datum/reagent/consumable/coco = 6,
+ /datum/reagent/consumable/vanilla = 6,
+ /datum/reagent/consumable/berryjuice = 6,
+ /datum/reagent/consumable/ethanol/singulo = 6,
+ /datum/reagent/consumable/peachjuice = 6,
+ /datum/reagent/consumable/grapejuice = 6)
/obj/machinery/icecream_vat/proc/get_ingredient_list(type)
switch(type)
if(ICECREAM_CHOCOLATE)
- return list("milk", "ice", "cocoa")
+ return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/coco)
if(ICECREAM_STRAWBERRY)
- return list("milk", "ice", "berryjuice")
+ return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/berryjuice)
if(ICECREAM_CUSTOM)
- return list("milk", "ice")
+ return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice)
if(ICECREAM_PEACH)
- return list("milk", "ice", "peachjuice")
+ return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/peachjuice)
if(ICECREAM_GRAPE)
- return list("milk", "ice", "grapejuice")
+ return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/grapejuice)
if(ICECREAM_BLUE)
- return list("milk", "ice", "singulo")
+ return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/ethanol/singulo)
if(CONE_WAFFLE)
- return list("flour", "sugar")
+ return list(/datum/reagent/consumable/flour, /datum/reagent/consumable/sugar)
if(CONE_CHOC)
- return list("flour", "sugar", "cocoa")
+ return list(/datum/reagent/consumable/flour, /datum/reagent/consumable/sugar, /datum/reagent/consumable/coco)
else //ICECREAM_VANILLA
- return list("milk", "ice", "vanilla")
+ return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/vanilla)
/obj/machinery/icecream_vat/proc/get_flavour_name(flavour_type)
@@ -113,7 +113,7 @@
dat += "
VAT CONTENT"
for(var/datum/reagent/R in reagents.reagent_list)
dat += "[R.name]: [R.volume]"
- dat += "
Purge"
+ dat += "
Purge"
dat += "
Refresh Close"
var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src)
@@ -132,7 +132,7 @@
else
I.add_ice_cream(flavour_name)
if(I.reagents.total_volume < 10)
- I.reagents.add_reagent("sugar", 10 - I.reagents.total_volume)
+ I.reagents.add_reagent(/datum/reagent/consumable/sugar, 10 - I.reagents.total_volume)
updateDialog()
else
to_chat(user, "
There is not enough ice cream left!")
@@ -228,7 +228,7 @@
desc = "Delicious waffle cone, but no ice cream."
icon = 'icons/obj/kitchen.dmi'
icon_state = "icecream_cone_waffle" //default for admin-spawned cones, href_list["cone"] should overwrite this all the time
- list_reagents = list("nutriment" = 4)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 4)
tastes = list("cream" = 2, "waffle" = 1)
var/ice_creamed = 0
var/cone_type
@@ -244,9 +244,9 @@
icon_state = "icecream_cone_[cone_name]"
switch (cone_type)
if ("waffle")
- reagents.add_reagent("nutriment", 1)
+ reagents.add_reagent(/datum/reagent/consumable/nutriment, 1)
if ("chocolate")
- reagents.add_reagent("cocoa", 1) // chocolate ain't as nutritious kids
+ reagents.add_reagent(/datum/reagent/consumable/coco, 1) // chocolate ain't as nutritious kids
desc = "Delicious [cone_name] cone, but no ice cream."
@@ -256,31 +256,31 @@
switch (flavour_name) // adding the actual reagents advertised in the ingredient list
if ("vanilla")
desc = "A delicious [cone_type] cone filled with vanilla ice cream. All the other ice creams take content from it."
- reagents.add_reagent("vanilla", 3)
+ reagents.add_reagent(/datum/reagent/consumable/vanilla, 3)
filling_color = "#ECE1C1"
if ("chocolate")
desc = "A delicious [cone_type] cone filled with chocolate ice cream. Surprisingly, made with real cocoa."
- reagents.add_reagent("cocoa", 3)
+ reagents.add_reagent(/datum/reagent/consumable/coco, 3)
filling_color = "#93673B"
if ("strawberry")
desc = "A delicious [cone_type] cone filled with strawberry ice cream. Definitely not made with real strawberries."
- reagents.add_reagent("berryjuice", 3)
+ reagents.add_reagent(/datum/reagent/consumable/berryjuice, 3)
filling_color = "#EFB4B4"
if ("peach")
desc = "A delicious [cone_type] cone filled with peach ice cream. Definitely made with real peaches!"
- reagents.add_reagent("peachjuice", 3)
+ reagents.add_reagent(/datum/reagent/consumable/peachjuice, 3)
filling_color = "#E78108"
if ("grape")
desc = "A delicious [cone_type] cone filled with grape ice cream. Surprisingly, made with real pink grape, likely not real sugarcanes used."
- reagents.add_reagent("grapejuice", 3)
+ reagents.add_reagent(/datum/reagent/consumable/grapejuice, 3)
filling_color = "#FF1493"
if ("blue")
desc = "A delicious [cone_type] cone filled with blue ice cream. Made with real... blue?"
- reagents.add_reagent("singulo", 3)
+ reagents.add_reagent(/datum/reagent/consumable/ethanol/singulo, 3)
filling_color = "#ACBCED"
if ("mob")
desc = "A suspicious [cone_type] cone filled with bright red ice cream. That's probably not strawberry..."
- reagents.add_reagent("liquidgibs", 3)
+ reagents.add_reagent(/datum/reagent/liquidgibs, 3)
filling_color = "#EFB4B4"
if ("custom")
if(R && R.total_volume >= 4) //consumable reagents have stronger taste so higher volume will allow non-food flavourings to break through better.
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index 4efac6f508..e4d36b29d2 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -134,8 +134,8 @@
if(istype(O, /obj/item/reagent_containers/spray))
var/obj/item/reagent_containers/spray/clean_spray = O
- if(clean_spray.reagents.has_reagent("cleaner", clean_spray.amount_per_transfer_from_this))
- clean_spray.reagents.remove_reagent("cleaner", clean_spray.amount_per_transfer_from_this,1)
+ if(clean_spray.reagents.has_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this))
+ clean_spray.reagents.remove_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this,1)
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
user.visible_message("[user] has cleaned \the [src].", "
You clean \the [src].")
dirty = 0
diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm
index 9dbddfb519..9df650500a 100644
--- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm
+++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm
@@ -2,385 +2,385 @@
/datum/chemical_reaction/goldschlager
name = "Goldschlager"
- id = "goldschlager"
- results = list("goldschlager" = 10)
- required_reagents = list("vodka" = 10, "gold" = 1)
+ id = /datum/reagent/consumable/ethanol/goldschlager
+ results = list(/datum/reagent/consumable/ethanol/goldschlager = 10)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 10, /datum/reagent/gold = 1)
/datum/chemical_reaction/patron
name = "Patron"
- id = "patron"
- results = list("patron" = 10)
- required_reagents = list("tequila" = 10, "silver" = 1)
+ id = /datum/reagent/consumable/ethanol/patron
+ results = list(/datum/reagent/consumable/ethanol/patron = 10)
+ required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 10, /datum/reagent/silver = 1)
/datum/chemical_reaction/bilk
name = "Bilk"
- id = "bilk"
- results = list("bilk" = 2)
- required_reagents = list("milk" = 1, "beer" = 1)
+ id = /datum/reagent/consumable/ethanol/bilk
+ results = list(/datum/reagent/consumable/ethanol/bilk = 2)
+ required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/ethanol/beer = 1)
/datum/chemical_reaction/icetea
name = "Iced Tea"
- id = "icetea"
- results = list("icetea" = 4)
- required_reagents = list("ice" = 1, "tea" = 3)
+ id = /datum/reagent/consumable/icetea
+ results = list(/datum/reagent/consumable/icetea = 4)
+ required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/tea = 3)
/datum/chemical_reaction/icecoffee
name = "Iced Coffee"
- id = "icecoffee"
- results = list("icecoffee" = 4)
- required_reagents = list("ice" = 1, "coffee" = 3)
+ id = /datum/reagent/consumable/icecoffee
+ results = list(/datum/reagent/consumable/icecoffee = 4)
+ required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/coffee = 3)
/datum/chemical_reaction/nuka_cola
name = "Nuka Cola"
- id = "nuka_cola"
- results = list("nuka_cola" = 6)
- required_reagents = list("uranium" = 1, "cola" = 6)
+ id = /datum/reagent/consumable/nuka_cola
+ results = list(/datum/reagent/consumable/nuka_cola = 6)
+ required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/consumable/space_cola = 6)
/datum/chemical_reaction/moonshine
name = "Moonshine"
- id = "moonshine"
- results = list("moonshine" = 10)
- required_reagents = list("nutriment" = 5, "sugar" = 5)
- required_catalysts = list("enzyme" = 5)
+ id = /datum/reagent/consumable/ethanol/moonshine
+ results = list(/datum/reagent/consumable/ethanol/moonshine = 10)
+ required_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/sugar = 5)
+ required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
/datum/chemical_reaction/wine
name = "Wine"
- id = "wine"
- results = list("wine" = 10)
- required_reagents = list("grapejuice" = 10)
- required_catalysts = list("enzyme" = 5)
+ id = /datum/reagent/consumable/ethanol/wine
+ results = list(/datum/reagent/consumable/ethanol/wine = 10)
+ required_reagents = list(/datum/reagent/consumable/grapejuice = 10)
+ required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
/datum/chemical_reaction/spacebeer
name = "Space Beer"
- id = "spacebeer"
- results = list("beer" = 10)
- required_reagents = list("flour" = 10)
- required_catalysts = list("enzyme" = 5)
+ id = /datum/reagent/consumable/ethanol/beer
+ results = list(/datum/reagent/consumable/ethanol/beer = 10)
+ required_reagents = list(/datum/reagent/consumable/flour = 10)
+ required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
/datum/chemical_reaction/vodka
name = "Vodka"
- id = "vodka"
- results = list("vodka" = 10)
- required_reagents = list("potato" = 10)
- required_catalysts = list("enzyme" = 5)
+ id = /datum/reagent/consumable/ethanol/vodka
+ results = list(/datum/reagent/consumable/ethanol/vodka = 10)
+ required_reagents = list(/datum/reagent/consumable/potato_juice = 10)
+ required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
/datum/chemical_reaction/kahlua
name = "Kahlua"
- id = "kahlua"
- results = list("kahlua" = 5)
- required_reagents = list("coffee" = 5, "sugar" = 5)
- required_catalysts = list("enzyme" = 5)
+ id = /datum/reagent/consumable/ethanol/kahlua
+ results = list(/datum/reagent/consumable/ethanol/kahlua = 5)
+ required_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/sugar = 5)
+ required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
/datum/chemical_reaction/gin_tonic
name = "Gin and Tonic"
- id = "gintonic"
- results = list("gintonic" = 3)
- required_reagents = list("gin" = 2, "tonic" = 1)
+ id = /datum/reagent/consumable/ethanol/gintonic
+ results = list(/datum/reagent/consumable/ethanol/gintonic = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/tonic = 1)
/datum/chemical_reaction/rum_coke
name = "Rum and Coke"
- id = "rumcoke"
- results = list("rumcoke" = 3)
- required_reagents = list("rum" = 2, "cola" = 1)
+ id = /datum/reagent/consumable/ethanol/rum_coke
+ results = list(/datum/reagent/consumable/ethanol/rum_coke = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/space_cola = 1)
/datum/chemical_reaction/cuba_libre
name = "Cuba Libre"
- id = "cubalibre"
- results = list("cubalibre" = 4)
- required_reagents = list("rumcoke" = 3, "limejuice" = 1)
+ id = /datum/reagent/consumable/ethanol/cuba_libre
+ results = list(/datum/reagent/consumable/ethanol/cuba_libre = 4)
+ required_reagents = list(/datum/reagent/consumable/ethanol/rum_coke = 3, /datum/reagent/consumable/limejuice = 1)
/datum/chemical_reaction/martini
name = "Classic Martini"
- id = "martini"
- results = list("martini" = 3)
- required_reagents = list("gin" = 2, "vermouth" = 1)
+ id = /datum/reagent/consumable/ethanol/martini
+ results = list(/datum/reagent/consumable/ethanol/martini = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/ethanol/vermouth = 1)
/datum/chemical_reaction/vodkamartini
name = "Vodka Martini"
- id = "vodkamartini"
- results = list("vodkamartini" = 3)
- required_reagents = list("vodka" = 2, "vermouth" = 1)
+ id = /datum/reagent/consumable/ethanol/vodkamartini
+ results = list(/datum/reagent/consumable/ethanol/vodkamartini = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/ethanol/vermouth = 1)
/datum/chemical_reaction/white_russian
name = "White Russian"
- id = "whiterussian"
- results = list("whiterussian" = 5)
- required_reagents = list("blackrussian" = 3, "cream" = 2)
+ id = /datum/reagent/consumable/ethanol/white_russian
+ results = list(/datum/reagent/consumable/ethanol/white_russian = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/black_russian = 3, /datum/reagent/consumable/cream = 2)
/datum/chemical_reaction/whiskey_cola
name = "Whiskey Cola"
- id = "whiskeycola"
- results = list("whiskeycola" = 3)
- required_reagents = list("whiskey" = 2, "cola" = 1)
+ id = /datum/reagent/consumable/ethanol/whiskey_cola
+ results = list(/datum/reagent/consumable/ethanol/whiskey_cola = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/space_cola = 1)
/datum/chemical_reaction/screwdriver
name = "Screwdriver"
- id = "screwdrivercocktail"
- results = list("screwdrivercocktail" = 3)
- required_reagents = list("vodka" = 2, "orangejuice" = 1)
+ id = /datum/reagent/consumable/ethanol/screwdrivercocktail
+ results = list(/datum/reagent/consumable/ethanol/screwdrivercocktail = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/orangejuice = 1)
/datum/chemical_reaction/bloody_mary
name = "Bloody Mary"
- id = "bloodymary"
- results = list("bloodymary" = 4)
- required_reagents = list("vodka" = 1, "tomatojuice" = 2, "limejuice" = 1)
+ id = /datum/reagent/consumable/ethanol/bloody_mary
+ results = list(/datum/reagent/consumable/ethanol/bloody_mary = 4)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/limejuice = 1)
/datum/chemical_reaction/gargle_blaster
name = "Pan-Galactic Gargle Blaster"
- id = "gargleblaster"
- results = list("gargleblaster" = 5)
- required_reagents = list("vodka" = 1, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1)
+ id = /datum/reagent/consumable/ethanol/gargle_blaster
+ results = list(/datum/reagent/consumable/ethanol/gargle_blaster = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/gin = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/ethanol/cognac = 1, /datum/reagent/consumable/limejuice = 1)
/datum/chemical_reaction/brave_bull
name = "Brave Bull"
- id = "bravebull"
- results = list("bravebull" = 3)
- required_reagents = list("tequila" = 2, "kahlua" = 1)
+ id = /datum/reagent/consumable/ethanol/brave_bull
+ results = list(/datum/reagent/consumable/ethanol/brave_bull = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/ethanol/kahlua = 1)
/datum/chemical_reaction/tequila_sunrise
name = "Tequila Sunrise"
- id = "tequilasunrise"
- results = list("tequilasunrise" = 5)
- required_reagents = list("tequila" = 2, "orangejuice" = 2, "grenadine" = 1)
+ id = /datum/reagent/consumable/ethanol/tequila_sunrise
+ results = list(/datum/reagent/consumable/ethanol/tequila_sunrise = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/orangejuice = 2, /datum/reagent/consumable/grenadine = 1)
/datum/chemical_reaction/toxins_special
name = "Toxins Special"
- id = "toxinsspecial"
- results = list("toxinsspecial" = 5)
- required_reagents = list("rum" = 2, "vermouth" = 1, "plasma" = 2)
+ id = /datum/reagent/consumable/ethanol/toxins_special
+ results = list(/datum/reagent/consumable/ethanol/toxins_special = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/ethanol/vermouth = 1, /datum/reagent/toxin/plasma = 2)
/datum/chemical_reaction/beepsky_smash
name = "Beepksy Smash"
- id = "beepksysmash"
- results = list("beepskysmash" = 5)
- required_reagents = list("limejuice" = 2, "quadruple_sec" = 2, "iron" = 1)
+ id = /datum/reagent/consumable/ethanol/beepsky_smash
+ results = list(/datum/reagent/consumable/ethanol/beepsky_smash = 5)
+ required_reagents = list(/datum/reagent/consumable/limejuice = 2, /datum/reagent/consumable/ethanol/quadruple_sec = 2, /datum/reagent/iron = 1)
/datum/chemical_reaction/doctor_delight
name = "The Doctor's Delight"
- id = "doctordelight"
- results = list("doctorsdelight" = 5)
- required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1, "cryoxadone" = 1)
+ id = /datum/reagent/consumable/doctor_delight
+ results = list(/datum/reagent/consumable/doctor_delight = 5)
+ required_reagents = list(/datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/consumable/orangejuice = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/medicine/cryoxadone = 1)
/datum/chemical_reaction/irish_cream
name = "Irish Cream"
- id = "irishcream"
- results = list("irishcream" = 3)
- required_reagents = list("whiskey" = 2, "cream" = 1)
+ id = /datum/reagent/consumable/ethanol/irish_cream
+ results = list(/datum/reagent/consumable/ethanol/irish_cream = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/cream = 1)
/datum/chemical_reaction/manly_dorf
name = "The Manly Dorf"
- id = "manlydorf"
- results = list("manlydorf" = 3)
- required_reagents = list ("beer" = 1, "ale" = 2)
+ id = /datum/reagent/consumable/ethanol/manly_dorf
+ results = list(/datum/reagent/consumable/ethanol/manly_dorf = 3)
+ required_reagents = list (/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/ethanol/ale = 2)
/datum/chemical_reaction/greenbeer
name = "Green Beer"
- id = "greenbeer"
- results = list("greenbeer" = 10)
- required_reagents = list("greencrayonpowder" = 1, "beer" = 10)
+ id = /datum/reagent/consumable/ethanol/beer/green
+ results = list(/datum/reagent/consumable/ethanol/beer/green = 10)
+ required_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/green = 1, /datum/reagent/consumable/ethanol/beer = 10)
/datum/chemical_reaction/hooch
name = "Hooch"
- id = "hooch"
- results = list("hooch" = 3)
- required_reagents = list ("ethanol" = 2, "welding_fuel" = 1)
- required_catalysts = list("enzyme" = 1)
+ id = /datum/reagent/consumable/ethanol/hooch
+ results = list(/datum/reagent/consumable/ethanol/hooch = 3)
+ required_reagents = list (/datum/reagent/consumable/ethanol = 2, /datum/reagent/fuel = 1)
+ required_catalysts = list(/datum/reagent/consumable/enzyme = 1)
/datum/chemical_reaction/irish_coffee
name = "Irish Coffee"
- id = "irishcoffee"
- results = list("irishcoffee" = 2)
- required_reagents = list("irishcream" = 1, "coffee" = 1)
+ id = /datum/reagent/consumable/ethanol/irishcoffee
+ results = list(/datum/reagent/consumable/ethanol/irishcoffee = 2)
+ required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/coffee = 1)
/datum/chemical_reaction/b52
name = "B-52"
- id = "b52"
- results = list("b52" = 3)
- required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1)
+ id = /datum/reagent/consumable/ethanol/b52
+ results = list(/datum/reagent/consumable/ethanol/b52 = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/cognac = 1)
/datum/chemical_reaction/atomicbomb
name = "Atomic Bomb"
- id = "atomicbomb"
- results = list("atomicbomb" = 10)
- required_reagents = list("b52" = 10, "uranium" = 1)
+ id = /datum/reagent/consumable/ethanol/atomicbomb
+ results = list(/datum/reagent/consumable/ethanol/atomicbomb = 10)
+ required_reagents = list(/datum/reagent/consumable/ethanol/b52 = 10, /datum/reagent/uranium = 1)
/datum/chemical_reaction/margarita
name = "Margarita"
- id = "margarita"
- results = list("margarita" = 3)
- required_reagents = list("tequila" = 2, "limejuice" = 1)
+ id = /datum/reagent/consumable/ethanol/margarita
+ results = list(/datum/reagent/consumable/ethanol/margarita = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/limejuice = 1)
/datum/chemical_reaction/longislandicedtea
name = "Long Island Iced Tea"
- id = "longislandicedtea"
- results = list("longislandicedtea" = 4)
- required_reagents = list("vodka" = 1, "gin" = 1, "tequila" = 1, "cubalibre" = 1)
+ id = /datum/reagent/consumable/ethanol/longislandicedtea
+ results = list(/datum/reagent/consumable/ethanol/longislandicedtea = 4)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/gin = 1, /datum/reagent/consumable/ethanol/tequila = 1, /datum/reagent/consumable/ethanol/cuba_libre = 1)
/datum/chemical_reaction/threemileisland
name = "Three Mile Island Iced Tea"
- id = "threemileisland"
- results = list("threemileisland" = 10)
- required_reagents = list("longislandicedtea" = 10, "uranium" = 1)
+ id = /datum/reagent/consumable/ethanol/threemileisland
+ results = list(/datum/reagent/consumable/ethanol/threemileisland = 10)
+ required_reagents = list(/datum/reagent/consumable/ethanol/longislandicedtea = 10, /datum/reagent/uranium = 1)
/datum/chemical_reaction/whiskeysoda
name = "Whiskey Soda"
- id = "whiskeysoda"
- results = list("whiskeysoda" = 3)
- required_reagents = list("whiskey" = 2, "sodawater" = 1)
+ id = /datum/reagent/consumable/ethanol/whiskeysoda
+ results = list(/datum/reagent/consumable/ethanol/whiskeysoda = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/sodawater = 1)
/datum/chemical_reaction/black_russian
name = "Black Russian"
- id = "blackrussian"
- results = list("blackrussian" = 5)
- required_reagents = list("vodka" = 3, "kahlua" = 2)
+ id = /datum/reagent/consumable/ethanol/black_russian
+ results = list(/datum/reagent/consumable/ethanol/black_russian = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 3, /datum/reagent/consumable/ethanol/kahlua = 2)
/datum/chemical_reaction/manhattan
name = "Manhattan"
- id = "manhattan"
- results = list("manhattan" = 3)
- required_reagents = list("whiskey" = 2, "vermouth" = 1)
+ id = /datum/reagent/consumable/ethanol/manhattan
+ results = list(/datum/reagent/consumable/ethanol/manhattan = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/ethanol/vermouth = 1)
/datum/chemical_reaction/manhattan_proj
name = "Manhattan Project"
- id = "manhattan_proj"
- results = list("manhattan_proj" = 10)
- required_reagents = list("manhattan" = 10, "uranium" = 1)
+ id = /datum/reagent/consumable/ethanol/manhattan_proj
+ results = list(/datum/reagent/consumable/ethanol/manhattan_proj = 10)
+ required_reagents = list(/datum/reagent/consumable/ethanol/manhattan = 10, /datum/reagent/uranium = 1)
/datum/chemical_reaction/vodka_tonic
name = "Vodka and Tonic"
- id = "vodkatonic"
- results = list("vodkatonic" = 3)
- required_reagents = list("vodka" = 2, "tonic" = 1)
+ id = /datum/reagent/consumable/ethanol/vodkatonic
+ results = list(/datum/reagent/consumable/ethanol/vodkatonic = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/tonic = 1)
/datum/chemical_reaction/gin_fizz
name = "Gin Fizz"
- id = "ginfizz"
- results = list("ginfizz" = 4)
- required_reagents = list("gin" = 2, "sodawater" = 1, "limejuice" = 1)
+ id = /datum/reagent/consumable/ethanol/ginfizz
+ results = list(/datum/reagent/consumable/ethanol/ginfizz = 4)
+ required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/limejuice = 1)
/datum/chemical_reaction/bahama_mama
name = "Bahama mama"
- id = "bahama_mama"
- results = list("bahama_mama" = 6)
- required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1)
+ id = /datum/reagent/consumable/ethanol/bahama_mama
+ results = list(/datum/reagent/consumable/ethanol/bahama_mama = 6)
+ required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/orangejuice = 2, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ice = 1)
/datum/chemical_reaction/singulo
name = "Singulo"
- id = "singulo"
- results = list("singulo" = 10)
- required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5)
+ id = /datum/reagent/consumable/ethanol/singulo
+ results = list(/datum/reagent/consumable/ethanol/singulo = 10)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 5, /datum/reagent/radium = 1, /datum/reagent/consumable/ethanol/wine = 5)
/datum/chemical_reaction/alliescocktail
name = "Allies Cocktail"
- id = "alliescocktail"
- results = list("alliescocktail" = 2)
- required_reagents = list("martini" = 1, "vodka" = 1)
+ id = /datum/reagent/consumable/ethanol/alliescocktail
+ results = list(/datum/reagent/consumable/ethanol/alliescocktail = 2)
+ required_reagents = list(/datum/reagent/consumable/ethanol/martini = 1, /datum/reagent/consumable/ethanol/vodka = 1)
/datum/chemical_reaction/demonsblood
name = "Demons Blood"
- id = "demonsblood"
- results = list("demonsblood" = 4)
- required_reagents = list("rum" = 1, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1)
+ id = /datum/reagent/consumable/ethanol/demonsblood
+ results = list(/datum/reagent/consumable/ethanol/demonsblood = 4)
+ required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/spacemountainwind = 1, /datum/reagent/blood = 1, /datum/reagent/consumable/dr_gibb = 1)
/datum/chemical_reaction/booger
name = "Booger"
- id = "booger"
- results = list("booger" = 4)
- required_reagents = list("cream" = 1, "banana" = 1, "rum" = 1, "watermelonjuice" = 1)
+ id = /datum/reagent/consumable/ethanol/booger
+ results = list(/datum/reagent/consumable/ethanol/booger = 4)
+ required_reagents = list(/datum/reagent/consumable/cream = 1, /datum/reagent/consumable/banana = 1, /datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/watermelonjuice = 1)
/datum/chemical_reaction/antifreeze
name = "Anti-freeze"
- id = "antifreeze"
- results = list("antifreeze" = 4)
- required_reagents = list("vodka" = 2, "cream" = 1, "ice" = 1)
+ id = /datum/reagent/consumable/ethanol/antifreeze
+ results = list(/datum/reagent/consumable/ethanol/antifreeze = 4)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/ice = 1)
/datum/chemical_reaction/barefoot
name = "Barefoot"
- id = "barefoot"
- results = list("barefoot" = 3)
- required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1)
+ id = /datum/reagent/consumable/ethanol/barefoot
+ results = list(/datum/reagent/consumable/ethanol/barefoot = 3)
+ required_reagents = list(/datum/reagent/consumable/berryjuice = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/ethanol/vermouth = 1)
////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri/////
/datum/chemical_reaction/sbiten
name = "Sbiten"
- id = "sbiten"
- results = list("sbiten" = 10)
- required_reagents = list("vodka" = 10, "capsaicin" = 1)
+ id = /datum/reagent/consumable/ethanol/sbiten
+ results = list(/datum/reagent/consumable/ethanol/sbiten = 10)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 10, /datum/reagent/consumable/capsaicin = 1)
/datum/chemical_reaction/red_mead
name = "Red Mead"
- id = "red_mead"
- results = list("red_mead" = 2)
- required_reagents = list("blood" = 1, "mead" = 1)
+ id = /datum/reagent/consumable/ethanol/red_mead
+ results = list(/datum/reagent/consumable/ethanol/red_mead = 2)
+ required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/ethanol/mead = 1)
/datum/chemical_reaction/mead
name = "Mead"
- id = "mead"
- results = list("mead" = 2)
- required_reagents = list("honey" = 2)
- required_catalysts = list("enzyme" = 5)
+ id = /datum/reagent/consumable/ethanol/mead
+ results = list(/datum/reagent/consumable/ethanol/mead = 2)
+ required_reagents = list(/datum/reagent/consumable/honey = 2)
+ required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
/datum/chemical_reaction/iced_beer
name = "Iced Beer"
- id = "iced_beer"
- results = list("iced_beer" = 6)
- required_reagents = list("beer" = 5, "ice" = 1)
+ id = /datum/reagent/consumable/ethanol/iced_beer
+ results = list(/datum/reagent/consumable/ethanol/iced_beer = 6)
+ required_reagents = list(/datum/reagent/consumable/ethanol/beer = 5, /datum/reagent/consumable/ice = 1)
/datum/chemical_reaction/grog
name = "Grog"
- id = "grog"
- results = list("grog" = 2)
- required_reagents = list("rum" = 1, "water" = 1)
+ id = /datum/reagent/consumable/ethanol/grog
+ results = list(/datum/reagent/consumable/ethanol/grog = 2)
+ required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/water = 1)
/datum/chemical_reaction/soy_latte
name = "Soy Latte"
- id = "soy_latte"
- results = list("soy_latte" = 2)
- required_reagents = list("coffee" = 1, "soymilk" = 1)
+ id = /datum/reagent/consumable/soy_latte
+ results = list(/datum/reagent/consumable/soy_latte = 2)
+ required_reagents = list(/datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/soymilk = 1)
/datum/chemical_reaction/cafe_latte
name = "Cafe Latte"
- id = "cafe_latte"
- results = list("cafe_latte" = 2)
- required_reagents = list("coffee" = 1, "milk" = 1)
+ id = /datum/reagent/consumable/cafe_latte
+ results = list(/datum/reagent/consumable/cafe_latte = 2)
+ required_reagents = list(/datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/milk = 1)
/datum/chemical_reaction/acidspit
name = "Acid Spit"
- id = "acidspit"
- results = list("acidspit" = 6)
- required_reagents = list("sacid" = 1, "wine" = 5)
+ id = /datum/reagent/consumable/ethanol/acid_spit
+ results = list(/datum/reagent/consumable/ethanol/acid_spit = 6)
+ required_reagents = list(/datum/reagent/toxin/acid = 1, /datum/reagent/consumable/ethanol/wine = 5)
/datum/chemical_reaction/amasec
name = "Amasec"
- id = "amasec"
- results = list("amasec" = 10)
- required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5)
+ id = /datum/reagent/consumable/ethanol/amasec
+ results = list(/datum/reagent/consumable/ethanol/amasec = 10)
+ required_reagents = list(/datum/reagent/iron = 1, /datum/reagent/consumable/ethanol/wine = 5, /datum/reagent/consumable/ethanol/vodka = 5)
/datum/chemical_reaction/changelingsting
name = "Changeling Sting"
- id = "changelingsting"
- results = list("changelingsting" = 5)
- required_reagents = list("screwdrivercocktail" = 1, "lemon_lime" = 2)
+ id = /datum/reagent/consumable/ethanol/changelingsting
+ results = list(/datum/reagent/consumable/ethanol/changelingsting = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/screwdrivercocktail = 1, /datum/reagent/consumable/lemon_lime = 2)
/datum/chemical_reaction/aloe
name = "Aloe"
- id = "aloe"
- results = list("aloe" = 2)
- required_reagents = list("irishcream" = 1, "watermelonjuice" = 1)
+ id = /datum/reagent/consumable/ethanol/aloe
+ results = list(/datum/reagent/consumable/ethanol/aloe = 2)
+ required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/watermelonjuice = 1)
/datum/chemical_reaction/andalusia
name = "Andalusia"
- id = "andalusia"
- results = list("andalusia" = 3)
- required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1)
+ id = /datum/reagent/consumable/ethanol/andalusia
+ results = list(/datum/reagent/consumable/ethanol/andalusia = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/lemonjuice = 1)
/datum/chemical_reaction/neurotoxin
name = "Neurotoxin"
- id = "neurotoxin"
- results = list("neurotoxin" = 2)
- required_reagents = list("gargleblaster" = 1, "morphine" = 1)
+ id = /datum/reagent/consumable/ethanol/neurotoxin
+ results = list(/datum/reagent/consumable/ethanol/neurotoxin = 2)
+ required_reagents = list(/datum/reagent/consumable/ethanol/gargle_blaster = 1, /datum/reagent/medicine/morphine = 1)
//FermiChem vars: Easy to make, but hard to make potent
OptimalTempMin = 100 // Lower area of bell curve for determining heat based rate reactions
OptimalTempMax = 950 // Upper end for above
@@ -404,8 +404,8 @@
var/datum/reagent/consumable/ethanol/neurotoxin/Nt = locate(/datum/reagent/consumable/ethanol/neurotoxin) in my_atom.reagents.reagent_list
var/cached_volume = Nt.volume
if(Nt.purity < 0.5)
- holder.remove_reagent(src.id, cached_volume)
- holder.add_reagent("neuroweak", cached_volume)
+ holder.remove_reagent(type, cached_volume)
+ holder.add_reagent(/datum/reagent/consumable/ethanol/neuroweak, cached_volume)
*/
/datum/chemical_reaction/neurotoxin/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//reduced size
@@ -414,415 +414,415 @@
/datum/chemical_reaction/snowwhite
name = "Snow White"
- id = "snowwhite"
- results = list("snowwhite" = 2)
- required_reagents = list("beer" = 1, "lemon_lime" = 1)
+ id = /datum/reagent/consumable/ethanol/snowwhite
+ results = list(/datum/reagent/consumable/ethanol/snowwhite = 2)
+ required_reagents = list(/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/lemon_lime = 1)
/datum/chemical_reaction/irishcarbomb
name = "Irish Car Bomb"
- id = "irishcarbomb"
- results = list("irishcarbomb" = 2)
- required_reagents = list("ale" = 1, "irishcream" = 1)
+ id = /datum/reagent/consumable/ethanol/irishcarbomb
+ results = list(/datum/reagent/consumable/ethanol/irishcarbomb = 2)
+ required_reagents = list(/datum/reagent/consumable/ethanol/ale = 1, /datum/reagent/consumable/ethanol/irish_cream = 1)
/datum/chemical_reaction/syndicatebomb
name = "Syndicate Bomb"
- id = "syndicatebomb"
- results = list("syndicatebomb" = 2)
- required_reagents = list("beer" = 1, "whiskeycola" = 1)
+ id = /datum/reagent/consumable/ethanol/syndicatebomb
+ results = list(/datum/reagent/consumable/ethanol/syndicatebomb = 2)
+ required_reagents = list(/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/ethanol/whiskey_cola = 1)
/datum/chemical_reaction/erikasurprise
name = "Erika Surprise"
- id = "erikasurprise"
- results = list("erikasurprise" = 5)
- required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1)
+ id = /datum/reagent/consumable/ethanol/erikasurprise
+ results = list(/datum/reagent/consumable/ethanol/erikasurprise = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/ale = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/banana = 1, /datum/reagent/consumable/ice = 1)
/datum/chemical_reaction/devilskiss
name = "Devils Kiss"
- id = "devilskiss"
- results = list("devilskiss" = 3)
- required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1)
+ id = /datum/reagent/consumable/ethanol/devilskiss
+ results = list(/datum/reagent/consumable/ethanol/devilskiss = 3)
+ required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/rum = 1)
/datum/chemical_reaction/hippiesdelight
name = "Hippies Delight"
- id = "hippiesdelight"
- results = list("hippiesdelight" = 2)
- required_reagents = list("mushroomhallucinogen" = 1, "gargleblaster" = 1)
+ id = /datum/reagent/consumable/ethanol/hippies_delight
+ results = list(/datum/reagent/consumable/ethanol/hippies_delight = 2)
+ required_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 1, /datum/reagent/consumable/ethanol/gargle_blaster = 1)
/datum/chemical_reaction/bananahonk
name = "Banana Honk"
- id = "bananahonk"
- results = list("bananahonk" = 2)
- required_reagents = list("laughter" = 1, "cream" = 1)
+ id = /datum/reagent/consumable/ethanol/bananahonk
+ results = list(/datum/reagent/consumable/ethanol/bananahonk = 2)
+ required_reagents = list(/datum/reagent/consumable/laughter = 1, /datum/reagent/consumable/cream = 1)
/datum/chemical_reaction/silencer
name = "Silencer"
- id = "silencer"
- results = list("silencer" = 3)
- required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1)
+ id = /datum/reagent/consumable/ethanol/silencer
+ results = list(/datum/reagent/consumable/ethanol/silencer = 3)
+ required_reagents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/sugar = 1)
/datum/chemical_reaction/driestmartini
name = "Driest Martini"
- id = "driestmartini"
- results = list("driestmartini" = 2)
- required_reagents = list("nothing" = 1, "gin" = 1)
+ id = /datum/reagent/consumable/ethanol/driestmartini
+ results = list(/datum/reagent/consumable/ethanol/driestmartini = 2)
+ required_reagents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/ethanol/gin = 1)
/datum/chemical_reaction/thirteenloko
name = "Thirteen Loko"
- id = "thirteenloko"
- results = list("thirteenloko" = 3)
- required_reagents = list("vodka" = 1, "coffee" = 1, "limejuice" = 1)
+ id = /datum/reagent/consumable/ethanol/thirteenloko
+ results = list(/datum/reagent/consumable/ethanol/thirteenloko = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/limejuice = 1)
/datum/chemical_reaction/chocolatepudding
name = "Chocolate Pudding"
- id = "chocolatepudding"
- results = list("chocolatepudding" = 20)
- required_reagents = list("chocolate_milk" = 10, "eggyolk" = 5)
+ id = /datum/reagent/consumable/chocolatepudding
+ results = list(/datum/reagent/consumable/chocolatepudding = 20)
+ required_reagents = list(/datum/reagent/consumable/milk/chocolate_milk = 10, /datum/reagent/consumable/eggyolk = 5)
/datum/chemical_reaction/vanillapudding
name = "Vanilla Pudding"
- id = "vanillapudding"
- results = list("vanillapudding" = 20)
- required_reagents = list("vanilla" = 5, "milk" = 5, "eggyolk" = 5)
+ id = /datum/reagent/consumable/vanillapudding
+ results = list(/datum/reagent/consumable/vanillapudding = 20)
+ required_reagents = list(/datum/reagent/consumable/vanilla = 5, /datum/reagent/consumable/milk = 5, /datum/reagent/consumable/eggyolk = 5)
/datum/chemical_reaction/drunkenblumpkin
name = "Drunken Blumpkin"
- id = "drunkenblumpkin"
- results = list("drunkenblumpkin" = 4)
- required_reagents = list("blumpkinjuice" = 1, "irishcream" = 2, "ice" = 1)
+ id = /datum/reagent/consumable/ethanol/drunkenblumpkin
+ results = list(/datum/reagent/consumable/ethanol/drunkenblumpkin = 4)
+ required_reagents = list(/datum/reagent/consumable/blumpkinjuice = 1, /datum/reagent/consumable/ethanol/irish_cream = 2, /datum/reagent/consumable/ice = 1)
/datum/chemical_reaction/pumpkin_latte
name = "Pumpkin space latte"
- id = "pumpkin_latte"
- results = list("pumpkin_latte" = 15)
- required_reagents = list("pumpkinjuice" = 5, "coffee" = 5, "cream" = 5)
+ id = /datum/reagent/consumable/pumpkin_latte
+ results = list(/datum/reagent/consumable/pumpkin_latte = 15)
+ required_reagents = list(/datum/reagent/consumable/pumpkinjuice = 5, /datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/cream = 5)
/datum/chemical_reaction/gibbfloats
name = "Gibb Floats"
- id = "gibbfloats"
- results = list("gibbfloats" = 15)
- required_reagents = list("dr_gibb" = 5, "ice" = 5, "cream" = 5)
+ id = /datum/reagent/consumable/gibbfloats
+ results = list(/datum/reagent/consumable/gibbfloats = 15)
+ required_reagents = list(/datum/reagent/consumable/dr_gibb = 5, /datum/reagent/consumable/ice = 5, /datum/reagent/consumable/cream = 5)
/datum/chemical_reaction/triple_citrus
name = "triple_citrus"
- id = "triple_citrus"
- results = list("triple_citrus" = 5)
- required_reagents = list("lemonjuice" = 1, "limejuice" = 1, "orangejuice" = 1)
+ id = /datum/reagent/consumable/triple_citrus
+ results = list(/datum/reagent/consumable/triple_citrus = 5)
+ required_reagents = list(/datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/orangejuice = 1)
/datum/chemical_reaction/grape_soda
name = "grape soda"
- id = "grapesoda"
- results = list("grapesoda" = 2)
- required_reagents = list("grapejuice" = 1, "sodawater" = 1)
+ id = /datum/reagent/consumable/grape_soda
+ results = list(/datum/reagent/consumable/grape_soda = 2)
+ required_reagents = list(/datum/reagent/consumable/grapejuice = 1, /datum/reagent/consumable/sodawater = 1)
/datum/chemical_reaction/grappa
name = "grappa"
- id = "grappa"
- results = list("grappa" = 10)
- required_reagents = list ("wine" = 10)
- required_catalysts = list ("enzyme" = 5)
+ id = /datum/reagent/consumable/ethanol/grappa
+ results = list(/datum/reagent/consumable/ethanol/grappa = 10)
+ required_reagents = list (/datum/reagent/consumable/ethanol/wine = 10)
+ required_catalysts = list (/datum/reagent/consumable/enzyme = 5)
/datum/chemical_reaction/whiskey_sour
name = "Whiskey Sour"
- id = "whiskey_sour"
- results = list("whiskey_sour" = 3)
- required_reagents = list("whiskey" = 1, "lemonjuice" = 1, "sugar" = 1)
+ id = /datum/reagent/consumable/ethanol/whiskey_sour
+ results = list(/datum/reagent/consumable/ethanol/whiskey_sour = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/sugar = 1)
mix_message = "The mixture darkens to a rich gold hue."
/datum/chemical_reaction/fetching_fizz
name = "Fetching Fizz"
- id = "fetching_fizz"
- results = list("fetching_fizz" = 3)
- required_reagents = list("nuka_cola" = 1, "iron" = 1) //Manufacturable from only the mining station
+ id = /datum/reagent/consumable/ethanol/fetching_fizz
+ results = list(/datum/reagent/consumable/ethanol/fetching_fizz = 3)
+ required_reagents = list(/datum/reagent/consumable/nuka_cola = 1, /datum/reagent/iron = 1) //Manufacturable from only the mining station
mix_message = "The mixture slightly vibrates before settling."
/datum/chemical_reaction/hearty_punch
name = "Hearty Punch"
- id = "hearty_punch"
- results = list("hearty_punch" = 1) //Very little, for balance reasons
- required_reagents = list("bravebull" = 5, "syndicatebomb" = 5, "absinthe" = 5)
+ id = /datum/reagent/consumable/ethanol/hearty_punch
+ results = list(/datum/reagent/consumable/ethanol/hearty_punch = 1) //Very little, for balance reasons
+ required_reagents = list(/datum/reagent/consumable/ethanol/brave_bull = 5, /datum/reagent/consumable/ethanol/syndicatebomb = 5, /datum/reagent/consumable/ethanol/absinthe = 5)
mix_message = "The mixture darkens to a healthy crimson."
required_temp = 315 //Piping hot!
/datum/chemical_reaction/bacchus_blessing
name = "Bacchus' Blessing"
- id = "bacchus_blessing"
- results = list("bacchus_blessing" = 4)
- required_reagents = list("hooch" = 1, "absinthe" = 1, "manlydorf" = 1, "syndicatebomb" = 1)
+ id = /datum/reagent/consumable/ethanol/bacchus_blessing
+ results = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 4)
+ required_reagents = list(/datum/reagent/consumable/ethanol/hooch = 1, /datum/reagent/consumable/ethanol/absinthe = 1, /datum/reagent/consumable/ethanol/manly_dorf = 1, /datum/reagent/consumable/ethanol/syndicatebomb = 1)
mix_message = "
The mixture turns to a sickening froth."
/datum/chemical_reaction/lemonade
name = "Lemonade"
- id = "lemonade"
- results = list("lemonade" = 5)
- required_reagents = list("lemonjuice" = 2, "water" = 2, "sugar" = 1, "ice" = 1)
+ id = /datum/reagent/consumable/lemonade
+ results = list(/datum/reagent/consumable/lemonade = 5)
+ required_reagents = list(/datum/reagent/consumable/lemonjuice = 2, /datum/reagent/water = 2, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/ice = 1)
mix_message = "You're suddenly reminded of home."
/datum/chemical_reaction/arnold_palmer
name = "Arnold Palmer"
- id = "arnold_palmer"
- results = list("arnold_palmer" = 2)
- required_reagents = list("tea" = 1, "lemonade" = 1)
+ id = /datum/reagent/consumable/tea/arnold_palmer
+ results = list(/datum/reagent/consumable/tea/arnold_palmer = 2)
+ required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/lemonade = 1)
mix_message = "The smells of fresh green grass and sand traps waft through the air as the mixture turns a friendly yellow-orange."
/datum/chemical_reaction/chocolate_milk
name = "chocolate milk"
- id = "chocolate_milk"
- results = list("chocolate_milk" = 2)
- required_reagents = list("milk" = 1, "cocoa" = 1)
+ id = /datum/reagent/consumable/milk/chocolate_milk
+ results = list(/datum/reagent/consumable/milk/chocolate_milk = 2)
+ required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/coco = 1)
mix_message = "The color changes as the mixture blends smoothly."
/datum/chemical_reaction/eggnog
name = "eggnog"
- id = "eggnog"
- results = list("eggnog" = 15)
- required_reagents = list("rum" = 5, "cream" = 5, "eggyolk" = 5)
+ id = /datum/reagent/consumable/ethanol/eggnog
+ results = list(/datum/reagent/consumable/ethanol/eggnog = 15)
+ required_reagents = list(/datum/reagent/consumable/ethanol/rum = 5, /datum/reagent/consumable/cream = 5, /datum/reagent/consumable/eggyolk = 5)
/datum/chemical_reaction/narsour
name = "Nar'sour"
- id = "narsour"
- results = list("narsour" = 1)
- required_reagents = list("blood" = 1, "lemonjuice" = 1, "demonsblood" = 1)
+ id = /datum/reagent/consumable/ethanol/narsour
+ results = list(/datum/reagent/consumable/ethanol/narsour = 1)
+ required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/demonsblood = 1)
mix_message = "The mixture develops a sinister glow."
mix_sound = 'sound/effects/singlebeat.ogg'
/datum/chemical_reaction/quadruplesec
name = "Quadruple Sec"
- id = "quadruple_sec"
- results = list("quadruple_sec" = 15)
- required_reagents = list("triple_sec" = 5, "triple_citrus" = 5, "creme_de_menthe" = 5)
+ id = /datum/reagent/consumable/ethanol/quadruple_sec
+ results = list(/datum/reagent/consumable/ethanol/quadruple_sec = 15)
+ required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 5, /datum/reagent/consumable/triple_citrus = 5, /datum/reagent/consumable/ethanol/creme_de_menthe = 5)
mix_message = "The snap of a taser emanates clearly from the mixture as it settles."
mix_sound = 'sound/weapons/taser.ogg'
/datum/chemical_reaction/grasshopper
name = "Grasshopper"
- id = "grasshopper"
- results = list("grasshopper" = 15)
- required_reagents = list("cream" = 5, "creme_de_menthe" = 5, "creme_de_cacao" = 5)
+ id = /datum/reagent/consumable/ethanol/grasshopper
+ results = list(/datum/reagent/consumable/ethanol/grasshopper = 15)
+ required_reagents = list(/datum/reagent/consumable/cream = 5, /datum/reagent/consumable/ethanol/creme_de_menthe = 5, /datum/reagent/consumable/ethanol/creme_de_cacao = 5)
mix_message = "A vibrant green bubbles forth as the mixture emulsifies."
/datum/chemical_reaction/stinger
name = "Stinger"
- id = "stinger"
- results = list("stinger" = 15)
- required_reagents = list("whiskey" = 10, "creme_de_menthe" = 5 )
+ id = /datum/reagent/consumable/ethanol/stinger
+ results = list(/datum/reagent/consumable/ethanol/stinger = 15)
+ required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 10, /datum/reagent/consumable/ethanol/creme_de_menthe = 5)
/datum/chemical_reaction/quintuplesec
name = "Quintuple Sec"
- id = "quintuple_sec"
- results = list("quintuple_sec" = 15)
- required_reagents = list("quadruple_sec" = 5, "clownstears" = 5, "syndicatebomb" = 5)
+ id = /datum/reagent/consumable/ethanol/quintuple_sec
+ results = list(/datum/reagent/consumable/ethanol/quintuple_sec = 15)
+ required_reagents = list(/datum/reagent/consumable/ethanol/quadruple_sec = 5, /datum/reagent/consumable/clownstears = 5, /datum/reagent/consumable/ethanol/syndicatebomb = 5)
mix_message = "Judgement is upon you."
mix_message = 'sound/items/airhorn2.ogg'
/datum/chemical_reaction/bastion_bourbon
name = "Bastion Bourbon"
- id = "bastion_bourbon"
- results = list("bastion_bourbon" = 2)
- required_reagents = list("tea" = 1, "creme_de_menthe" = 1, "triple_citrus" = 1, "berryjuice" = 1) //herbal and minty, with a hint of citrus and berry
+ id = /datum/reagent/consumable/ethanol/bastion_bourbon
+ results = list(/datum/reagent/consumable/ethanol/bastion_bourbon = 2)
+ required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/triple_citrus = 1, /datum/reagent/consumable/berryjuice = 1) //herbal and minty, with a hint of citrus and berry
mix_message = "You catch an aroma of hot tea and fruits as the mix blends into a blue-green color."
/datum/chemical_reaction/squirt_cider
name = "Squirt Cider"
- id = "squirt_cider"
- results = list("squirt_cider" = 1)
- required_reagents = list("water" = 1, "tomatojuice" = 1, "nutriment" = 1)
+ id = /datum/reagent/consumable/ethanol/squirt_cider
+ results = list(/datum/reagent/consumable/ethanol/squirt_cider = 1)
+ required_reagents = list(/datum/reagent/water = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/consumable/nutriment = 1)
mix_message = "The mix swirls and turns a bright red that reminds you of an apple's skin."
/datum/chemical_reaction/fringe_weaver
name = "Fringe Weaver"
- id = "fringe_weaver"
- results = list("fringe_weaver" = 10)
- required_reagents = list("ethanol" = 9, "sugar" = 1) //9 karmotrine, 1 adelhyde
+ id = /datum/reagent/consumable/ethanol/fringe_weaver
+ results = list(/datum/reagent/consumable/ethanol/fringe_weaver = 10)
+ required_reagents = list(/datum/reagent/consumable/ethanol = 9, /datum/reagent/consumable/sugar = 1) //9 karmotrine, 1 adelhyde
mix_message = "The mix turns a pleasant cream color and foams up."
/datum/chemical_reaction/sugar_rush
name = "Sugar Rush"
- id = "sugar_rush"
- results = list("sugar_rush" = 4)
- required_reagents = list("sugar" = 2, "lemonjuice" = 1, "wine" = 1) //2 adelhyde (sweet), 1 powdered delta (sour), 1 karmotrine (alcohol)
+ id = /datum/reagent/consumable/ethanol/sugar_rush
+ results = list(/datum/reagent/consumable/ethanol/sugar_rush = 4)
+ required_reagents = list(/datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/wine = 1) //2 adelhyde (sweet), 1 powdered delta (sour), 1 karmotrine (alcohol)
mix_message = "The mixture bubbles and brightens into a girly pink."
/datum/chemical_reaction/crevice_spike
name = "Crevice Spike"
- id = "crevice_spike"
- results = list("crevice_spike" = 6)
- required_reagents = list("limejuice" = 2, "capsaicin" = 4) //2 powdered delta (sour), 4 flanergide (spicy)
+ id = /datum/reagent/consumable/ethanol/crevice_spike
+ results = list(/datum/reagent/consumable/ethanol/crevice_spike = 6)
+ required_reagents = list(/datum/reagent/consumable/limejuice = 2, /datum/reagent/consumable/capsaicin = 4) //2 powdered delta (sour), 4 flanergide (spicy)
mix_message = "The mixture stings your eyes as it settles."
/datum/chemical_reaction/sake
name = "sake"
- id = "sake"
- results = list("sake" = 10)
- required_reagents = list("rice" = 10)
- required_catalysts = list("enzyme" = 5)
+ id = /datum/reagent/consumable/ethanol/sake
+ results = list(/datum/reagent/consumable/ethanol/sake = 10)
+ required_reagents = list(/datum/reagent/consumable/rice = 10)
+ required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
mix_message = "The rice grains ferment into a clear, sweet-smelling liquid."
/datum/chemical_reaction/peppermint_patty
name = "Peppermint Patty"
- id = "peppermint_patty"
- results = list("peppermint_patty" = 10)
- required_reagents = list("hot_coco" = 6, "creme_de_cacao" = 1, "creme_de_menthe" = 1, "vodka" = 1, "menthol" = 1)
+ id = /datum/reagent/consumable/ethanol/peppermint_patty
+ results = list(/datum/reagent/consumable/ethanol/peppermint_patty = 10)
+ required_reagents = list(/datum/reagent/consumable/hot_coco = 6, /datum/reagent/consumable/ethanol/creme_de_cacao = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/menthol = 1)
mix_message = "The coco turns mint green just as the strong scent hits your nose."
/datum/chemical_reaction/alexander
name = "Alexander"
- id = "alexander"
- results = list("alexander" = 3)
- required_reagents = list("cognac" = 1, "creme_de_cacao" = 1, "cream" = 1)
+ id = /datum/reagent/consumable/ethanol/alexander
+ results = list(/datum/reagent/consumable/ethanol/alexander = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/cognac = 1, /datum/reagent/consumable/ethanol/creme_de_cacao = 1, /datum/reagent/consumable/cream = 1)
/datum/chemical_reaction/sidecar
name = "Sidecar"
- id = "sidecar"
- results = list("sidecar" = 4)
- required_reagents = list("cognac" = 2, "triple_sec" = 1, "lemonjuice" = 1)
+ id = /datum/reagent/consumable/ethanol/sidecar
+ results = list(/datum/reagent/consumable/ethanol/sidecar = 4)
+ required_reagents = list(/datum/reagent/consumable/ethanol/cognac = 2, /datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/lemonjuice = 1)
/datum/chemical_reaction/between_the_sheets
name = "Between the Sheets"
- id = "between_the_sheets"
- results = list("between_the_sheets" = 5)
- required_reagents = list("rum" = 1, "sidecar" = 4)
+ id = /datum/reagent/consumable/ethanol/between_the_sheets
+ results = list(/datum/reagent/consumable/ethanol/between_the_sheets = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/ethanol/sidecar = 4)
/datum/chemical_reaction/kamikaze
name = "Kamikaze"
- id = "kamikaze"
- results = list("kamikaze" = 3)
- required_reagents = list("vodka" = 1, "triple_sec" = 1, "limejuice" = 1)
+ id = /datum/reagent/consumable/ethanol/kamikaze
+ results = list(/datum/reagent/consumable/ethanol/kamikaze = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/limejuice = 1)
/datum/chemical_reaction/mojito
name = "Mojito"
- id = "mojito"
- results = list("mojito" = 5)
- required_reagents = list("rum" = 1, "sugar" = 1, "limejuice" = 1, "sodawater" = 1, "menthol" = 1)
+ id = /datum/reagent/consumable/ethanol/mojito
+ results = list(/datum/reagent/consumable/ethanol/mojito = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/menthol = 1)
/datum/chemical_reaction/fernet_cola
name = "Fernet Cola"
- id = "fernet_cola"
- results = list("fernet_cola" = 2)
- required_reagents = list("fernet" = 1, "cola" = 1)
+ id = /datum/reagent/consumable/ethanol/fernet_cola
+ results = list(/datum/reagent/consumable/ethanol/fernet_cola = 2)
+ required_reagents = list(/datum/reagent/consumable/ethanol/fernet = 1, /datum/reagent/consumable/space_cola = 1)
/datum/chemical_reaction/fanciulli
name = "Fanciulli"
- id = "fanciulli"
- results = list("fanciulli" = 2)
- required_reagents = list("manhattan" = 1, "fernet" = 1)
+ id = /datum/reagent/consumable/ethanol/fanciulli
+ results = list(/datum/reagent/consumable/ethanol/fanciulli = 2)
+ required_reagents = list(/datum/reagent/consumable/ethanol/manhattan = 1, /datum/reagent/consumable/ethanol/fernet = 1)
/datum/chemical_reaction/branca_menta
name = "Branca Menta"
- id = "branca_menta"
- results = list("branca_menta" = 3)
- required_reagents = list("fernet" = 1, "creme_de_menthe" = 1, "ice" = 1)
+ id = /datum/reagent/consumable/ethanol/branca_menta
+ results = list(/datum/reagent/consumable/ethanol/branca_menta = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/fernet = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/ice = 1)
/datum/chemical_reaction/pwrgame
name = "Power Gamer"
- id = "pwr_game"
- results = list("pwr_game" = 5)
- required_reagents = list("sodawater" = 1, "blackcrayonpowder" = 1, "sodiumchloride" = 1)
+ id = /datum/reagent/consumable/pwr_game
+ results = list(/datum/reagent/consumable/pwr_game = 5)
+ required_reagents = list(/datum/reagent/consumable/sodawater = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1, /datum/reagent/consumable/sodiumchloride = 1)
/datum/chemical_reaction/pinkmilk
name = "Strawberry Milk"
- id = "pinkmilk"
- results = list("pinkmilk" = 5)
- required_reagents = list("aphro+" = 1, "milk" = 1)
+ id = /datum/reagent/consumable/pinkmilk
+ results = list(/datum/reagent/consumable/pinkmilk = 5)
+ required_reagents = list(/datum/reagent/drug/aphrodisiacplus = 1, /datum/reagent/consumable/milk = 1)
/datum/chemical_reaction/pinktea
name = "Strawberry Tea"
- id = "pinktea"
- results = list("pinktea" = 5)
- required_reagents = list("aphro" = 1, "arnold_palmer" = 1, "sugar" = 1)
+ id = /datum/reagent/consumable/pinktea
+ results = list(/datum/reagent/consumable/pinktea = 5)
+ required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/consumable/tea/arnold_palmer = 1, /datum/reagent/consumable/sugar = 1)
/datum/chemical_reaction/blank_paper
name = "Blank Paper"
- id = "blank_paper"
- results = list("blank_paper" = 3)
- required_reagents = list("silencer" = 1, "nothing" = 1, "nuka_cola" = 1)
+ id = /datum/reagent/consumable/ethanol/blank_paper
+ results = list(/datum/reagent/consumable/ethanol/blank_paper = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/silencer = 1, /datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/nuka_cola = 1)
/datum/chemical_reaction/wizz_fizz
name = "Wizz Fizz"
- id = "wizz_fizz"
- results = list("wizz_fizz" = 3)
- required_reagents = list("triple_sec" = 1, "sodawater" = 1, "champagne" = 1)
+ id = /datum/reagent/consumable/ethanol/wizz_fizz
+ results = list(/datum/reagent/consumable/ethanol/wizz_fizz = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/ethanol/champagne = 1)
mix_message = "The beverage starts to froth with an almost mystical zeal!"
mix_sound = 'sound/effects/bubbles2.ogg'
/datum/chemical_reaction/bug_spray
name = "Bug Spray"
- id = "bug_spray"
- results = list("bug_spray" = 5)
- required_reagents = list("triple_sec" = 2, "lemon_lime" = 1, "rum" = 2, "vodka" = 1)
+ id = /datum/reagent/consumable/ethanol/bug_spray
+ results = list(/datum/reagent/consumable/ethanol/bug_spray = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 2, /datum/reagent/consumable/lemon_lime = 1, /datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/ethanol/vodka = 1)
mix_message = "The faint aroma of summer camping trips wafts through the air; but what's that buzzing noise?"
mix_sound = 'sound/creatures/bee.ogg'
/datum/chemical_reaction/jack_rose
name = "Jack Rose"
- id = "jack_rose"
- results = list("jack_rose" = 4)
- required_reagents = list("grenadine" = 1, "applejack" = 2, "limejuice" = 1)
+ id = /datum/reagent/consumable/ethanol/jack_rose
+ results = list(/datum/reagent/consumable/ethanol/jack_rose = 4)
+ required_reagents = list(/datum/reagent/consumable/grenadine = 1, /datum/reagent/consumable/ethanol/applejack = 2, /datum/reagent/consumable/limejuice = 1)
mix_message = "As the grenadine incorporates, the beverage takes on a mellow, red-orange glow."
/datum/chemical_reaction/turbo
name = "Turbo"
- id = "turbo"
- results = list("turbo" = 5)
- required_reagents = list("moonshine" = 2, "nitrous_oxide" = 1, "sugar_rush" = 1, "pwr_game" = 1)
+ id = /datum/reagent/consumable/ethanol/turbo
+ results = list(/datum/reagent/consumable/ethanol/turbo = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/moonshine = 2, /datum/reagent/nitrous_oxide = 1, /datum/reagent/consumable/ethanol/sugar_rush = 1, /datum/reagent/consumable/pwr_game = 1)
/datum/chemical_reaction/old_timer
name = "Old Timer"
- id = "old_timer"
- results = list("old_timer" = 6)
- required_reagents = list("whiskeysoda" = 3, "parsnipjuice" = 2, "alexander" = 1)
+ id = /datum/reagent/consumable/ethanol/old_timer
+ results = list(/datum/reagent/consumable/ethanol/old_timer = 6)
+ required_reagents = list(/datum/reagent/consumable/ethanol/whiskeysoda = 3, /datum/reagent/consumable/parsnipjuice = 2, /datum/reagent/consumable/ethanol/alexander = 1)
/datum/chemical_reaction/rubberneck
name = "Rubberneck"
- id = "rubberneck"
- results = list("rubberneck" = 10)
- required_reagents = list("ethanol" = 4, "grey_bull" = 5, "astrotame" = 1)
+ id = /datum/reagent/consumable/ethanol/rubberneck
+ results = list(/datum/reagent/consumable/ethanol/rubberneck = 10)
+ required_reagents = list(/datum/reagent/consumable/ethanol = 4, /datum/reagent/consumable/grey_bull = 5, /datum/reagent/consumable/astrotame = 1)
/datum/chemical_reaction/duplex
name = "Duplex"
- id = "duplex"
- results = list("duplex" = 4)
- required_reagents = list("hcider" = 2, "applejuice" = 1, "berryjuice" = 1)
+ id = /datum/reagent/consumable/ethanol/duplex
+ results = list(/datum/reagent/consumable/ethanol/duplex = 4)
+ required_reagents = list(/datum/reagent/consumable/ethanol/hcider = 2, /datum/reagent/consumable/applejuice = 1, /datum/reagent/consumable/berryjuice = 1)
/datum/chemical_reaction/trappist
name = "Trappist"
- id = "trappist"
- results = list("trappist" = 5)
- required_reagents = list("ale" = 2, "holywater" = 2, "sugar" = 1)
+ id = /datum/reagent/consumable/ethanol/trappist
+ results = list(/datum/reagent/consumable/ethanol/trappist = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol/ale = 2, /datum/reagent/water/holywater = 2, /datum/reagent/consumable/sugar = 1)
/datum/chemical_reaction/cream_soda
name = "Cream Soda"
- id = "cream_soda"
- results = list("cream_soda" = 4)
- required_reagents = list("sugar" = 2, "sodawater" = 2, "vanilla" = 1)
+ id = /datum/reagent/consumable/cream_soda
+ results = list(/datum/reagent/consumable/cream_soda = 4)
+ required_reagents = list(/datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/sodawater = 2, /datum/reagent/consumable/vanilla = 1)
/datum/chemical_reaction/blazaam
name = "Blazaam"
- id = "blazaam"
- results = list("blazaam" = 3)
- required_reagents = list("gin" = 2, "peachjuice" = 1, "bluespace" = 1)
+ id = /datum/reagent/consumable/ethanol/blazaam
+ results = list(/datum/reagent/consumable/ethanol/blazaam = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/peachjuice = 1, /datum/reagent/bluespace = 1)
/datum/chemical_reaction/planet_cracker
name = "Planet Cracker"
- id = "planet_cracker"
- results = list("planet_cracker" = 4)
- required_reagents = list("champagne" = 2, "lizardwine" = 2, "eggyolk" = 1, "gold" = 1)
+ id = /datum/reagent/consumable/ethanol/planet_cracker
+ results = list(/datum/reagent/consumable/ethanol/planet_cracker = 4)
+ required_reagents = list(/datum/reagent/consumable/ethanol/champagne = 2, /datum/reagent/consumable/ethanol/lizardwine = 2, /datum/reagent/consumable/eggyolk = 1, /datum/reagent/gold = 1)
mix_message = "The liquid's color starts shifting as the nanogold is alternately corroded and redeposited."
/datum/chemical_reaction/red_queen
name = "Red Queen"
- id = "red_queen"
- results = list("red_queen" = 10)
- required_reagents = list("tea" = 6, "mercury" = 2, "blackpepper" = 1, "growthserum" = 1)
+ id = /datum/reagent/consumable/red_queen
+ results = list(/datum/reagent/consumable/red_queen = 10)
+ required_reagents = list(/datum/reagent/consumable/tea = 6, /datum/reagent/mercury = 2, /datum/reagent/consumable/blackpepper = 1, /datum/reagent/growthserum = 1)
/datum/chemical_reaction/catnip_tea
name = "Catnip Tea"
- id = "catnip_tea"
- results = list("catnip_tea" = 3)
- required_reagents = list("tea" = 5, "catnip" = 2)
+ id = /datum/reagent/consumable/catnip_tea
+ results = list(/datum/reagent/consumable/catnip_tea = 3)
+ required_reagents = list(/datum/reagent/consumable/tea = 5, /datum/reagent/pax/catnip = 2)
/datum/chemical_reaction/commander_and_chief
name = "Commander and Chief"
- id = "commander_and_chief"
- results = list("commander_and_chief" = 50)
- required_reagents = list("alliescocktail" = 50, "champagne" = 20, "doctorsdelight" = 10, "quintuple_sec" = 10, "screwdrivercocktail" = 10)
+ id = /datum/reagent/consumable/ethanol/commander_and_chief
+ results = list(/datum/reagent/consumable/ethanol/commander_and_chief = 50)
+ required_reagents = list(/datum/reagent/consumable/ethanol/alliescocktail = 50, /datum/reagent/consumable/ethanol/champagne = 20, /datum/reagent/consumable/doctor_delight = 10, /datum/reagent/consumable/ethanol/quintuple_sec = 10, /datum/reagent/consumable/ethanol/screwdrivercocktail = 10)
mix_message = "When your powers combine, I am Captain Pl-..."
diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm
index 07732a415d..130640ee8a 100644
--- a/code/modules/food_and_drinks/recipes/food_mixtures.dm
+++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm
@@ -11,8 +11,8 @@
/datum/chemical_reaction/tofu
name = "Tofu"
id = "tofu"
- required_reagents = list("soymilk" = 10)
- required_catalysts = list("enzyme" = 5)
+ required_reagents = list(/datum/reagent/consumable/soymilk = 10)
+ required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
mob_react = FALSE
/datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, created_volume)
@@ -24,7 +24,7 @@
/datum/chemical_reaction/chocolate_bar
name = "Chocolate Bar"
id = "chocolate_bar"
- required_reagents = list("soymilk" = 2, "cocoa" = 2, "sugar" = 2)
+ required_reagents = list(/datum/reagent/consumable/soymilk = 2, /datum/reagent/consumable/coco = 2, /datum/reagent/consumable/sugar = 2)
/datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
@@ -35,8 +35,8 @@
/datum/chemical_reaction/chocolate_bar2
name = "Chocolate Bar"
- id = "chocolate_bar"
- required_reagents = list("chocolate_milk" = 4, "sugar" = 2)
+ id = "chocolate_bar2"
+ required_reagents = list(/datum/reagent/consumable/milk/chocolate_milk = 4, /datum/reagent/consumable/sugar = 2)
mob_react = FALSE
/datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume)
@@ -47,48 +47,48 @@
/datum/chemical_reaction/hot_coco
name = "Hot Coco"
- id = "hot_coco"
- results = list("hot_coco" = 5)
- required_reagents = list("water" = 5, "cocoa" = 1)
+ id = /datum/reagent/consumable/hot_coco
+ results = list(/datum/reagent/consumable/hot_coco = 5)
+ required_reagents = list(/datum/reagent/water = 5, /datum/reagent/consumable/coco = 1)
/datum/chemical_reaction/coffee
name = "Coffee"
- id = "coffee"
- results = list("coffee" = 5)
- required_reagents = list("coffeepowder" = 1, "water" = 5)
+ id = /datum/reagent/consumable/coffee
+ results = list(/datum/reagent/consumable/coffee = 5)
+ required_reagents = list(/datum/reagent/toxin/coffeepowder = 1, /datum/reagent/water = 5)
/datum/chemical_reaction/tea
name = "Tea"
- id = "tea"
- results = list("tea" = 5)
- required_reagents = list("teapowder" = 1, "water" = 5)
+ id = /datum/reagent/consumable/tea
+ results = list(/datum/reagent/consumable/tea = 5)
+ required_reagents = list(/datum/reagent/toxin/teapowder = 1, /datum/reagent/water = 5)
/datum/chemical_reaction/soysauce
name = "Soy Sauce"
- id = "soysauce"
- results = list("soysauce" = 5)
- required_reagents = list("soymilk" = 4, "sacid" = 1)
+ id = /datum/reagent/consumable/soysauce
+ results = list(/datum/reagent/consumable/soysauce = 5)
+ required_reagents = list(/datum/reagent/consumable/soymilk = 4, /datum/reagent/toxin/acid = 1)
/datum/chemical_reaction/corn_syrup
name = "corn_syrup"
- id = "corn_syrup"
- results = list("corn_syrup" = 5)
- required_reagents = list("corn_starch" = 1, "sacid" = 1)
+ id = /datum/reagent/consumable/corn_syrup
+ results = list(/datum/reagent/consumable/corn_syrup = 5)
+ required_reagents = list(/datum/reagent/consumable/corn_starch = 1, /datum/reagent/toxin/acid = 1)
required_temp = 374
/datum/chemical_reaction/caramel
name = "Caramel"
- id = "caramel"
- results = list("caramel" = 1)
- required_reagents = list("sugar" = 1)
+ id = /datum/reagent/consumable/caramel
+ results = list(/datum/reagent/consumable/caramel = 1)
+ required_reagents = list(/datum/reagent/consumable/sugar = 1)
required_temp = 413
mob_react = FALSE
/datum/chemical_reaction/cheesewheel
name = "Cheesewheel"
id = "cheesewheel"
- required_reagents = list("milk" = 40)
- required_catalysts = list("enzyme" = 5)
+ required_reagents = list(/datum/reagent/consumable/milk = 40)
+ required_catalysts = list(/datum/reagent/consumable/enzyme = 5)
/datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
@@ -98,7 +98,7 @@
/datum/chemical_reaction/synthmeat
name = "synthmeat"
id = "synthmeat"
- required_reagents = list("blood" = 5, "cryoxadone" = 1)
+ required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/cryoxadone = 1)
mob_react = FALSE
/datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, created_volume)
@@ -108,20 +108,20 @@
/datum/chemical_reaction/hot_ramen
name = "Hot Ramen"
- id = "hot_ramen"
- results = list("hot_ramen" = 3)
- required_reagents = list("water" = 1, "dry_ramen" = 3)
+ id = /datum/reagent/consumable/hot_ramen
+ results = list(/datum/reagent/consumable/hot_ramen = 3)
+ required_reagents = list(/datum/reagent/water = 1, /datum/reagent/consumable/dry_ramen = 3)
/datum/chemical_reaction/hell_ramen
name = "Hell Ramen"
- id = "hell_ramen"
- results = list("hell_ramen" = 6)
- required_reagents = list("capsaicin" = 1, "hot_ramen" = 6)
+ id = /datum/reagent/consumable/hell_ramen
+ results = list(/datum/reagent/consumable/hell_ramen = 6)
+ required_reagents = list(/datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/hot_ramen = 6)
/datum/chemical_reaction/imitationcarpmeat
name = "Imitation Carpmeat"
id = "imitationcarpmeat"
- required_reagents = list("carpotoxin" = 5)
+ required_reagents = list(/datum/reagent/toxin/carpotoxin = 5)
required_container = /obj/item/reagent_containers/food/snacks/tofu
mix_message = "The mixture becomes similar to carp meat."
@@ -134,7 +134,7 @@
/datum/chemical_reaction/dough
name = "Dough"
id = "dough"
- required_reagents = list("water" = 10, "flour" = 15)
+ required_reagents = list(/datum/reagent/water = 10, /datum/reagent/consumable/flour = 15)
mix_message = "The ingredients form a dough."
/datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume)
@@ -145,7 +145,7 @@
/datum/chemical_reaction/cakebatter
name = "Cake Batter"
id = "cakebatter"
- required_reagents = list("eggyolk" = 15, "flour" = 15, "sugar" = 5)
+ required_reagents = list(/datum/reagent/consumable/eggyolk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5)
mix_message = "The ingredients form a cake batter."
/datum/chemical_reaction/cakebatter/on_reaction(datum/reagents/holder, created_volume)
@@ -155,12 +155,12 @@
/datum/chemical_reaction/cakebatter/vegan
id = "vegancakebatter"
- required_reagents = list("soymilk" = 15, "flour" = 15, "sugar" = 5)
+ required_reagents = list(/datum/reagent/consumable/soymilk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5)
/datum/chemical_reaction/ricebowl
name = "Rice Bowl"
id = "ricebowl"
- required_reagents = list("rice" = 10, "water" = 10)
+ required_reagents = list(/datum/reagent/consumable/rice = 10, /datum/reagent/water = 10)
required_container = /obj/item/reagent_containers/glass/bowl
mix_message = "The rice absorbs the water."
@@ -172,6 +172,6 @@
/datum/chemical_reaction/bbqsauce
name = "BBQ Sauce"
- id = "bbqsauce"
- results = list("bbqsauce" = 5)
- required_reagents = list("ash" = 1, "tomatojuice" = 1, "salglu_solution" = 3, "blackpepper" = 1)
+ id = /datum/reagent/consumable/bbqsauce
+ results = list(/datum/reagent/consumable/bbqsauce = 5)
+ required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/medicine/salglu_solution = 3, /datum/reagent/consumable/blackpepper = 1)
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
index 7977a715d8..f0fe936d05 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
@@ -108,7 +108,7 @@ datum/crafting_recipe/food/donut/meat
/datum/crafting_recipe/food/donut/bungo
name = "Bungo Donut"
reqs = list(
- /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1,
+ /datum/reagent/consumable/bungojuice = 3,
/obj/item/reagent_containers/food/snacks/donut/plain = 1
)
result = /obj/item/reagent_containers/food/snacks/donut/bungo
@@ -175,7 +175,7 @@ datum/crafting_recipe/food/donut/meat
/datum/crafting_recipe/food/donut/jelly/bungo
name = "Bungo Jelly Donut"
reqs = list(
- /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1,
+ /datum/reagent/consumable/bungojuice = 3,
/obj/item/reagent_containers/food/snacks/donut/jelly/plain = 1
)
result = /obj/item/reagent_containers/food/snacks/donut/jelly/bungo
@@ -242,7 +242,7 @@ datum/crafting_recipe/food/donut/meat
/datum/crafting_recipe/food/donut/slimejelly/bungo
name = "Bungo Slime Donut"
reqs = list(
- /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1,
+ /datum/reagent/consumable/bungojuice = 3,
/obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/plain = 1
)
result = /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/bungo
diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm
index 3cb05a8f7e..1898fe4b01 100644
--- a/code/modules/holiday/easter.dm
+++ b/code/modules/holiday/easter.dm
@@ -163,7 +163,7 @@
icon_state = "briochecake"
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/brioche
slices_num = 6
- bonus_reagents = list("nutriment" = 10, "vitamin" = 2)
+ bonus_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2)
/obj/item/reagent_containers/food/snacks/cakeslice/brioche
name = "brioche cake slice"
@@ -184,10 +184,10 @@
name = "scotch egg"
desc = "A boiled egg wrapped in a delicious, seasoned meatball."
icon_state = "scotchegg"
- bonus_reagents = list("nutriment" = 2, "vitamin" = 2)
+ bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2)
bitesize = 3
filling_color = "#FFFFF0"
- list_reagents = list("nutriment" = 6)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 6)
/datum/crafting_recipe/food/scotchegg
name = "Scotch egg"
@@ -204,8 +204,8 @@
name = "Mammi"
desc = "A bowl of mushy bread and milk. It reminds you, not too fondly, of a bowel movement."
icon_state = "mammi"
- bonus_reagents = list("nutriment" = 3, "vitamin" = 1)
- list_reagents = list("nutriment" = 8, "vitamin" = 1)
+ bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1)
/datum/crafting_recipe/food/mammi
name = "Mammi"
@@ -221,8 +221,8 @@
name = "chocolate bunny"
desc = "Contains less than 10% real rabbit!"
icon_state = "chocolatebunny"
- bonus_reagents = list("nutriment" = 1, "vitamin" = 1)
- list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2)
+ bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2)
filling_color = "#A0522D"
/datum/crafting_recipe/food/chocolatebunny
diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm
index d71e7c0f6a..bd4c26e0f2 100644
--- a/code/modules/holiday/halloween/jacqueen.dm
+++ b/code/modules/holiday/halloween/jacqueen.dm
@@ -95,7 +95,7 @@
last_poof = world.realtime
var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case.
var/datum/effect_system/smoke_spread/chem/s = new()
- R.add_reagent("secretcatchem", 10)
+ R.add_reagent(/datum/reagent/fermi/secretcatchem, 10)
s.set_up(R, 0, loc)
s.start()
visible_message("
[src] disappears in a puff of smoke!")
@@ -181,7 +181,7 @@
visible_message("
[src] raises an eyebrown,
\"It's 4 candies for that [gender]! Thems the rules!\"")
return
visible_message("
[src] waves their arms around,
\"Off comes your head, a pumpkin taking it's stead!\"")
- C.reagents.add_reagent("pumpkinmutationtoxin", 5)
+ C.reagents.add_reagent(/datum/reagent/mutationtoxin/pumpkinhead, 5)
sleep(20)
poof()
return
@@ -340,7 +340,7 @@
C.equip_to_slot(jaqc_latern, SLOT_HEAD, 1, 1)
if(4)
visible_message("
[src] waves their arms around,
\"In your body there's something amiss, you'll find it's a chem made by my sis!\"")
- C.reagents.add_reagent("eigenstate", 30)
+ C.reagents.add_reagent(/datum/reagent/fermi/eigenstate, 30)
if(5)
visible_message("
[src] waves their arms around,
\"A new familiar for me, and you'll see it's thee!\"")
C.reagents.add_reagent("secretcatchem", 30)
@@ -411,7 +411,6 @@
/datum/reagent/mutationtoxin/pumpkinhead
name = "Pumpkin head mutation toxin"
- id = "pumpkinmutationtoxin"
race = /datum/species/dullahan/pumpkin
mutationtext = "
The pain subsides. You feel your head roll off your shoulders... and you smell pumpkin."
//I couldn't get the replace head sprite with a pumpkin to work so, it is what it is.
diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm
index 3c4ed776b7..a058601c39 100644
--- a/code/modules/hydroponics/beekeeping/beebox.dm
+++ b/code/modules/hydroponics/beekeeping/beebox.dm
@@ -65,7 +65,7 @@
var/datum/reagent/R = null
if(random_reagent)
R = pick(subtypesof(/datum/reagent))
- R = GLOB.chemical_reagents_list[initial(R.id)]
+ R = GLOB.chemical_reagents_list[R]
queen_bee = new(src)
queen_bee.beehome = src
@@ -95,7 +95,7 @@
bee_resources = max(bee_resources-BEE_RESOURCE_HONEYCOMB_COST, 0)
var/obj/item/reagent_containers/honeycomb/HC = new(src)
if(queen_bee.beegent)
- HC.set_reagent(queen_bee.beegent.id)
+ HC.set_reagent(queen_bee.beegent.type)
honeycombs += HC
if(bees.len < get_max_bees())
diff --git a/code/modules/hydroponics/beekeeping/honeycomb.dm b/code/modules/hydroponics/beekeeping/honeycomb.dm
index e7faff0209..5bb2936c1e 100644
--- a/code/modules/hydroponics/beekeeping/honeycomb.dm
+++ b/code/modules/hydroponics/beekeeping/honeycomb.dm
@@ -9,7 +9,7 @@
disease_amount = 0
volume = 10
amount_per_transfer_from_this = 0
- list_reagents = list("honey" = 5)
+ list_reagents = list(/datum/reagent/consumable/honey = 5)
grind_results = list()
var/honey_color = ""
@@ -31,10 +31,10 @@
/obj/item/reagent_containers/honeycomb/proc/set_reagent(reagent)
var/datum/reagent/R = GLOB.chemical_reagents_list[reagent]
- if(istype(R))
+ if(R)
name = "honeycomb ([R.name])"
honey_color = R.color
- reagents.add_reagent(R.id,5)
+ reagents.add_reagent(reagent,5)
else
honey_color = ""
update_icon()
\ No newline at end of file
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index fb40e4eebd..ac750a0492 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -210,9 +210,9 @@
var/S = 0
for(var/obj/item/reagent_containers/food/snacks/grown/I in contents)
S += 5
- if(I.reagents.get_reagent_amount("nutriment") < 0.1)
+ if(I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) < 0.1)
points += 1*productivity
- else points += I.reagents.get_reagent_amount("nutriment")*10*productivity
+ else points += I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)*10*productivity
qdel(I)
if(S)
processing = TRUE
diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm
index e9001322d3..ab6625b46d 100644
--- a/code/modules/hydroponics/fermenting_barrel.dm
+++ b/code/modules/hydroponics/fermenting_barrel.dm
@@ -33,7 +33,7 @@
data["tastes"] = list(fruit.wine_flavor = 1)
else
data["tastes"] = list(fruit.tastes[1] = 1)
- reagents.add_reagent("fruit_wine", amount, data)
+ reagents.add_reagent(/datum/reagent/consumable/ethanol/fruit_wine, amount, data)
qdel(fruit)
playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE)
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 660f1e17e4..91ccce7cfd 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -144,20 +144,20 @@
return TRUE
/obj/item/reagent_containers/food/snacks/grown/on_grind()
- var/nutriment = reagents.get_reagent_amount("nutriment")
+ var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)
if(grind_results&&grind_results.len)
for(var/i in 1 to grind_results.len)
grind_results[grind_results[i]] = nutriment
- reagents.del_reagent("nutriment")
- reagents.del_reagent("vitamin")
+ reagents.del_reagent(/datum/reagent/consumable/nutriment)
+ reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin)
/obj/item/reagent_containers/food/snacks/grown/on_juice()
- var/nutriment = reagents.get_reagent_amount("nutriment")
+ var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)
if(juice_results&&juice_results.len)
for(var/i in 1 to juice_results.len)
juice_results[juice_results[i]] = nutriment
- reagents.del_reagent("nutriment")
- reagents.del_reagent("vitamin")
+ reagents.del_reagent(/datum/reagent/consumable/nutriment)
+ reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin)
// For item-containing growns such as eggy or gatfruit
/obj/item/reagent_containers/food/snacks/grown/shell/attack_self(mob/user)
diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm
index a3b93db1ea..e84025208a 100644
--- a/code/modules/hydroponics/grown/ambrosia.dm
+++ b/code/modules/hydroponics/grown/ambrosia.dm
@@ -25,7 +25,7 @@
icon_dead = "ambrosia-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/ambrosia/deus)
- reagents_add = list("space_drugs" = 0.15, "bicaridine" = 0.1, "kelotane" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05, "toxin" = 0.1)
+ reagents_add = list(/datum/reagent/drug/space_drugs = 0.15, /datum/reagent/medicine/bicaridine = 0.1, /datum/reagent/medicine/kelotane = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/toxin = 0.1)
/obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris
seed = /obj/item/seeds/ambrosia
@@ -42,7 +42,7 @@
plantname = "Ambrosia Deus"
product = /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus
mutatelist = list(/obj/item/seeds/ambrosia/gaia)
- reagents_add = list("omnizine" = 0.15, "synaptizine" = 0.15, "space_drugs" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/medicine/omnizine = 0.15, /datum/reagent/medicine/synaptizine = 0.15, /datum/reagent/drug/space_drugs = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05)
rarity = 40
/obj/item/reagent_containers/food/snacks/grown/ambrosia/deus
@@ -62,7 +62,7 @@
plantname = "Ambrosia Gaia"
product = /obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia
mutatelist = list(/obj/item/seeds/ambrosia/deus)
- reagents_add = list("earthsblood" = 0.05, "nutriment" = 0.06, "vitamin" = 0.05)
+ reagents_add = list(/datum/reagent/medicine/earthsblood = 0.05, /datum/reagent/consumable/nutriment = 0.06, /datum/reagent/consumable/nutriment/vitamin = 0.05)
rarity = 30 //These are some pretty good plants right here
genes = list()
weed_rate = 4
diff --git a/code/modules/hydroponics/grown/apple.dm b/code/modules/hydroponics/grown/apple.dm
index 007c0b2454..f8e58aee1b 100644
--- a/code/modules/hydroponics/grown/apple.dm
+++ b/code/modules/hydroponics/grown/apple.dm
@@ -14,7 +14,7 @@
icon_dead = "apple-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/apple/gold)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/apple
seed = /obj/item/seeds/apple
@@ -24,9 +24,9 @@
filling_color = "#FF4500"
bitesize = 100 // Always eat the apple in one bite
foodtype = FRUIT
- juice_results = list("applejuice" = 0)
+ juice_results = list(/datum/reagent/consumable/applejuice = 0)
tastes = list("apple" = 1)
- distill_reagent = "hcider"
+ distill_reagent = /datum/reagent/consumable/ethanol/hcider
// Gold Apple
/obj/item/seeds/apple/gold
@@ -39,7 +39,7 @@
maturation = 10
production = 10
mutatelist = list()
- reagents_add = list("gold" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/gold = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 40 // Alchemy!
/obj/item/reagent_containers/food/snacks/grown/apple/gold
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index b25f76c1c8..7668d17ac1 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -12,7 +12,7 @@
icon_dead = "banana-dead"
genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace, /obj/item/seeds/banana/exotic_banana)
- reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02)
+ reagents_add = list(/datum/reagent/consumable/banana = 0.1, /datum/reagent/potassium = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.02)
/obj/item/reagent_containers/food/snacks/grown/banana
seed = /obj/item/seeds/banana
@@ -24,8 +24,8 @@
filling_color = "#FFFF00"
bitesize = 5
foodtype = FRUIT
- juice_results = list("banana" = 0)
- distill_reagent = "bananahonk"
+ juice_results = list(/datum/reagent/consumable/banana = 0)
+ distill_reagent = /datum/reagent/consumable/ethanol/bananahonk
/obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user)
user.visible_message("[user] is aiming [src] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -70,7 +70,7 @@
product = /obj/item/reagent_containers/food/snacks/grown/banana/mime
growthstages = 4
mutatelist = list()
- reagents_add = list("nothing" = 0.1, "mutetoxin" = 0.1, "nutriment" = 0.02)
+ reagents_add = list(/datum/reagent/consumable/nothing = 0.1, /datum/reagent/toxin/mutetoxin = 0.1, /datum/reagent/consumable/nutriment = 0.02)
rarity = 15
/obj/item/reagent_containers/food/snacks/grown/banana/mime
@@ -80,7 +80,7 @@
icon_state = "mimana"
trash = /obj/item/grown/bananapeel/mimanapeel
filling_color = "#FFFFEE"
- distill_reagent = "silencer"
+ distill_reagent = /datum/reagent/consumable/ethanol/silencer
/obj/item/grown/bananapeel/mimanapeel
seed = /obj/item/seeds/banana/mime
@@ -100,7 +100,7 @@
product = /obj/item/reagent_containers/food/snacks/grown/banana/bluespace
mutatelist = list()
genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest)
- reagents_add = list("bluespace" = 0.2, "banana" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02)
+ reagents_add = list(/datum/reagent/bluespace = 0.2, /datum/reagent/consumable/banana = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.02)
rarity = 30
/obj/item/reagent_containers/food/snacks/grown/banana/bluespace
@@ -137,9 +137,9 @@
name = "banana spider"
desc = "You do not know what it is, but you can bet the clown would love it."
icon_state = "exoticbanana"
- list_reagents = list("nutriment" = 3, "vitamin" = 2)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2)
foodtype = GROSS | MEAT | RAW | FRUIT
- grind_results = list("blood" = 20, "liquidgibs" = 5)
+ grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5)
var/awakening = 0
/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user)
diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm
index 4338e3b070..3e5fee411f 100644
--- a/code/modules/hydroponics/grown/beans.dm
+++ b/code/modules/hydroponics/grown/beans.dm
@@ -15,7 +15,7 @@
icon_dead = "soybean-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/soya/koi)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05, "cooking_oil" = 0.03) //Vegetable oil!
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/consumable/cooking_oil = 0.03) //Vegetable oil!
/obj/item/reagent_containers/food/snacks/grown/soybeans
seed = /obj/item/seeds/soya
@@ -26,7 +26,7 @@
filling_color = "#F0E68C"
bitesize_mod = 2
foodtype = VEGETABLES
- grind_results = list("soymilk" = 0)
+ grind_results = list(/datum/reagent/consumable/soymilk = 0)
tastes = list("soy" = 1)
wine_power = 20
@@ -40,7 +40,7 @@
product = /obj/item/reagent_containers/food/snacks/grown/koibeans
potency = 10
mutatelist = list()
- reagents_add = list("carpotoxin" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/toxin/carpotoxin = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/koibeans
diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm
index 94dbc74499..0646ae1a8c 100644
--- a/code/modules/hydroponics/grown/berries.dm
+++ b/code/modules/hydroponics/grown/berries.dm
@@ -15,7 +15,7 @@
icon_dead = "berry-dead" // Same for the dead icon
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/berry/glow, /obj/item/seeds/berry/poison)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/berries
seed = /obj/item/seeds/berry
@@ -26,9 +26,9 @@
filling_color = "#FF00FF"
bitesize_mod = 2
foodtype = FRUIT
- juice_results = list("berryjuice" = 0)
+ juice_results = list(/datum/reagent/consumable/berryjuice = 0)
tastes = list("berry" = 1)
- distill_reagent = "gin"
+ distill_reagent = /datum/reagent/consumable/ethanol/gin
// Poison Berries
/obj/item/seeds/berry/poison
@@ -39,7 +39,7 @@
plantname = "Poison-Berry Bush"
product = /obj/item/reagent_containers/food/snacks/grown/berries/poison
mutatelist = list(/obj/item/seeds/berry/death)
- reagents_add = list("cyanide" = 0.15, "tirizene" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/toxin/cyanide = 0.15, /datum/reagent/toxin/staminatoxin = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 10 // Mildly poisonous berries are common in reality
/obj/item/reagent_containers/food/snacks/grown/berries/poison
@@ -49,7 +49,7 @@
icon_state = "poisonberrypile"
filling_color = "#C71585"
foodtype = FRUIT | TOXIC
- juice_results = list("poisonberryjuice" = 0)
+ juice_results = list(/datum/reagent/consumable/poisonberryjuice = 0)
tastes = list("poison-berry" = 1)
distill_reagent = null
wine_power = 35
@@ -65,7 +65,7 @@
lifespan = 30
potency = 50
mutatelist = list()
- reagents_add = list("coniine" = 0.08, "tirizene" = 0.1, "vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/toxin/coniine = 0.08, /datum/reagent/toxin/staminatoxin = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 30
/obj/item/reagent_containers/food/snacks/grown/berries/death
@@ -91,7 +91,7 @@
endurance = 25
mutatelist = list()
genes = list(/datum/plant_gene/trait/glow/white, /datum/plant_gene/trait/noreact, /datum/plant_gene/trait/repeated_harvest)
- reagents_add = list("uranium" = 0.25, "iodine" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/uranium = 0.25, /datum/reagent/iodine = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/berries/glow
@@ -124,7 +124,7 @@
icon_harvest = "cherry-harvest"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/cherry/blue, /obj/item/seeds/cherry/bulb)
- reagents_add = list("nutriment" = 0.07, "sugar" = 0.07)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07)
/obj/item/reagent_containers/food/snacks/grown/cherries
seed = /obj/item/seeds/cherry
@@ -135,7 +135,7 @@
filling_color = "#FF0000"
bitesize_mod = 2
foodtype = FRUIT
- grind_results = list("cherryjelly" = 0)
+ grind_results = list(/datum/reagent/consumable/cherryjelly = 0)
tastes = list("cherry" = 1)
wine_power = 30
@@ -148,7 +148,7 @@
plantname = "Blue Cherry Tree"
product = /obj/item/reagent_containers/food/snacks/grown/bluecherries
mutatelist = list()
- reagents_add = list("nutriment" = 0.07, "sugar" = 0.07)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07)
rarity = 10
/obj/item/reagent_containers/food/snacks/grown/bluecherries
@@ -159,7 +159,7 @@
filling_color = "#6495ED"
bitesize_mod = 2
foodtype = FRUIT
- grind_results = list("bluecherryjelly" = 0)
+ grind_results = list(/datum/reagent/consumable/bluecherryjelly = 0)
tastes = list("blue cherry" = 1)
wine_power = 50
@@ -173,7 +173,7 @@
product = /obj/item/reagent_containers/food/snacks/grown/cherrybulbs
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/pink)
mutatelist = list()
- reagents_add = list("nutriment" = 0.07, "sugar" = 0.07)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07)
rarity = 10
/obj/item/reagent_containers/food/snacks/grown/cherrybulbs
@@ -184,7 +184,7 @@
filling_color = "#FF0000"
bitesize_mod = 2
foodtype = FRUIT
- grind_results = list("cherryjelly" = 0)
+ grind_results = list(/datum/reagent/consumable/cherryjelly = 0)
tastes = list("cherry" = 1)
wine_power = 50
@@ -207,7 +207,7 @@
icon_dead = "grape-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/grape/green)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1)
/obj/item/reagent_containers/food/snacks/grown/grapes
seed = /obj/item/seeds/grape
@@ -218,9 +218,9 @@
filling_color = "#FF1493"
bitesize_mod = 2
foodtype = FRUIT
- juice_results = list("grapejuice" = 0)
+ juice_results = list(/datum/reagent/consumable/grapejuice = 0)
tastes = list("grape" = 1)
- distill_reagent = "wine"
+ distill_reagent = /datum/reagent/consumable/ethanol/wine
// Green Grapes
/obj/item/seeds/grape/green
@@ -230,7 +230,7 @@
species = "greengrape"
plantname = "Green-Grape Vine"
product = /obj/item/reagent_containers/food/snacks/grown/grapes/green
- reagents_add = list("kelotane" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1)
+ reagents_add = list(/datum/reagent/medicine/kelotane = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1)
// No rarity: technically it's a beneficial mutant, but it's not exactly "new"...
mutatelist = list()
@@ -240,7 +240,7 @@
icon_state = "greengrapes"
filling_color = "#7FFF00"
tastes = list("green grape" = 1)
- distill_reagent = "cognac"
+ distill_reagent = /datum/reagent/consumable/ethanol/cognac
// Strawberry
/obj/item/seeds/strawberry
@@ -254,7 +254,7 @@
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
icon_grow = "strawberry-grow"
icon_dead = "berry-dead"
- reagents_add = list("vitamin" = 0.07, "nutriment" = 0.1, "sugar" = 0.2)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.07, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.2)
mutatelist = list()
/obj/item/reagent_containers/food/snacks/grown/strawberry
diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm
index 6ce3558bc3..621e79fb77 100644
--- a/code/modules/hydroponics/grown/cannabis.dm
+++ b/code/modules/hydroponics/grown/cannabis.dm
@@ -17,7 +17,7 @@
/obj/item/seeds/cannabis/death,
/obj/item/seeds/cannabis/white,
/obj/item/seeds/cannabis/ultimate)
- reagents_add = list("space_drugs" = 0.15, "lipolicide" = 0.35) // gives u the munchies
+ reagents_add = list(/datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.35) // gives u the munchies
/obj/item/seeds/cannabis/rainbow
@@ -28,7 +28,7 @@
plantname = "Rainbow Weed"
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow
mutatelist = list()
- reagents_add = list("mindbreaker" = 0.15, "lipolicide" = 0.35)
+ reagents_add = list(/datum/reagent/toxin/mindbreaker = 0.15, /datum/reagent/toxin/lipolicide = 0.35)
rarity = 40
/obj/item/seeds/cannabis/death
@@ -39,7 +39,7 @@
plantname = "Deathweed"
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/death
mutatelist = list()
- reagents_add = list("cyanide" = 0.35, "space_drugs" = 0.15, "lipolicide" = 0.15)
+ reagents_add = list(/datum/reagent/toxin/cyanide = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15)
rarity = 40
/obj/item/seeds/cannabis/white
@@ -50,7 +50,7 @@
plantname = "Lifeweed"
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/white
mutatelist = list()
- reagents_add = list("omnizine" = 0.35, "space_drugs" = 0.15, "lipolicide" = 0.15)
+ reagents_add = list(/datum/reagent/medicine/omnizine = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15)
rarity = 40
@@ -63,21 +63,21 @@
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/green)
mutatelist = list()
- reagents_add = list("space_drugs" = 0.3,
- "mindbreaker" = 0.3,
- "mercury" = 0.15,
- "lithium" = 0.15,
- "atropine" = 0.15,
- "haloperidol" = 0.15,
- "methamphetamine" = 0.15,
- "capsaicin" = 0.15,
- "barbers_aid" = 0.15,
- "bath_salts" = 0.15,
- "itching_powder" = 0.15,
- "crank" = 0.15,
- "krokodil" = 0.15,
- "histamine" = 0.15,
- "lipolicide" = 0.15)
+ reagents_add = list(/datum/reagent/drug/space_drugs = 0.3,
+ /datum/reagent/toxin/mindbreaker = 0.3,
+ /datum/reagent/mercury = 0.15,
+ /datum/reagent/lithium = 0.15,
+ /datum/reagent/medicine/atropine = 0.15,
+ /datum/reagent/medicine/haloperidol = 0.15,
+ /datum/reagent/drug/methamphetamine = 0.15,
+ /datum/reagent/consumable/capsaicin = 0.15,
+ /datum/reagent/barbers_aid = 0.15,
+ /datum/reagent/drug/bath_salts = 0.15,
+ /datum/reagent/toxin/itching_powder = 0.15,
+ /datum/reagent/drug/crank = 0.15,
+ /datum/reagent/drug/krokodil = 0.15,
+ /datum/reagent/toxin/histamine = 0.15,
+ /datum/reagent/toxin/lipolicide = 0.15)
rarity = 69
diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm
index c53cd6718a..c5a7e0797a 100644
--- a/code/modules/hydroponics/grown/cereals.dm
+++ b/code/modules/hydroponics/grown/cereals.dm
@@ -11,7 +11,7 @@
potency = 15
icon_dead = "wheat-dead"
mutatelist = list(/obj/item/seeds/wheat/oat, /obj/item/seeds/wheat/meat)
- reagents_add = list("nutriment" = 0.04)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.04)
/obj/item/reagent_containers/food/snacks/grown/wheat
seed = /obj/item/seeds/wheat
@@ -22,9 +22,9 @@
filling_color = "#F0E68C"
bitesize_mod = 2
foodtype = GRAIN
- grind_results = list("flour" = 0)
+ grind_results = list(/datum/reagent/consumable/flour = 0)
tastes = list("wheat" = 1)
- distill_reagent = "beer"
+ distill_reagent = /datum/reagent/consumable/ethanol/beer
// Oat
/obj/item/seeds/wheat/oat
@@ -45,9 +45,9 @@
filling_color = "#556B2F"
bitesize_mod = 2
foodtype = GRAIN
- grind_results = list("flour" = 0)
+ grind_results = list(/datum/reagent/consumable/flour = 0)
tastes = list("oat" = 1)
- distill_reagent = "ale"
+ distill_reagent = /datum/reagent/consumable/ethanol/ale
// Rice
/obj/item/seeds/wheat/rice
@@ -69,9 +69,9 @@
filling_color = "#FAFAD2"
bitesize_mod = 2
foodtype = GRAIN
- grind_results = list("rice" = 0)
+ grind_results = list(/datum/reagent/consumable/rice = 0)
tastes = list("rice" = 1)
- distill_reagent = "sake"
+ distill_reagent = /datum/reagent/consumable/ethanol/sake
//Meatwheat - grows into synthetic meat
/obj/item/seeds/wheat/meat
@@ -92,7 +92,7 @@
bitesize_mod = 2
seed = /obj/item/seeds/wheat/meat
foodtype = MEAT | GRAIN
- grind_results = list("flour" = 0, "blood" = 0)
+ grind_results = list(/datum/reagent/consumable/flour = 0, /datum/reagent/blood = 0)
tastes = list("meatwheat" = 1)
can_distill = FALSE
diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm
index 6325daacdc..0522b5fd45 100644
--- a/code/modules/hydroponics/grown/chili.dm
+++ b/code/modules/hydroponics/grown/chili.dm
@@ -16,7 +16,7 @@
icon_dead = "chili-dead" // Same for the dead icon
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/chili/ice, /obj/item/seeds/chili/ghost)
- reagents_add = list("capsaicin" = 0.25, "vitamin" = 0.04, "nutriment" = 0.04)
+ reagents_add = list(/datum/reagent/consumable/capsaicin = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.04)
/obj/item/reagent_containers/food/snacks/grown/chili
seed = /obj/item/seeds/chili
@@ -41,7 +41,7 @@
production = 4
rarity = 20
mutatelist = list()
- reagents_add = list("frostoil" = 0.25, "vitamin" = 0.02, "nutriment" = 0.02)
+ reagents_add = list(/datum/reagent/consumable/frostoil = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.02)
/obj/item/reagent_containers/food/snacks/grown/icepepper
seed = /obj/item/seeds/chili/ice
@@ -67,7 +67,7 @@
yield = 3
rarity = 20
mutatelist = list()
- reagents_add = list("condensedcapsaicin" = 0.3, "capsaicin" = 0.55, "nutriment" = 0.04)
+ reagents_add = list(/datum/reagent/consumable/condensedcapsaicin = 0.3, /datum/reagent/consumable/capsaicin = 0.55, /datum/reagent/consumable/nutriment = 0.04)
/obj/item/reagent_containers/food/snacks/grown/ghost_chili
seed = /obj/item/seeds/chili/ghost
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index 66d03c777c..851753da46 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -23,7 +23,7 @@
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/orange)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/citrus/lime
seed = /obj/item/seeds/lime
@@ -31,7 +31,7 @@
desc = "It's so sour, your face will twist."
icon_state = "lime"
filling_color = "#00FF00"
- juice_results = list("limejuice" = 0)
+ juice_results = list(/datum/reagent/consumable/limejuice = 0)
// Electric Lime
/obj/item/seeds/lime/electric
@@ -70,7 +70,7 @@
icon_dead = "lime-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/lime, /obj/item/seeds/orange_3d)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/citrus/orange
seed = /obj/item/seeds/orange
@@ -78,8 +78,8 @@
desc = "It's a tangy fruit."
icon_state = "orange"
filling_color = "#FFA500"
- juice_results = list("orangejuice" = 0)
- distill_reagent = "triple_sec"
+ juice_results = list(/datum/reagent/consumable/orangejuice = 0)
+ distill_reagent = /datum/reagent/consumable/ethanol/triple_sec
//3D Orange
@@ -98,7 +98,7 @@
icon_grow = "lime-grow"
icon_dead = "lime-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05, "haloperidol" = 0.15)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/haloperidol = 0.15)
/obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d
seed = /obj/item/seeds/orange_3d
@@ -106,8 +106,8 @@
desc = "You can hardly wrap your head around this thing."
icon_state = "orang"
filling_color = "#FFA500"
- juice_results = list("orangejuice" = 0)
- distill_reagent = "triple_sec"
+ juice_results = list(/datum/reagent/consumable/orangejuice = 0)
+ distill_reagent = /datum/reagent/consumable/ethanol/triple_sec
tastes = list("polygons" = 1, "oranges" = 1)
/obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d/pickup(mob/user)
@@ -134,7 +134,7 @@
icon_dead = "lime-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/firelemon)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/citrus/lemon
seed = /obj/item/seeds/lemon
@@ -142,7 +142,7 @@
desc = "When life gives you lemons, make lemonade."
icon_state = "lemon"
filling_color = "#FFD700"
- juice_results = list("lemonjuice" = 0)
+ juice_results = list(/datum/reagent/consumable/lemonjuice = 0)
// Combustible lemon
/obj/item/seeds/firelemon //combustible lemon is too long so firelemon
@@ -159,7 +159,7 @@
lifespan = 55
endurance = 45
yield = 4
- reagents_add = list("nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/firelemon
seed = /obj/item/seeds/firelemon
diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm
index 44373515c6..9ac705aa83 100644
--- a/code/modules/hydroponics/grown/cocoa_vanilla.dm
+++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm
@@ -16,7 +16,7 @@
icon_dead = "cocoapod-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/cocoapod/vanillapod, /obj/item/seeds/cocoapod/bungotree)
- reagents_add = list("cocoa" = 0.25, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/coco = 0.25, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/cocoapod
seed = /obj/item/seeds/cocoapod
@@ -27,7 +27,7 @@
bitesize_mod = 2
foodtype = FRUIT
tastes = list("cocoa" = 1)
- distill_reagent = "creme_de_cacao"
+ distill_reagent = /datum/reagent/consumable/ethanol/creme_de_cacao
// Vanilla Pod
/obj/item/seeds/cocoapod/vanillapod
@@ -39,7 +39,7 @@
product = /obj/item/reagent_containers/food/snacks/grown/vanillapod
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list()
- reagents_add = list("vanilla" = 0.25, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/vanilla = 0.25, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/vanillapod
seed = /obj/item/seeds/cocoapod/vanillapod
@@ -49,7 +49,7 @@
filling_color = "#FFD700"
foodtype = FRUIT
tastes = list("vanilla" = 1)
- distill_reagent = "vanilla" //Takes longer, but you can get even more vanilla from it.
+ distill_reagent = /datum/reagent/consumable/vanilla //Takes longer, but you can get even more vanilla from it.
/obj/item/seeds/cocoapod/bungotree
name = "pack of bungo tree seeds"
@@ -64,7 +64,7 @@
production = 7
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list()
- reagents_add = list("enzyme" = 0.1, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/enzyme = 0.1, /datum/reagent/consumable/nutriment = 0.1)
growthstages = 4
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
icon_grow = "bungotree-grow"
@@ -79,6 +79,7 @@
trash = /obj/item/reagent_containers/food/snacks/grown/bungopit
filling_color = "#E8C22F"
foodtype = FRUIT
+ juice_results = list(/datum/reagent/consumable/bungojuice = 0)
tastes = list("bungo" = 2, "tropical fruitiness" = 1)
distill_reagent = null
@@ -97,7 +98,7 @@
/obj/item/reagent_containers/food/snacks/grown/bungopit/Initialize()
. =..()
reagents.clear_reagents()
- reagents.add_reagent("bungotoxin", seed.potency * 0.10) //More than this will kill at too low potency
- reagents.add_reagent("nutriment", seed.potency * 0.04)
+ reagents.add_reagent(/datum/reagent/toxin/bungotoxin, seed.potency * 0.10) //More than this will kill at too low potency
+ reagents.add_reagent(/datum/reagent/consumable/nutriment, seed.potency * 0.04)
diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm
index 0e5b5272ed..6c852c426d 100644
--- a/code/modules/hydroponics/grown/corn.dm
+++ b/code/modules/hydroponics/grown/corn.dm
@@ -13,7 +13,7 @@
icon_grow = "corn-grow" // Uses one growth icons set for all the subtypes
icon_dead = "corn-dead" // Same for the dead icon
mutatelist = list(/obj/item/seeds/corn/snapcorn)
- reagents_add = list("cornoil" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/cornoil = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/corn
seed = /obj/item/seeds/corn
@@ -25,9 +25,9 @@
trash = /obj/item/grown/corncob
bitesize_mod = 2
foodtype = VEGETABLES
- juice_results = list("corn_starch" = 0)
+ juice_results = list(/datum/reagent/consumable/corn_starch = 0)
tastes = list("corn" = 1)
- distill_reagent = "whiskey"
+ distill_reagent = /datum/reagent/consumable/ethanol/whiskey
/obj/item/grown/corncob
name = "corn cob"
diff --git a/code/modules/hydroponics/grown/eggplant.dm b/code/modules/hydroponics/grown/eggplant.dm
index 7c01a68f0a..f893ad9e57 100644
--- a/code/modules/hydroponics/grown/eggplant.dm
+++ b/code/modules/hydroponics/grown/eggplant.dm
@@ -13,7 +13,7 @@
icon_dead = "eggplant-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/eggplant/eggy)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/eggplant
seed = /obj/item/seeds/eggplant
@@ -36,7 +36,7 @@
lifespan = 75
production = 12
mutatelist = list()
- reagents_add = list("nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/shell/eggy
seed = /obj/item/seeds/eggplant/eggy
@@ -47,4 +47,4 @@
filling_color = "#F8F8FF"
bitesize_mod = 2
foodtype = MEAT
- distill_reagent = "eggnog"
+ distill_reagent = /datum/reagent/consumable/ethanol/eggnog
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
index b7c9550bb9..8cdf403b00 100644
--- a/code/modules/hydroponics/grown/flowers.dm
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -15,7 +15,7 @@
icon_grow = "poppy-grow"
icon_dead = "poppy-dead"
mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/poppy/lily)
- reagents_add = list("bicaridine" = 0.2, "nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/medicine/bicaridine = 0.2, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/poppy
seed = /obj/item/seeds/poppy
@@ -27,7 +27,7 @@
bitesize_mod = 3
tastes = list("sesame seeds" = 1)
foodtype = VEGETABLES | GROSS
- distill_reagent = "vermouth"
+ distill_reagent = /datum/reagent/consumable/ethanol/vermouth
// Lily
/obj/item/seeds/poppy/lily
@@ -68,7 +68,7 @@
icon_dead = "spacemanstrumpet-dead"
mutatelist = list()
genes = list(/datum/plant_gene/reagent/polypyr)
- reagents_add = list("nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.05)
rarity = 30
/obj/item/seeds/poppy/lily/trumpet/Initialize()
@@ -119,7 +119,7 @@
growthstages = 4
genes = list(/datum/plant_gene/trait/plant_type/weed_hardy)
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
- reagents_add = list("nutriment" = 0.04)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.04)
/obj/item/reagent_containers/food/snacks/grown/harebell
seed = /obj/item/seeds/harebell
@@ -130,7 +130,7 @@
slot_flags = ITEM_SLOT_HEAD
filling_color = "#E6E6FA"
bitesize_mod = 3
- distill_reagent = "vermouth"
+ distill_reagent = /datum/reagent/consumable/ethanol/vermouth
// Sunflower
/obj/item/seeds/sunflower
@@ -148,7 +148,7 @@
icon_grow = "sunflower-grow"
icon_dead = "sunflower-dead"
mutatelist = list(/obj/item/seeds/sunflower/moonflower, /obj/item/seeds/sunflower/novaflower)
- reagents_add = list("cooking_oil" = 0.08, "nutriment" = 0.04)
+ reagents_add = list(/datum/reagent/consumable/cooking_oil = 0.08, /datum/reagent/consumable/nutriment = 0.04)
/obj/item/grown/sunflower // FLOWER POWER!
seed = /obj/item/seeds/sunflower
@@ -184,7 +184,7 @@
product = /obj/item/reagent_containers/food/snacks/grown/moonflower
genes = list(/datum/plant_gene/trait/glow/purple)
mutatelist = list()
- reagents_add = list("moonshine" = 0.2, "vitamin" = 0.02, "nutriment" = 0.02)
+ reagents_add = list(/datum/reagent/consumable/ethanol/moonshine = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.02)
rarity = 15
/obj/item/reagent_containers/food/snacks/grown/moonflower
@@ -195,7 +195,7 @@
slot_flags = ITEM_SLOT_HEAD
filling_color = "#E6E6FA"
bitesize_mod = 2
- distill_reagent = "absinthe" //It's made from flowers.
+ distill_reagent = /datum/reagent/consumable/ethanol/absinthe //It's made from flowers.
tastes = list("glowbugs" = 1)
// Novaflower
@@ -209,7 +209,7 @@
icon_dead = "sunflower-dead"
product = /obj/item/grown/novaflower
mutatelist = list()
- reagents_add = list("condensedcapsaicin" = 0.25, "capsaicin" = 0.3, "nutriment" = 0)
+ reagents_add = list(/datum/reagent/consumable/condensedcapsaicin = 0.25, /datum/reagent/consumable/capsaicin = 0.3, /datum/reagent/consumable/nutriment = 0)
rarity = 20
/obj/item/grown/novaflower
@@ -227,7 +227,7 @@
throw_speed = 1
throw_range = 3
attack_verb = list("roasted", "scorched", "burned")
- grind_results = list("capsaicin" = 0, "condensedcapsaicin" = 0)
+ grind_results = list(/datum/reagent/consumable/capsaicin = 0, /datum/reagent/consumable/condensedcapsaicin = 0)
tastes = list("cooked sunflower" = 1)
/obj/item/grown/novaflower/add_juice()
@@ -277,7 +277,7 @@
icon_grow = "bee_balm-grow"
icon_dead = "bee_balm-dead"
mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/bee_balm/honey) //Lower odds of becoming honey
- reagents_add = list("spaceacillin" = 0.1, "sterilizine" = 0.05)
+ reagents_add = list(/datum/reagent/medicine/spaceacillin = 0.1, /datum/reagent/space_cleaner/sterilizine = 0.05)
/obj/item/reagent_containers/food/snacks/grown/bee_balm
seed = /obj/item/seeds/bee_balm
@@ -305,7 +305,7 @@
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
icon_grow = "bee_balmalt-grow"
icon_dead = "bee_balmalt-dead"
- reagents_add = list("honey" = 0.1, "lye" = 0.3) //To make wax
+ reagents_add = list(/datum/reagent/consumable/honey = 0.1, /datum/reagent/lye = 0.3) //To make wax
rarity = 30
/obj/item/reagent_containers/food/snacks/grown/bee_balm/honey
diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm
index 02b36d6a3f..3b5159465c 100644
--- a/code/modules/hydroponics/grown/grass_carpet.dm
+++ b/code/modules/hydroponics/grown/grass_carpet.dm
@@ -16,7 +16,7 @@
icon_dead = "grass-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/grass/carpet, /obj/item/seeds/grass/fairy)
- reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05)
/obj/item/reagent_containers/food/snacks/grown/grass
seed = /obj/item/seeds/grass
@@ -51,7 +51,7 @@
icon_grow = "fairygrass-grow"
icon_dead = "fairygrass-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/blue)
- reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05, "space_drugs" = 0.15)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05, /datum/reagent/drug/space_drugs = 0.15)
/obj/item/reagent_containers/food/snacks/grown/grass/fairy
seed = /obj/item/seeds/grass/fairy
@@ -66,9 +66,9 @@
for(var/datum/plant_gene/trait/glow/gene in seed.genes)
G = gene
break
-
+
stacktype = initial(stacktype)
-
+
if(G)
switch(G.type)
if(/datum/plant_gene/trait/glow/white)
@@ -85,10 +85,10 @@
stacktype = /obj/item/stack/tile/fairygrass/purple
if(/datum/plant_gene/trait/glow/pink)
stacktype = /obj/item/stack/tile/fairygrass/pink
-
+
. = ..()
-
+
// Carpet
diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm
index 6ceb69536d..5f1fdcdaa9 100644
--- a/code/modules/hydroponics/grown/kudzu.dm
+++ b/code/modules/hydroponics/grown/kudzu.dm
@@ -14,7 +14,7 @@
growthstages = 4
rarity = 30
var/list/mutations = list()
- reagents_add = list("charcoal" = 0.04, "nutriment" = 0.02)
+ reagents_add = list(/datum/reagent/medicine/charcoal = 0.04, /datum/reagent/consumable/nutriment = 0.02)
/obj/item/seeds/kudzu/Copy()
var/obj/item/seeds/kudzu/S = ..()
@@ -58,7 +58,7 @@
/obj/item/seeds/kudzu/on_chem_reaction(datum/reagents/S)
var/list/temp_mut_list = list()
- if(S.has_reagent("sterilizine", 5))
+ if(S.has_reagent(/datum/reagent/space_cleaner/sterilizine, 5))
for(var/datum/spacevine_mutation/SM in mutations)
if(SM.quality == NEGATIVE)
temp_mut_list += SM
@@ -66,7 +66,7 @@
mutations.Remove(pick(temp_mut_list))
temp_mut_list.Cut()
- if(S.has_reagent("welding_fuel", 5))
+ if(S.has_reagent(/datum/reagent/fuel, 5))
for(var/datum/spacevine_mutation/SM in mutations)
if(SM.quality == POSITIVE)
temp_mut_list += SM
@@ -74,7 +74,7 @@
mutations.Remove(pick(temp_mut_list))
temp_mut_list.Cut()
- if(S.has_reagent("phenol", 5))
+ if(S.has_reagent(/datum/reagent/phenol, 5))
for(var/datum/spacevine_mutation/SM in mutations)
if(SM.quality == MINOR_NEGATIVE)
temp_mut_list += SM
@@ -82,16 +82,16 @@
mutations.Remove(pick(temp_mut_list))
temp_mut_list.Cut()
- if(S.has_reagent("blood", 15))
+ if(S.has_reagent(/datum/reagent/blood, 15))
adjust_production(rand(15, -5))
- if(S.has_reagent("amatoxin", 5))
+ if(S.has_reagent(/datum/reagent/toxin/amatoxin, 5))
adjust_production(rand(5, -15))
- if(S.has_reagent("plasma", 5))
+ if(S.has_reagent(/datum/reagent/toxin/plasma, 5))
adjust_potency(rand(5, -15))
- if(S.has_reagent("holywater", 10))
+ if(S.has_reagent(/datum/reagent/water/holywater, 10))
adjust_potency(rand(15, -5))
diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm
index e85a36f4b6..940508f66b 100644
--- a/code/modules/hydroponics/grown/melon.dm
+++ b/code/modules/hydroponics/grown/melon.dm
@@ -12,7 +12,7 @@
icon_dead = "watermelon-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/watermelon/holy)
- reagents_add = list("water" = 0.2, "vitamin" = 0.04, "nutriment" = 0.2)
+ reagents_add = list(/datum/reagent/water = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.2)
/obj/item/seeds/watermelon/suicide_act(mob/user)
user.visible_message("[user] is swallowing [src]! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -33,7 +33,7 @@
filling_color = "#008000"
bitesize_mod = 3
foodtype = FRUIT
- juice_results = list("watermelonjuice" = 0)
+ juice_results = list(/datum/reagent/consumable/watermelonjuice = 0)
wine_power = 40
// Holymelon
@@ -46,7 +46,7 @@
product = /obj/item/reagent_containers/food/snacks/grown/holymelon
genes = list(/datum/plant_gene/trait/glow/yellow)
mutatelist = list()
- reagents_add = list("holywater" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/water/holywater = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/holymelon
diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm
index 3af284974e..e0a2453353 100644
--- a/code/modules/hydroponics/grown/misc.dm
+++ b/code/modules/hydroponics/grown/misc.dm
@@ -12,7 +12,7 @@
yield = 6
potency = 10
growthstages = 3
- grind_results = list("mustardgrind" = 1)
+ grind_results = list(/datum/reagent/mustardgrind = 1)
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
genes = list(/datum/plant_gene/trait/plant_type/weed_hardy)
mutatelist = list(/obj/item/seeds/starthistle/corpse_flower, /obj/item/seeds/galaxythistle)
@@ -80,7 +80,7 @@
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
genes = list(/datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/invasive)
mutatelist = list()
- reagents_add = list("nutriment" = 0.05, "silibinin" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/silibinin = 0.1)
/obj/item/seeds/galaxythistle/Initialize()
..()
@@ -116,7 +116,7 @@
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/replicapod)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/cabbage
seed = /obj/item/seeds/cabbage
@@ -142,7 +142,7 @@
maturation = 3
yield = 4
growthstages = 2
- reagents_add = list("sugar" = 0.25)
+ reagents_add = list(/datum/reagent/consumable/sugar = 0.25)
mutatelist = list(/obj/item/seeds/bamboo)
/obj/item/reagent_containers/food/snacks/grown/sugarcane
@@ -153,7 +153,7 @@
filling_color = "#FFD700"
bitesize_mod = 2
foodtype = VEGETABLES | SUGAR
- distill_reagent = "rum"
+ distill_reagent = /datum/reagent/consumable/ethanol/rum
// Gatfruit
/obj/item/seeds/gatfruit
@@ -173,7 +173,7 @@
growthstages = 2
rarity = 60 // Obtainable only with xenobio+superluck.
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
- reagents_add = list("sulfur" = 0.1, "carbon" = 0.1, "nitrogen" = 0.07, "potassium" = 0.05)
+ reagents_add = list(/datum/reagent/sulfur = 0.1, /datum/reagent/carbon = 0.1, /datum/reagent/nitrogen = 0.07, /datum/reagent/potassium = 0.05)
/obj/item/reagent_containers/food/snacks/grown/shell/gatfruit
seed = /obj/item/seeds/gatfruit
@@ -195,7 +195,7 @@
plantname = "Cherry Bomb Tree"
product = /obj/item/reagent_containers/food/snacks/grown/cherry_bomb
mutatelist = list()
- reagents_add = list("nutriment" = 0.1, "sugar" = 0.1, "blackpowder" = 0.7)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/blackpowder = 0.7)
rarity = 60 //See above
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb
@@ -261,7 +261,7 @@
icon_dead = "coconut-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
forbiddengenes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/stinging)
- reagents_add = list("coconutmilk" = 0.3)
+ reagents_add = list(/datum/reagent/consumable/coconutmilk = 0.3)
/obj/item/reagent_containers/food/snacks/grown/coconut
seed = /obj/item/seeds/coconut
@@ -432,7 +432,7 @@
"[user] splashes the contents of [src] onto [M]!")
if(reagents)
for(var/datum/reagent/A in reagents.reagent_list)
- R += A.id + " ("
+ R += A.type + " ("
R += num2text(A.volume) + "),"
if(isturf(target) && reagents.reagent_list.len && thrownby)
log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]")
diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm
index c8e97c78de..7e43911c5c 100644
--- a/code/modules/hydroponics/grown/mushrooms.dm
+++ b/code/modules/hydroponics/grown/mushrooms.dm
@@ -21,7 +21,7 @@
growthstages = 4
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
- reagents_add = list("morphine" = 0.35, "charcoal" = 0.35, "nutriment" = 0)
+ reagents_add = list(/datum/reagent/medicine/morphine = 0.35, /datum/reagent/medicine/charcoal = 0.35, /datum/reagent/consumable/nutriment = 0)
/obj/item/reagent_containers/food/snacks/grown/mushroom/reishi
seed = /obj/item/seeds/reishi
@@ -47,7 +47,7 @@
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
mutatelist = list(/obj/item/seeds/angel)
- reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.35, "nutriment" = 0, "growthserum" = 0.1)
+ reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.04, /datum/reagent/toxin/amatoxin = 0.35, /datum/reagent/consumable/nutriment = 0, /datum/reagent/growthserum = 0.1)
/obj/item/reagent_containers/food/snacks/grown/mushroom/amanita
seed = /obj/item/seeds/amanita
@@ -73,7 +73,7 @@
growthstages = 3
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
- reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.1, "nutriment" = 0, "amanitin" = 0.2)
+ reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.04, /datum/reagent/toxin/amatoxin = 0.1, /datum/reagent/consumable/nutriment = 0, /datum/reagent/toxin/amanitin = 0.2)
rarity = 30
/obj/item/reagent_containers/food/snacks/grown/mushroom/angel
@@ -99,7 +99,7 @@
growthstages = 3
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
- reagents_add = list("mushroomhallucinogen" = 0.25, "nutriment" = 0.02)
+ reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.25, /datum/reagent/consumable/nutriment = 0.02)
/obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap
seed = /obj/item/seeds/liberty
@@ -125,7 +125,7 @@
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
mutatelist = list(/obj/item/seeds/plump/walkingmushroom)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet
seed = /obj/item/seeds/plump
@@ -133,7 +133,7 @@
desc = "Plumus Hellmus: Plump, soft and s-so inviting~"
icon_state = "plumphelmet"
filling_color = "#9370DB"
- distill_reagent = "manlydorf"
+ distill_reagent = /datum/reagent/consumable/ethanol/manly_dorf
// Walking Mushroom
/obj/item/seeds/plump/walkingmushroom
@@ -149,7 +149,7 @@
yield = 1
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
mutatelist = list()
- reagents_add = list("vitamin" = 0.05, "nutriment" = 0.15)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.15)
rarity = 30
/obj/item/reagent_containers/food/snacks/grown/mushroom/walkingmushroom
@@ -190,7 +190,7 @@
growthstages = 3
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
- reagents_add = list("nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
mutatelist = list(/obj/item/seeds/chanterelle/jupitercup)
/obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle
@@ -215,7 +215,7 @@
growthstages = 2
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/liquidelectricity, /datum/plant_gene/trait/plant_type/carnivory)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
- reagents_add = list("nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
/obj/item/seeds/chanterelle/jupitercup/Initialize()
..()
@@ -248,7 +248,7 @@
genes = list(/datum/plant_gene/trait/glow, /datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
mutatelist = list(/obj/item/seeds/glowshroom/glowcap, /obj/item/seeds/glowshroom/shadowshroom)
- reagents_add = list("radium" = 0.1, "phosphorus" = 0.1, "nutriment" = 0.04)
+ reagents_add = list(/datum/reagent/radium = 0.1, /datum/reagent/phosphorus = 0.1, /datum/reagent/consumable/nutriment = 0.04)
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom
seed = /obj/item/seeds/glowshroom
@@ -293,7 +293,7 @@
product = /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap
genes = list(/datum/plant_gene/trait/glow/red, /datum/plant_gene/trait/cell_charge, /datum/plant_gene/trait/plant_type/fungal_metabolism)
mutatelist = list()
- reagents_add = list("teslium" = 0.1, "nutriment" = 0.04)
+ reagents_add = list(/datum/reagent/teslium = 0.1, /datum/reagent/consumable/nutriment = 0.04)
rarity = 30
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap
@@ -318,7 +318,7 @@
product = /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom
genes = list(/datum/plant_gene/trait/glow/shadow, /datum/plant_gene/trait/plant_type/fungal_metabolism)
mutatelist = list()
- reagents_add = list("radium" = 0.2, "nutriment" = 0.04)
+ reagents_add = list(/datum/reagent/radium = 0.2, /datum/reagent/consumable/nutriment = 0.04)
rarity = 30
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom
@@ -350,7 +350,7 @@
potency = 15
growthstages = 3
rarity = 20
- reagents_add = list("nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
resistance_flags = FIRE_PROOF
/obj/item/seeds/lavaland/polypore
diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm
index dbcce2830b..c3bd82c624 100644
--- a/code/modules/hydroponics/grown/nettle.dm
+++ b/code/modules/hydroponics/grown/nettle.dm
@@ -11,7 +11,7 @@
growthstages = 5
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy)
mutatelist = list(/obj/item/seeds/nettle/death)
- reagents_add = list("sacid" = 0.5)
+ reagents_add = list(/datum/reagent/toxin/acid = 0.5)
/obj/item/seeds/nettle/death
name = "pack of death-nettle seeds"
@@ -25,7 +25,7 @@
yield = 2
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/stinging)
mutatelist = list()
- reagents_add = list("facid" = 0.5, "sacid" = 0.5)
+ reagents_add = list(/datum/reagent/toxin/acid/fluacid = 0.5, /datum/reagent/toxin/acid = 0.5)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/nettle // "snack"
diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm
index 9cb8d1a63c..2ebaa6d5e2 100644
--- a/code/modules/hydroponics/grown/onion.dm
+++ b/code/modules/hydroponics/grown/onion.dm
@@ -13,7 +13,7 @@
growthstages = 3
weed_chance = 3
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
mutatelist = list(/obj/item/seeds/onion/red)
/obj/item/reagent_containers/food/snacks/grown/onion
@@ -36,7 +36,7 @@
plantname = "Red Onion Sprouts"
weed_chance = 1
product = /obj/item/reagent_containers/food/snacks/grown/onion/red
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "tearjuice" = 0.05)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/tearjuice = 0.05)
/obj/item/reagent_containers/food/snacks/grown/onion/red
seed = /obj/item/seeds/onion/red
@@ -61,7 +61,7 @@
name = "onion slices"
desc = "Rings, not for wearing."
icon_state = "onionslice"
- list_reagents = list("nutriment" = 5, "vitamin" = 2)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2)
filling_color = "#C0C9A0"
gender = PLURAL
cooked_type = /obj/item/reagent_containers/food/snacks/onionrings
@@ -71,4 +71,4 @@
desc = "They shine like exceptionally low quality amethyst."
icon_state = "onionslice_red"
filling_color = "#C29ACF"
- list_reagents = list("nutriment" = 5, "vitamin" = 2, "tearjuice" = 2.5)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/tearjuice = 2.5)
diff --git a/code/modules/hydroponics/grown/peach.dm b/code/modules/hydroponics/grown/peach.dm
index 6fbf933bd1..1f48ab5512 100644
--- a/code/modules/hydroponics/grown/peach.dm
+++ b/code/modules/hydroponics/grown/peach.dm
@@ -13,7 +13,7 @@
icon_grow = "peach-grow"
icon_dead = "peach-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/peach
seed = /obj/item/seeds/peach
@@ -23,5 +23,5 @@
filling_color = "#FF4500"
bitesize = 25
foodtype = FRUIT
- juice_results = list("peachjuice" = 0)
+ juice_results = list(/datum/reagent/consumable/peachjuice = 0)
tastes = list("peach" = 1)
diff --git a/code/modules/hydroponics/grown/peanuts.dm b/code/modules/hydroponics/grown/peanuts.dm
index 2423300cc4..3ac1497148 100644
--- a/code/modules/hydroponics/grown/peanuts.dm
+++ b/code/modules/hydroponics/grown/peanuts.dm
@@ -8,7 +8,7 @@
yield = 6
growthstages = 4
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- reagents_add = list("vitamin" = 0.02, "nutriment" = 0.15, "cooking_oil" = 0.03)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.15, /datum/reagent/consumable/cooking_oil = 0.03)
/obj/item/reagent_containers/food/snacks/grown/peanut
seed = /obj/item/seeds/peanutseed
@@ -26,5 +26,5 @@
desc = "A handful of roasted peanuts, with or without salt."
icon_state = "roasted_peanuts"
foodtype = VEGETABLES
- list_reagents = list("nutriment" = 6, "vitamin" = 1)
- juice_results = list("peanut_butter" = 3)
\ No newline at end of file
+ list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1)
+ juice_results = list(/datum/reagent/consumable/peanut_butter = 3)
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm
index e52c261217..40b3a67573 100644
--- a/code/modules/hydroponics/grown/pineapple.dm
+++ b/code/modules/hydroponics/grown/pineapple.dm
@@ -12,7 +12,7 @@
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/apple)
- reagents_add = list("vitamin" = 0.02, "nutriment" = 0.2, "water" = 0.04)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.2, /datum/reagent/water = 0.04)
/obj/item/reagent_containers/food/snacks/grown/pineapple
seed = /obj/item/seeds/pineapple
diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm
index 50341dfa3a..fad916030d 100644
--- a/code/modules/hydroponics/grown/potato.dm
+++ b/code/modules/hydroponics/grown/potato.dm
@@ -16,7 +16,7 @@
icon_dead = "potato-dead"
genes = list(/datum/plant_gene/trait/battery)
mutatelist = list(/obj/item/seeds/potato/sweet)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/potato
seed = /obj/item/seeds/potato
@@ -26,8 +26,8 @@
filling_color = "#E9967A"
bitesize = 100
foodtype = VEGETABLES
- juice_results = list("potato" = 0)
- distill_reagent = "vodka"
+ juice_results = list(/datum/reagent/consumable/potato_juice = 0)
+ distill_reagent = /datum/reagent/consumable/ethanol/vodka
/obj/item/reagent_containers/food/snacks/grown/potato/wedges
name = "potato wedges"
@@ -57,11 +57,11 @@
plantname = "Sweet Potato Plants"
product = /obj/item/reagent_containers/food/snacks/grown/potato/sweet
mutatelist = list()
- reagents_add = list("vitamin" = 0.1, "sugar" = 0.1, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.1, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/potato/sweet
seed = /obj/item/seeds/potato/sweet
name = "sweet potato"
desc = "It's sweet."
icon_state = "sweetpotato"
- distill_reagent = "sbiten"
+ distill_reagent = /datum/reagent/consumable/ethanol/sbiten
diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm
index 46dc49a169..6254fb5bcc 100644
--- a/code/modules/hydroponics/grown/pumpkin.dm
+++ b/code/modules/hydroponics/grown/pumpkin.dm
@@ -14,7 +14,7 @@
icon_dead = "pumpkin-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/pumpkin/blumpkin)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.2)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.2)
/obj/item/reagent_containers/food/snacks/grown/pumpkin
seed = /obj/item/seeds/pumpkin
@@ -24,7 +24,7 @@
filling_color = "#FFA500"
bitesize_mod = 2
foodtype = FRUIT
- juice_results = list("pumpkinjuice" = 0)
+ juice_results = list(/datum/reagent/consumable/pumpkinjuice = 0)
wine_power = 20
/obj/item/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/W as obj, mob/user as mob, params)
@@ -45,7 +45,7 @@
plantname = "Blumpkin Vines"
product = /obj/item/reagent_containers/food/snacks/grown/blumpkin
mutatelist = list()
- reagents_add = list("ammonia" = 0.2, "chlorine" = 0.1, "nutriment" = 0.2)
+ reagents_add = list(/datum/reagent/ammonia = 0.2, /datum/reagent/chlorine = 0.1, /datum/reagent/consumable/nutriment = 0.2)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/blumpkin
@@ -56,5 +56,5 @@
filling_color = "#87CEFA"
bitesize_mod = 2
foodtype = FRUIT
- juice_results = list("blumpkinjuice" = 0)
+ juice_results = list(/datum/reagent/consumable/blumpkinjuice = 0)
wine_power = 50
diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm
index bac480bee6..3769f9eacc 100644
--- a/code/modules/hydroponics/grown/replicapod.dm
+++ b/code/modules/hydroponics/grown/replicapod.dm
@@ -31,7 +31,7 @@
/obj/item/seeds/replicapod/on_reagent_change(changetype)
if(changetype == ADD_REAGENT)
- var/datum/reagent/blood/B = reagents.has_reagent("blood")
+ var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood)
if(B)
if(B.data["mind"] && B.data["cloneable"])
mind = B.data["mind"]
@@ -47,7 +47,7 @@
else
visible_message("The [src] rejects the sample!")
- if(!reagents.has_reagent("blood"))
+ if(!reagents.has_reagent(/datum/reagent/blood))
mind = null
ckey = null
realName = null
diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm
index e28043e4b1..ac171b4e45 100644
--- a/code/modules/hydroponics/grown/root.dm
+++ b/code/modules/hydroponics/grown/root.dm
@@ -12,7 +12,7 @@
growthstages = 3
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
mutatelist = list(/obj/item/seeds/carrot/parsnip)
- reagents_add = list("oculine" = 0.25, "vitamin" = 0.04, "nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/medicine/oculine = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/carrot
seed = /obj/item/seeds/carrot
@@ -22,7 +22,7 @@
filling_color = "#FFA500"
bitesize_mod = 2
foodtype = VEGETABLES
- juice_results = list("carrotjuice" = 0)
+ juice_results = list(/datum/reagent/consumable/carrotjuice = 0)
wine_power = 30
/obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params)
@@ -45,7 +45,7 @@
product = /obj/item/reagent_containers/food/snacks/grown/parsnip
icon_dead = "carrot-dead"
mutatelist = list()
- reagents_add = list("vitamin" = 0.05, "nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/parsnip
seed = /obj/item/seeds/carrot/parsnip
@@ -54,7 +54,7 @@
icon_state = "parsnip"
bitesize_mod = 2
foodtype = VEGETABLES
- juice_results = list("parsnipjuice" = 0)
+ juice_results = list(/datum/reagent/consumable/parsnipjuice = 0)
wine_power = 35
@@ -72,7 +72,7 @@
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
icon_dead = "whitebeet-dead"
mutatelist = list(/obj/item/seeds/redbeet)
- reagents_add = list("vitamin" = 0.04, "sugar" = 0.2, "nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/sugar = 0.2, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/whitebeet
seed = /obj/item/seeds/whitebeet
@@ -98,7 +98,7 @@
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
icon_dead = "whitebeet-dead"
genes = list(/datum/plant_gene/trait/maxchem)
- reagents_add = list("vitamin" = 0.05, "nutriment" = 0.05)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/redbeet
seed = /obj/item/seeds/redbeet
diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm
index bdb5bdb3f9..44e11c372d 100644
--- a/code/modules/hydroponics/grown/tea_coffee.dm
+++ b/code/modules/hydroponics/grown/tea_coffee.dm
@@ -14,7 +14,7 @@
icon_dead = "tea-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/tea/astra)
- reagents_add = list("teapowder" = 0.1)
+ reagents_add = list(/datum/reagent/toxin/teapowder = 0.1)
/obj/item/reagent_containers/food/snacks/grown/tea
seed = /obj/item/seeds/tea
@@ -22,7 +22,7 @@
desc = "These aromatic tips of the tea plant can be dried to make tea."
icon_state = "tea_aspera_leaves"
filling_color = "#008000"
- grind_results = list("teapowder" = 0)
+ grind_results = list(/datum/reagent/toxin/teapowder = 0)
dry_grind = TRUE
can_distill = FALSE
@@ -34,7 +34,7 @@
plantname = "Tea Astra Plant"
product = /obj/item/reagent_containers/food/snacks/grown/tea/astra
mutatelist = list(/obj/item/seeds/tea/catnip)
- reagents_add = list("synaptizine" = 0.1, "vitamin" = 0.04, "teapowder" = 0.1)
+ reagents_add = list(/datum/reagent/medicine/synaptizine = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/teapowder = 0.1)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/tea/astra
@@ -42,7 +42,7 @@
name = "Tea Astra tips"
icon_state = "tea_astra_leaves"
filling_color = "#4582B4"
- grind_results = list("teapowder" = 0, "salglu_solution" = 0)
+ grind_results = list(/datum/reagent/toxin/teapowder = 0, /datum/reagent/medicine/salglu_solution = 0)
// Kitty drugs
/obj/item/seeds/tea/catnip
@@ -52,7 +52,7 @@
species = "catnip"
plantname = "Catnip Plant"
product = /obj/item/reagent_containers/food/snacks/grown/tea/catnip
- reagents_add = list("catnip" = 0.1, "vitamin" = 0.06, "teapowder" = 0.3)
+ reagents_add = list(/datum/reagent/pax/catnip = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.06, /datum/reagent/toxin/teapowder = 0.3)
rarity = 50
/obj/item/reagent_containers/food/snacks/grown/tea/catnip
@@ -60,7 +60,7 @@
name = "Catnip buds"
icon_state = "catnip"
filling_color = "#4582B4"
- grind_results = list("catnp" = 2, "water" = 1)
+ grind_results = list(/datum/reagent/pax/catnip = 2, /datum/reagent/water = 1)
// Coffee
/obj/item/seeds/coffee
@@ -79,7 +79,7 @@
icon_dead = "coffee-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/coffee/robusta)
- reagents_add = list("vitamin" = 0.04, "coffeepowder" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/coffeepowder = 0.1)
/obj/item/reagent_containers/food/snacks/grown/coffee
seed = /obj/item/seeds/coffee
@@ -89,8 +89,8 @@
filling_color = "#DC143C"
bitesize_mod = 2
dry_grind = TRUE
- grind_results = list("coffeepowder" = 0)
- distill_reagent = "kahlua"
+ grind_results = list(/datum/reagent/toxin/coffeepowder = 0)
+ distill_reagent = /datum/reagent/consumable/ethanol/kahlua
// Coffee Robusta
/obj/item/seeds/coffee/robusta
@@ -101,7 +101,7 @@
plantname = "Coffee Robusta Bush"
product = /obj/item/reagent_containers/food/snacks/grown/coffee/robusta
mutatelist = list()
- reagents_add = list("ephedrine" = 0.1, "vitamin" = 0.04, "coffeepowder" = 0.1)
+ reagents_add = list(/datum/reagent/medicine/ephedrine = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/coffeepowder = 0.1)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/coffee/robusta
@@ -109,4 +109,4 @@
name = "coffee robusta beans"
desc = "Increases robustness by 37 percent!"
icon_state = "coffee_robusta"
- grind_results = list("coffeepowder" = 0, "morphine" = 0)
+ grind_results = list(/datum/reagent/toxin/coffeepowder = 0, /datum/reagent/medicine/morphine = 0)
diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm
index 684271fa6b..1e2d25d825 100644
--- a/code/modules/hydroponics/grown/tobacco.dm
+++ b/code/modules/hydroponics/grown/tobacco.dm
@@ -13,7 +13,7 @@
growthstages = 3
icon_dead = "tobacco-dead"
mutatelist = list(/obj/item/seeds/tobacco/space)
- reagents_add = list("nicotine" = 0.03, "nutriment" = 0.03)
+ reagents_add = list(/datum/reagent/drug/nicotine = 0.03, /datum/reagent/consumable/nutriment = 0.03)
/obj/item/reagent_containers/food/snacks/grown/tobacco
seed = /obj/item/seeds/tobacco
@@ -21,7 +21,7 @@
desc = "Dry them out to make some smokes."
icon_state = "tobacco_leaves"
filling_color = "#008000"
- distill_reagent = "creme_de_menthe" //Menthol, I guess.
+ distill_reagent = /datum/reagent/consumable/ethanol/creme_de_menthe //Menthol, I guess.
// Space Tobacco
/obj/item/seeds/tobacco/space
@@ -32,7 +32,7 @@
plantname = "Space Tobacco Plant"
product = /obj/item/reagent_containers/food/snacks/grown/tobacco/space
mutatelist = list()
- reagents_add = list("salbutamol" = 0.05, "nicotine" = 0.08, "nutriment" = 0.03)
+ reagents_add = list(/datum/reagent/medicine/salbutamol = 0.05, /datum/reagent/drug/nicotine = 0.08, /datum/reagent/consumable/nutriment = 0.03)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/tobacco/space
diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm
index d07f5d4d08..53c3389695 100644
--- a/code/modules/hydroponics/grown/tomato.dm
+++ b/code/modules/hydroponics/grown/tomato.dm
@@ -12,7 +12,7 @@
icon_dead = "tomato-dead"
genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/tomato/blue, /obj/item/seeds/tomato/blood, /obj/item/seeds/tomato/killer)
- reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/tomato
seed = /obj/item/seeds/tomato
@@ -23,9 +23,9 @@
filling_color = "#FF6347"
bitesize_mod = 2
foodtype = FRUIT
- grind_results = list("ketchup" = 0)
- juice_results = list("tomatojuice" = 0)
- distill_reagent = "enzyme"
+ grind_results = list(/datum/reagent/consumable/ketchup = 0)
+ juice_results = list(/datum/reagent/consumable/tomatojuice = 0)
+ distill_reagent = /datum/reagent/consumable/enzyme
// Blood Tomato
/obj/item/seeds/tomato/blood
@@ -36,7 +36,7 @@
plantname = "Blood-Tomato Plants"
product = /obj/item/reagent_containers/food/snacks/grown/tomato/blood
mutatelist = list()
- reagents_add = list("blood" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/blood = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/tomato/blood
@@ -47,8 +47,8 @@
splat_type = /obj/effect/gibspawner/generic
filling_color = "#FF0000"
foodtype = FRUIT | GROSS
- grind_results = list("ketchup" = 0, "blood" = 0)
- distill_reagent = "bloodymary"
+ grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0)
+ distill_reagent = /datum/reagent/consumable/ethanol/bloody_mary
// Blue Tomato
/obj/item/seeds/tomato/blue
@@ -62,7 +62,7 @@
icon_grow = "bluetomato-grow"
mutatelist = list(/obj/item/seeds/tomato/blue/bluespace)
genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest)
- reagents_add = list("lube" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/lube = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/tomato/blue
@@ -72,7 +72,7 @@
icon_state = "bluetomato"
splat_type = /obj/effect/decal/cleanable/oil
filling_color = "#0000FF"
- distill_reagent = "laughter"
+ distill_reagent = /datum/reagent/consumable/laughter
// Bluespace Tomato
/obj/item/seeds/tomato/blue/bluespace
@@ -85,7 +85,7 @@
yield = 2
mutatelist = list()
genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest)
- reagents_add = list("lube" = 0.2, "bluespace" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ reagents_add = list(/datum/reagent/lube = 0.2, /datum/reagent/bluespace = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 50
/obj/item/reagent_containers/food/snacks/grown/tomato/blue/bluespace
@@ -120,7 +120,7 @@
icon_state = "killertomato"
var/awakening = 0
filling_color = "#FF0000"
- distill_reagent = "demonsblood"
+ distill_reagent = /datum/reagent/consumable/ethanol/demonsblood
/obj/item/reagent_containers/food/snacks/grown/tomato/killer/attack(mob/M, mob/user, def_zone)
if(awakening)
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index 1ea0068a1a..9655b13862 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -24,7 +24,7 @@
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
volume = 100
- list_reagents = list("weedkiller" = 100)
+ list_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 100)
/obj/item/reagent_containers/spray/weedspray/suicide_act(mob/user)
user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -39,7 +39,7 @@
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
volume = 100
- list_reagents = list("pestkiller" = 100)
+ list_reagents = list(/datum/reagent/toxin/pestkiller = 100)
/obj/item/reagent_containers/spray/pestspray/suicide_act(mob/user)
user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -164,17 +164,17 @@
/obj/item/reagent_containers/glass/bottle/nutrient/ez
name = "bottle of E-Z-Nutrient"
desc = "Contains a fertilizer that causes mild mutations with each harvest."
- list_reagents = list("eznutriment" = 50)
+ list_reagents = list(/datum/reagent/plantnutriment/eznutriment = 50)
/obj/item/reagent_containers/glass/bottle/nutrient/l4z
name = "bottle of Left 4 Zed"
desc = "Contains a fertilizer that limits plant yields to no more than one and causes significant mutations in plants."
- list_reagents = list("left4zednutriment" = 50)
+ list_reagents = list(/datum/reagent/plantnutriment/left4zednutriment = 50)
/obj/item/reagent_containers/glass/bottle/nutrient/rh
name = "bottle of Robust Harvest"
desc = "Contains a fertilizer that increases the yield of a plant by 30% while causing no mutations."
- list_reagents = list("robustharvestnutriment" = 50)
+ list_reagents = list(/datum/reagent/plantnutriment/robustharvestnutriment = 50)
/obj/item/reagent_containers/glass/bottle/nutrient/empty
name = "bottle"
@@ -187,9 +187,9 @@
/obj/item/reagent_containers/glass/bottle/killer/weedkiller
name = "bottle of weed killer"
desc = "Contains a herbicide."
- list_reagents = list("weedkiller" = 50)
+ list_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 50)
/obj/item/reagent_containers/glass/bottle/killer/pestkiller
name = "bottle of pest spray"
desc = "Contains a pesticide."
- list_reagents = list("pestkiller" = 50)
\ No newline at end of file
+ list_reagents = list(/datum/reagent/toxin/pestkiller = 50)
\ No newline at end of file
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 59a9725383..0b6834c408 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -470,7 +470,7 @@
myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines
// Requires 5 mutagen to possibly change species.// Poor man's mutagen.
- if(S.has_reagent("mutagen", 5) || S.has_reagent("radium", 10) || S.has_reagent("uranium", 10))
+ if(S.has_reagent(/datum/reagent/toxin/mutagen, 5) || S.has_reagent(/datum/reagent/radium, 10) || S.has_reagent(/datum/reagent/uranium, 10))
switch(rand(100))
if(91 to 100)
adjustHealth(-10)
@@ -491,214 +491,214 @@
to_chat(user, "Nothing happens...")
// 2 or 1 units is enough to change the yield and other stats.// Can change the yield and other stats, but requires more than mutagen
- else if(S.has_reagent("mutagen", 2) || S.has_reagent("radium", 5) || S.has_reagent("uranium", 5))
+ else if(S.has_reagent(/datum/reagent/toxin/mutagen, 2) || S.has_reagent(/datum/reagent/radium, 5) || S.has_reagent(/datum/reagent/uranium, 5))
hardmutate()
- else if(S.has_reagent("mutagen", 1) || S.has_reagent("radium", 2) || S.has_reagent("uranium", 2))
+ else if(S.has_reagent(/datum/reagent/toxin/mutagen, 1) || S.has_reagent(/datum/reagent/radium, 2) || S.has_reagent(/datum/reagent/uranium, 2))
mutate()
// After handling the mutating, we now handle the damage from adding crude radioactives...
- if(S.has_reagent("uranium", 1))
- adjustHealth(-round(S.get_reagent_amount("uranium") * 1))
- adjustToxic(round(S.get_reagent_amount("uranium") * 2))
- if(S.has_reagent("radium", 1))
- adjustHealth(-round(S.get_reagent_amount("radium") * 1))
- adjustToxic(round(S.get_reagent_amount("radium") * 3)) // Radium is harsher (OOC: also easier to produce)
+ if(S.has_reagent(/datum/reagent/uranium, 1))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/uranium) * 1))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/uranium) * 2))
+ if(S.has_reagent(/datum/reagent/radium, 1))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/radium) * 1))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/radium) * 3)) // Radium is harsher (OOC: also easier to produce)
// Nutriments
- if(S.has_reagent("eznutriment", 1))
+ if(S.has_reagent(/datum/reagent/plantnutriment/eznutriment, 1))
yieldmod = 1
mutmod = 1
- adjustNutri(round(S.get_reagent_amount("eznutriment") * 1))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/eznutriment) * 1))
- if(S.has_reagent("left4zednutriment", 1))
+ if(S.has_reagent(/datum/reagent/plantnutriment/left4zednutriment, 1))
yieldmod = 0
mutmod = 2
- adjustNutri(round(S.get_reagent_amount("left4zednutriment") * 1))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/left4zednutriment) * 1))
- if(S.has_reagent("robustharvestnutriment", 1))
+ if(S.has_reagent(/datum/reagent/plantnutriment/robustharvestnutriment, 1))
yieldmod = 1.3
mutmod = 0
- adjustNutri(round(S.get_reagent_amount("robustharvestnutriment") *1 ))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/robustharvestnutriment) *1 ))
// Ambrosia Gaia produces earthsblood.
- if(S.has_reagent("earthsblood"))
- self_sufficiency_progress += S.get_reagent_amount("earthsblood")
+ if(S.has_reagent(/datum/reagent/medicine/earthsblood))
+ self_sufficiency_progress += S.get_reagent_amount(/datum/reagent/medicine/earthsblood)
if(self_sufficiency_progress >= self_sufficiency_req)
become_self_sufficient()
else if(!self_sustaining)
to_chat(user, "[src] warms as it might on a spring day under a genuine Sun.")
// Antitoxin binds shit pretty well. So the tox goes significantly down
- if(S.has_reagent("charcoal", 1))
- adjustToxic(-round(S.get_reagent_amount("charcoal") * 2))
+ if(S.has_reagent(/datum/reagent/medicine/charcoal, 1))
+ adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/charcoal) * 2))
// Toxins, not good for anything
- if(S.has_reagent("toxin", 1))
- adjustToxic(round(S.get_reagent_amount("toxin") * 2))
+ if(S.has_reagent(/datum/reagent/toxin, 1))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin) * 2))
// Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now...
- if(S.has_reagent("milk", 1))
- adjustNutri(round(S.get_reagent_amount("milk") * 0.1))
- adjustWater(round(S.get_reagent_amount("milk") * 0.9))
+ if(S.has_reagent(/datum/reagent/consumable/milk, 1))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.1))
+ adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.9))
// Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay?
- if(S.has_reagent("beer", 1))
- adjustHealth(-round(S.get_reagent_amount("beer") * 0.05))
- adjustNutri(round(S.get_reagent_amount("beer") * 0.25))
- adjustWater(round(S.get_reagent_amount("beer") * 0.7))
+ if(S.has_reagent(/datum/reagent/consumable/ethanol/beer, 1))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.05))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.25))
+ adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.7))
// Fluorine one of the most corrosive and deadly gasses
- if(S.has_reagent("fluorine", 1))
- adjustHealth(-round(S.get_reagent_amount("fluorine") * 2))
- adjustToxic(round(S.get_reagent_amount("fluorine") * 2.5))
- adjustWater(-round(S.get_reagent_amount("fluorine") * 0.5))
+ if(S.has_reagent(/datum/reagent/fluorine, 1))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 2))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/fluorine) * 2.5))
+ adjustWater(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 0.5))
adjustWeeds(-rand(1,4))
// Chlorine one of the most corrosive and deadly gasses
- if(S.has_reagent("chlorine", 1))
- adjustHealth(-round(S.get_reagent_amount("chlorine") * 1))
- adjustToxic(round(S.get_reagent_amount("chlorine") * 1.5))
- adjustWater(-round(S.get_reagent_amount("chlorine") * 0.5))
+ if(S.has_reagent(/datum/reagent/chlorine, 1))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 1))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/chlorine) * 1.5))
+ adjustWater(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 0.5))
adjustWeeds(-rand(1,3))
// White Phosphorous + water -> phosphoric acid. That's not a good thing really.
// Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much.
- if(S.has_reagent("phosphorus", 1))
- adjustHealth(-round(S.get_reagent_amount("phosphorus") * 0.75))
- adjustNutri(round(S.get_reagent_amount("phosphorus") * 0.1))
- adjustWater(-round(S.get_reagent_amount("phosphorus") * 0.5))
+ if(S.has_reagent(/datum/reagent/phosphorus, 1))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.75))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.1))
+ adjustWater(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.5))
adjustWeeds(-rand(1,2))
// Plants should not have sugar, they can't use it and it prevents them getting water/nutients, it is good for mold though...
- if(S.has_reagent("sugar", 1))
+ if(S.has_reagent(/datum/reagent/consumable/sugar, 1))
adjustWeeds(rand(1,2))
adjustPests(rand(1,2))
- adjustNutri(round(S.get_reagent_amount("sugar") * 0.1))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sugar) * 0.1))
// It is water!
- if(S.has_reagent("water", 1))
- adjustWater(round(S.get_reagent_amount("water") * 1))
+ if(S.has_reagent(/datum/reagent/water, 1))
+ adjustWater(round(S.get_reagent_amount(/datum/reagent/water) * 1))
// Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~
- if(S.has_reagent("holywater", 1))
- adjustWater(round(S.get_reagent_amount("holywater") * 1))
- adjustHealth(round(S.get_reagent_amount("holywater") * 0.1))
+ if(S.has_reagent(/datum/reagent/water/holywater, 1))
+ adjustWater(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 1))
+ adjustHealth(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 0.1))
// A variety of nutrients are dissolved in club soda, without sugar.
// These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
- if(S.has_reagent("sodawater", 1))
- adjustWater(round(S.get_reagent_amount("sodawater") * 1))
- adjustHealth(round(S.get_reagent_amount("sodawater") * 0.1))
- adjustNutri(round(S.get_reagent_amount("sodawater") * 0.1))
+ if(S.has_reagent(/datum/reagent/consumable/sodawater, 1))
+ adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 1))
+ adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1))
// Sulphuric Acid
- if(S.has_reagent("sacid", 1))
- adjustHealth(-round(S.get_reagent_amount("sacid") * 1))
- adjustToxic(round(S.get_reagent_amount("sacid") * 1.5))
+ if(S.has_reagent(/datum/reagent/toxin/acid, 1))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1.5))
adjustWeeds(-rand(1,2))
// Acid
- if(S.has_reagent("facid", 1))
- adjustHealth(-round(S.get_reagent_amount("facid") * 2))
- adjustToxic(round(S.get_reagent_amount("facid") * 3))
+ if(S.has_reagent(/datum/reagent/toxin/acid/fluacid, 1))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 2))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 3))
adjustWeeds(-rand(1,4))
// Plant-B-Gone is just as bad
- if(S.has_reagent("plantbgone", 1))
- adjustHealth(-round(S.get_reagent_amount("plantbgone") * 5))
- adjustToxic(round(S.get_reagent_amount("plantbgone") * 6))
+ if(S.has_reagent(/datum/reagent/toxin/plantbgone, 1))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 5))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 6))
adjustWeeds(-rand(4,8))
// Napalm, not known for being good for anything organic
- if(S.has_reagent("napalm", 1))
+ if(S.has_reagent(/datum/reagent/napalm, 1))
if(!(myseed.resistance_flags & FIRE_PROOF))
- adjustHealth(-round(S.get_reagent_amount("napalm") * 6))
- adjustToxic(round(S.get_reagent_amount("napalm") * 7))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/napalm) * 6))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/napalm) * 7))
adjustWeeds(-rand(5,9))
//Weed Spray
- if(S.has_reagent("weedkiller", 1))
- adjustToxic(round(S.get_reagent_amount("weedkiller") * 0.5))
+ if(S.has_reagent(/datum/reagent/toxin/plantbgone/weedkiller, 1))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone/weedkiller) * 0.5))
//old toxicity was 4, each spray is default 10 (minimal of 5) so 5 and 2.5 are the new ammounts
adjustWeeds(-rand(1,2))
//Pest Spray
- if(S.has_reagent("pestkiller", 1))
- adjustToxic(round(S.get_reagent_amount("pestkiller") * 0.5))
+ if(S.has_reagent(/datum/reagent/toxin/pestkiller, 1))
+ adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/pestkiller) * 0.5))
adjustPests(-rand(1,2))
// Healing
- if(S.has_reagent("cryoxadone", 1))
- adjustHealth(round(S.get_reagent_amount("cryoxadone") * 3))
- adjustToxic(-round(S.get_reagent_amount("cryoxadone") * 3))
+ if(S.has_reagent(/datum/reagent/medicine/cryoxadone, 1))
+ adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3))
+ adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3))
// Ammonia is bad ass.
- if(S.has_reagent("ammonia", 1))
- adjustHealth(round(S.get_reagent_amount("ammonia") * 0.5))
- adjustNutri(round(S.get_reagent_amount("ammonia") * 1))
+ if(S.has_reagent(/datum/reagent/ammonia, 1))
+ adjustHealth(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.5))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/ammonia) * 1))
if(myseed)
- myseed.adjust_yield(round(S.get_reagent_amount("ammonia") * 0.01))
+ myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.01))
// Saltpetre is used for gardening IRL, to simplify highly, it speeds up growth and strengthens plants
- if(S.has_reagent("saltpetre", 1))
- var/salt = S.get_reagent_amount("saltpetre")
+ if(S.has_reagent(/datum/reagent/saltpetre, 1))
+ var/salt = S.get_reagent_amount(/datum/reagent/saltpetre)
adjustHealth(round(salt * 0.25))
if (myseed)
myseed.adjust_production(-round(salt/100)-prob(salt%100))
myseed.adjust_potency(round(salt*0.5))
// Ash is also used IRL in gardening, as a fertilizer enhancer and weed killer
- if(S.has_reagent("ash", 1))
- adjustHealth(round(S.get_reagent_amount("ash") * 0.25))
- adjustNutri(round(S.get_reagent_amount("ash") * 0.5))
+ if(S.has_reagent(/datum/reagent/ash, 1))
+ adjustHealth(round(S.get_reagent_amount(/datum/reagent/ash) * 0.25))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/ash) * 0.5))
adjustWeeds(-1)
// Diethylamine is more bad ass, and pests get hurt by the corrosive nature of it, not the plant.
- if(S.has_reagent("diethylamine", 1))
- adjustHealth(round(S.get_reagent_amount("diethylamine") * 1))
- adjustNutri(round(S.get_reagent_amount("diethylamine") * 2))
+ if(S.has_reagent(/datum/reagent/diethylamine, 1))
+ adjustHealth(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 1))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 2))
if(myseed)
- myseed.adjust_yield(round(S.get_reagent_amount("diethylamine") * 0.02))
+ myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.02))
adjustPests(-rand(1,2))
// Nutriment Compost, effectively
- if(S.has_reagent("nutriment", 1))
- adjustHealth(round(S.get_reagent_amount("nutriment") * 0.5))
- adjustNutri(round(S.get_reagent_amount("nutriment") * 1))
+ if(S.has_reagent(/datum/reagent/consumable/nutriment, 1))
+ adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 0.5))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 1))
// Virusfood Compost for EVERYTHING
- if(S.has_reagent("virusfood", 1))
- adjustNutri(round(S.get_reagent_amount("virusfood") * 0.5))
- adjustHealth(-round(S.get_reagent_amount("virusfood") * 0.5))
+ if(S.has_reagent(/datum/reagent/toxin/mutagen/mutagenvirusfood, 1))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5))
// Blood
- if(S.has_reagent("blood", 1))
- adjustNutri(round(S.get_reagent_amount("blood") * 1))
+ if(S.has_reagent(/datum/reagent/blood, 1))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/blood) * 1))
adjustPests(rand(2,4))
// Strange reagent
- if(S.has_reagent("strangereagent", 1))
+ if(S.has_reagent(/datum/reagent/medicine/strange_reagent, 1))
spawnplant()
// Honey, Pests are dieing of sugar, so is the plant
- if(S.has_reagent("honey", 1))
+ if(S.has_reagent(/datum/reagent/consumable/honey, 1))
adjustPests(-rand(2,5))
- adjustHealth(-round(S.get_reagent_amount("honey") * 1))
+ adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/honey) * 1))
// Buzz Fuzz, a drink seemingly made for plants...
- if(S.has_reagent("buzz_fuzz", 1))
+ if(S.has_reagent(/datum/reagent/consumable/buzz_fuzz, 1))
adjustPests(-rand(2,5))
- adjustHealth(round(S.get_reagent_amount("buzz_fuzz") * 0.1))
- adjustNutri(round(S.get_reagent_amount("buzz_fuzz") * 0.5))
+ adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/buzz_fuzz) * 0.1))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/buzz_fuzz) * 0.5))
// Adminordrazine the best stuff there is. For testing/debugging.
- if(S.has_reagent("adminordrazine", 1))
- adjustWater(round(S.get_reagent_amount("adminordrazine") * 1))
- adjustHealth(round(S.get_reagent_amount("adminordrazine") * 1))
- adjustNutri(round(S.get_reagent_amount("adminordrazine") * 1))
+ if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 1))
+ adjustWater(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
+ adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
+ adjustNutri(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
adjustPests(-rand(1,5))
adjustWeeds(-rand(1,5))
- if(S.has_reagent("adminordrazine", 5))
+ if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 5))
switch(rand(100))
if(66 to 100)
mutatespecie()
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index 3597ed5be6..99fd873995 100644
--- a/code/modules/hydroponics/plant_genes.dm
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -129,7 +129,7 @@
name = "UNKNOWN"
var/datum/reagent/R = GLOB.chemical_reagents_list[reag_id]
- if(R && R.id == reagent_id)
+ if(R && R.type == reagent_id)
name = R.name
/datum/plant_gene/reagent/New(reag_id = null, reag_rate = 0)
@@ -228,7 +228,7 @@
var/obj/item/seeds/seed = G.seed
var/stun_len = seed.potency * rate
- if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent("lube")))
+ if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent(/datum/reagent/lube)))
stun_len /= 3
G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, .proc/handle_slip, G))
@@ -412,7 +412,7 @@
pocell.name = "[G.name] battery"
pocell.desc = "A rechargeable plant-based power cell. This one has a rating of [DisplayEnergy(pocell.maxcharge)], and you should not swallow it."
- if(G.reagents.has_reagent("plasma", 2))
+ if(G.reagents.has_reagent(/datum/reagent/toxin/plasma, 2))
pocell.rigged = TRUE
qdel(G)
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 39e97e3801..b35665c8e6 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -200,7 +200,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
var/list/data = null
if(rid == "blood") // Hack to make blood in plants always O-
data = list("blood_type" = "O-")
- if(rid == "nutriment" || rid == "vitamin")
+ if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin)
// apple tastes of apple.
data = T.tastes
diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm
index 40ed235863..4b6b8723dd 100644
--- a/code/modules/integrated_electronics/passive/power.dm
+++ b/code/modules/integrated_electronics/passive/power.dm
@@ -96,7 +96,8 @@
activators = list("push ref" = IC_PINTYPE_PULSE_IN)
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
var/volume = 60
- var/list/fuel = list("plasma" = 50000, "welding_fuel" = 15000, "carbon" = 10000, "ethanol" = 10000, "nutriment" = 8000)
+ var/list/fuel = list(/datum/reagent/toxin/plasma = 50000, /datum/reagent/fuel = 15000, /datum/reagent/carbon = 10000,
+ /datum/reagent/consumable/ethanol = 10000, /datum/reagent/consumable/nutriment = 8000)
var/multi = 1
var/lfwb =TRUE
@@ -119,7 +120,7 @@
if(assembly)
if(assembly.battery)
var/bp = 5000
- if(reagents.get_reagent_amount("blood")) //only blood is powerful enough to power the station(c)
+ if(reagents.get_reagent_amount(/datum/reagent/blood)) //only blood is powerful enough to power the station(c)
var/datum/reagent/blood/B = locate() in reagents.reagent_list
if(lfwb)
if(B && B.data["cloneable"])
@@ -127,7 +128,7 @@
if(M && (M.stat != DEAD) && (M.client))
bp = 500000
if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > bp)
- if(reagents.remove_reagent("blood", 1))
+ if(reagents.remove_reagent(/datum/reagent/blood, 1))
assembly.give_power(bp)
for(var/I in fuel)
if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > fuel[I])
diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm
index 027a03650a..0fc9f58db8 100644
--- a/code/modules/integrated_electronics/subtypes/reagents.dm
+++ b/code/modules/integrated_electronics/subtypes/reagents.dm
@@ -424,7 +424,7 @@
if(1)
var/cont[0]
for(var/datum/reagent/RE in reagents.reagent_list)
- cont += RE.id
+ cont += RE.type
set_pin_data(IC_OUTPUT, 3, cont)
push_data()
if(2)
@@ -492,11 +492,11 @@
for(var/datum/reagent/G in source.reagents.reagent_list)
if(!direction_mode)
- if(G.id in demand)
- source.reagents.trans_id_to(target, G.id, transfer_amount)
+ if(G.type in demand)
+ source.reagents.trans_id_to(target, G.type, transfer_amount)
else
- if(!(G.id in demand))
- source.reagents.trans_id_to(target, G.id, transfer_amount)
+ if(!(G.type in demand))
+ source.reagents.trans_id_to(target, G.type, transfer_amount)
activate_pin(2)
push_data()
diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm
index 4077f21ea9..ea0174d2a5 100644
--- a/code/modules/mining/lavaland/ash_flora.dm
+++ b/code/modules/mining/lavaland/ash_flora.dm
@@ -148,7 +148,7 @@
desc = "Some shavings from a tall mushroom. With enough, might serve as a bowl."
icon = 'icons/obj/lavaland/ash_flora.dmi'
icon_state = "mushroom_shavings"
- list_reagents = list("sugar" = 3, "ethanol" = 2, "stabilizing_agent" = 3, "minttoxin" = 2)
+ list_reagents = list(/datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/ethanol = 2, /datum/reagent/stabilizing_agent = 3, /datum/reagent/toxin/minttoxin = 2)
w_class = WEIGHT_CLASS_TINY
resistance_flags = FLAMMABLE
max_integrity = 100
@@ -166,7 +166,7 @@
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf
name = "mushroom leaf"
desc = "A leaf, from a mushroom."
- list_reagents = list("nutriment" = 3, "vitfro" = 2, "nicotine" = 2)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/vitfro = 2, /datum/reagent/drug/nicotine = 2)
icon_state = "mushroom_leaf"
seed = /obj/item/seeds/lavaland/porcini
wine_power = 40
@@ -174,7 +174,7 @@
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap
name = "mushroom cap"
desc = "The cap of a large mushroom."
- list_reagents = list("mindbreaker" = 2, "entpoly" = 4, "mushroomhallucinogen" = 2)
+ list_reagents = list(/datum/reagent/toxin/mindbreaker = 2, /datum/reagent/consumable/entpoly = 4, /datum/reagent/drug/mushroomhallucinogen = 2)
icon_state = "mushroom_cap"
seed = /obj/item/seeds/lavaland/inocybe
wine_power = 70
@@ -182,14 +182,14 @@
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem
name = "mushroom stem"
desc = "A long mushroom stem. It's slightly glowing."
- list_reagents = list("tinlux" = 2, "vitamin" = 1, "space_drugs" = 1)
+ list_reagents = list(/datum/reagent/consumable/tinlux = 2, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/drug/space_drugs = 1)
icon_state = "mushroom_stem"
seed = /obj/item/seeds/lavaland/ember
wine_power = 60
/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit
name = "cactus fruit"
- list_reagents = list("vitamin" = 2, "nutriment" = 2, "vitfro" = 6)
+ list_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/vitfro = 6)
desc = "A cactus fruit covered in a thick, reddish skin. And some ash."
icon_state = "cactus_fruit"
seed = /obj/item/seeds/lavaland/cactus
@@ -218,7 +218,7 @@
else if(contents.len >= 20)
to_chat(user, "You can't add more ingredients to [src]!")
else
- if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad?
+ if(reagents.has_reagent(/datum/reagent/water, 10)) //are we starting a soup or a salad?
var/obj/item/reagent_containers/food/snacks/customizable/A = new/obj/item/reagent_containers/food/snacks/customizable/soup/ashsoup(get_turf(src))
A.initialize_custom_food(src, S, user)
else
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 2df14152db..11190009cc 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -559,7 +559,7 @@
/obj/item/reagent_containers/glass/bottle/potion/flight
name = "strange elixir"
desc = "A flask with an almost-holy aura emitting from it. The label on the bottle says: 'erqo'hyy tvi'rf lbh jv'atf'."
- list_reagents = list("flightpotion" = 5)
+ list_reagents = list(/datum/reagent/flightpotion = 5)
/obj/item/reagent_containers/glass/bottle/potion/update_icon()
if(reagents.total_volume)
@@ -569,7 +569,6 @@
/datum/reagent/flightpotion
name = "Flight Potion"
- id = "flightpotion"
description = "Strange mutagenic compound of unknown origins."
reagent_state = LIQUID
color = "#FFEBEB"
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index c3a33f36f5..291664ce3e 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -358,7 +358,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
icon_state = "coin_gold_heads"
value = 50
materials = list(MAT_GOLD = MINERAL_MATERIAL_AMOUNT*0.2)
- grind_results = list("gold" = 4)
+ grind_results = list(/datum/reagent/gold = 4)
/obj/item/coin/silver
name = "silver coin"
@@ -366,7 +366,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
icon_state = "coin_silver_heads"
value = 20
materials = list(MAT_SILVER = MINERAL_MATERIAL_AMOUNT*0.2)
- grind_results = list("silver" = 4)
+ grind_results = list(/datum/reagent/silver = 4)
/obj/item/coin/diamond
name = "diamond coin"
@@ -374,7 +374,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
icon_state = "coin_diamond_heads"
value = 500
materials = list(MAT_DIAMOND = MINERAL_MATERIAL_AMOUNT*0.2)
- grind_results = list("carbon" = 4)
+ grind_results = list(/datum/reagent/carbon = 4)
/obj/item/coin/iron
name = "iron coin"
@@ -382,7 +382,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
icon_state = "coin_iron_heads"
value = 1
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2)
- grind_results = list("iron" = 4)
+ grind_results = list(/datum/reagent/iron = 4)
/obj/item/coin/plasma
name = "plasma coin"
@@ -390,7 +390,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
icon_state = "coin_plasma_heads"
value = 100
materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT*0.2)
- grind_results = list("plasma" = 4)
+ grind_results = list(/datum/reagent/toxin/plasma = 4)
/obj/item/coin/uranium
name = "uranium coin"
@@ -398,7 +398,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
icon_state = "coin_uranium_heads"
value = 80
materials = list(MAT_URANIUM = MINERAL_MATERIAL_AMOUNT*0.2)
- grind_results = list("uranium" = 4)
+ grind_results = list(/datum/reagent/uranium = 4)
/obj/item/coin/bananium
name = "bananium coin"
@@ -406,7 +406,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
icon_state = "coin_bananium_heads"
value = 1000 //makes the clown cry
materials = list(MAT_BANANIUM = MINERAL_MATERIAL_AMOUNT*0.2)
- grind_results = list("banana" = 4)
+ grind_results = list(/datum/reagent/consumable/banana = 4)
/obj/item/coin/adamantine
name = "adamantine coin"
@@ -427,7 +427,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
sideslist = list("heads")
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2)
value = 1
- grind_results = list("iron" = 4)
+ grind_results = list(/datum/reagent/iron = 4)
/obj/item/coin/antagtoken
name = "antag token"
@@ -436,7 +436,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
desc = "A novelty coin that helps the heart know what hard evidence cannot prove."
sideslist = list("valid", "salad")
value = 0
- grind_results = list("sodiumchloride" = 4)
+ grind_results = list(/datum/reagent/consumable/sodiumchloride = 4)
/obj/item/coin/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/stack/cable_coil))
diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm
index 8195b3d84b..ade8158e02 100644
--- a/code/modules/mob/living/blood.dm
+++ b/code/modules/mob/living/blood.dm
@@ -155,7 +155,7 @@
if(iscarbon(AM))
var/mob/living/carbon/C = AM
if(blood_id == C.get_blood_id())//both mobs have the same blood substance
- if(blood_id == "blood" || blood_id == "jellyblood") //normal blood
+ if(blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) //normal blood
if(blood_data["viruses"])
for(var/thing in blood_data["viruses"])
var/datum/disease/D = thing
@@ -175,7 +175,7 @@
return
/mob/living/carbon/get_blood_data(blood_id)
- if(blood_id == "blood" || blood_id == "jellyblood") //actual blood reagent
+ if(blood_id == /datum/reagent/blood || /datum/reagent/blood/jellyblood) //actual blood reagent
var/blood_data = list()
//set the blood data
blood_data["donor"] = src
@@ -191,7 +191,7 @@
blood_data["resistances"] = disease_resistances.Copy()
var/list/temp_chem = list()
for(var/datum/reagent/R in reagents.reagent_list)
- temp_chem[R.id] = R.volume
+ temp_chem[R.type] = R.volume
blood_data["trace_chem"] = list2params(temp_chem)
if(mind)
blood_data["mind"] = mind
@@ -226,21 +226,21 @@
/mob/living/simple_animal/get_blood_id()
if(blood_volume)
- return "blood"
+ return /datum/reagent/blood
/mob/living/carbon/monkey/get_blood_id()
if(!(HAS_TRAIT(src, TRAIT_NOCLONE)))
- return "blood"
+ return /datum/reagent/blood
/mob/living/carbon/get_blood_id()
if(isjellyperson(src))
- return "jellyblood"
+ return /datum/reagent/blood/jellyblood
if(dna?.species?.exotic_blood)
return dna.species.exotic_blood
else if((NOBLOOD in dna.species.species_traits) || (HAS_TRAIT(src, TRAIT_NOCLONE)))
return
else
- return "blood"
+ return /datum/reagent/blood
// This is has more potential uses, and is probably faster than the old proc.
/proc/get_safe_blood(bloodtype)
diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm
index d1ace36b8c..4ed539adc2 100644
--- a/code/modules/mob/living/bloodcrawl.dm
+++ b/code/modules/mob/living/bloodcrawl.dm
@@ -73,7 +73,7 @@
if(victim.stat == CONSCIOUS)
src.visible_message("[victim] kicks free of the blood pool just before entering it!", null, "You hear splashing and struggling.")
- else if(victim.reagents && victim.reagents.has_reagent("demonsblood"))
+ else if(victim.reagents && victim.reagents.has_reagent(/datum/reagent/consumable/ethanol/demonsblood))
visible_message("Something prevents [victim] from entering the pool!", "A strange force is blocking [victim] from entering!", "You hear a splash and a thud.")
else
victim.forceMove(src)
@@ -104,7 +104,7 @@
if(!victim)
return FALSE
- if(victim.reagents && victim.reagents.has_reagent("devilskiss"))
+ if(victim.reagents && victim.reagents.has_reagent(/datum/reagent/consumable/ethanol/devilskiss))
to_chat(src, "AAH! THEIR FLESH! IT BURNS!")
adjustBruteLoss(25) //I can't use adjustHealth() here because bloodcrawl affects /mob/living and adjustHealth() only affects simple mobs
var/found_bloodpool = FALSE
diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm
index 48e79a9050..f2ea4f2b01 100644
--- a/code/modules/mob/living/brain/brain_item.dm
+++ b/code/modules/mob/living/brain/brain_item.dm
@@ -102,16 +102,16 @@
if(istype(O, /obj/item/organ_storage)) //BUG_PROBABLE_CAUSE
return //Borg organ bags shouldn't be killing brains
- if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent("neurine")) //Neurine fixes dead brains
+ if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/neurine)) //Neurine fixes dead brains
. = TRUE //don't do attack animation.
var/cached_Bdamage = brainmob?.health
- var/datum/reagent/medicine/neurine/N = reagents.has_reagent("neurine")
- var/datum/reagent/medicine/mannitol/M1 = reagents.has_reagent("mannitol")
+ var/datum/reagent/medicine/neurine/N = reagents.has_reagent(/datum/reagent/medicine/neurine)
+ var/datum/reagent/medicine/mannitol/M1 = reagents.has_reagent(/datum/reagent/medicine/mannitol)
- if(O.reagents.has_reagent("mannitol"))//Just a quick way to bolster the effects if someone mixes up a batch.
+ if(O.reagents.has_reagent(/datum/reagent/medicine/mannitol))//Just a quick way to bolster the effects if someone mixes up a batch.
N.volume *= (M1.volume*0.5)
- if(!O.reagents.has_reagent("neurine", 10))
+ if(!O.reagents.has_reagent(/datum/reagent/medicine/neurine, 10))
to_chat(user, "There's not enough neurine in [O] to restore [src]!")
return
@@ -134,14 +134,14 @@
gain_trauma_type(BRAIN_TRAUMA_SPECIAL)
return
- if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent("mannitol")) //attempt to heal the brain
+ if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/mannitol)) //attempt to heal the brain
. = TRUE //don't do attack animation.
- var/datum/reagent/medicine/mannitol/M = reagents.has_reagent("mannitol")
+ var/datum/reagent/medicine/mannitol/M = reagents.has_reagent(/datum/reagent/medicine/mannitol)
if(brain_death || brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing
to_chat(user, "[src] is far too damaged, you'll have to use neurine on it!")
return
- if(!O.reagents.has_reagent("mannitol", 10))
+ if(!O.reagents.has_reagent(/datum/reagent/medicine/mannitol, 10))
to_chat(user, "There's not enough mannitol in [O] to restore [src]!")
return
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index e4e8f06cfa..35751e4b86 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -27,7 +27,7 @@
/obj/item/organ/alien/prepare_eat()
var/obj/S = ..()
- S.reagents.add_reagent("sacid", 10)
+ S.reagents.add_reagent(/datum/reagent/toxin/acid, 10)
return S
@@ -46,7 +46,7 @@
/obj/item/organ/alien/plasmavessel/prepare_eat()
var/obj/S = ..()
- S.reagents.add_reagent("plasma", storedPlasma/10)
+ S.reagents.add_reagent(/datum/reagent/toxin/plasma, storedPlasma/10)
return S
/obj/item/organ/alien/plasmavessel/large
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index c08fe4f582..e74f2e54a9 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -18,7 +18,7 @@
/obj/item/organ/body_egg/alien_embryo/prepare_eat()
var/obj/S = ..()
- S.reagents.add_reagent("sacid", 10)
+ S.reagents.add_reagent(/datum/reagent/toxin/acid, 10)
return S
/obj/item/organ/body_egg/alien_embryo/on_life()
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 998fd3770f..2d58eb6a7e 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -1,991 +1,991 @@
-/mob/living/carbon
- blood_volume = BLOOD_VOLUME_NORMAL
-
-/mob/living/carbon/Initialize()
- . = ..()
- create_reagents(1000)
- update_body_parts() //to update the carbon's new bodyparts appearance
- GLOB.carbon_list += src
- blood_volume = (BLOOD_VOLUME_NORMAL * blood_ratio)
-
-/mob/living/carbon/Destroy()
- //This must be done first, so the mob ghosts correctly before DNA etc is nulled
- . = ..()
-
- QDEL_LIST(internal_organs)
- QDEL_LIST(stomach_contents)
- QDEL_LIST(bodyparts)
- QDEL_LIST(implants)
- remove_from_all_data_huds()
- QDEL_NULL(dna)
- GLOB.carbon_list -= src
-
-/mob/living/carbon/initialize_footstep()
- AddComponent(/datum/component/footstep, 0.6, 2)
-
-/mob/living/carbon/relaymove(mob/user, direction)
- if(user in src.stomach_contents)
- if(prob(40))
- if(prob(25))
- audible_message("You hear something rumbling inside [src]'s stomach...", \
- "You hear something rumbling.", 4,\
- "Something is rumbling inside your stomach!")
- var/obj/item/I = user.get_active_held_item()
- if(I && I.force)
- var/d = rand(round(I.force / 4), I.force)
- var/obj/item/bodypart/BP = get_bodypart(BODY_ZONE_CHEST)
- if(BP.receive_damage(d, 0))
- update_damage_overlays()
- visible_message("[user] attacks [src]'s stomach wall with the [I.name]!", \
- "[user] attacks your stomach wall with the [I.name]!")
- playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1)
-
- if(prob(src.getBruteLoss() - 50))
- for(var/atom/movable/A in stomach_contents)
- A.forceMove(drop_location())
- stomach_contents.Remove(A)
- src.gib()
-
-
-/mob/living/carbon/swap_hand(held_index)
- if(!held_index)
- held_index = (active_hand_index % held_items.len)+1
-
- var/obj/item/item_in_hand = src.get_active_held_item()
- if(item_in_hand) //this segment checks if the item in your hand is twohanded.
- var/obj/item/twohanded/TH = item_in_hand
- if(istype(TH))
- if(TH.wielded == 1)
- to_chat(usr, "Your other hand is too busy holding [TH]")
- return
- var/oindex = active_hand_index
- active_hand_index = held_index
- if(hud_used)
- var/obj/screen/inventory/hand/H
- H = hud_used.hand_slots["[oindex]"]
- if(H)
- H.update_icon()
- H = hud_used.hand_slots["[held_index]"]
- if(H)
- H.update_icon()
-
-
-/mob/living/carbon/activate_hand(selhand) //l/r OR 1-held_items.len
- if(!selhand)
- selhand = (active_hand_index % held_items.len)+1
-
- if(istext(selhand))
- selhand = lowertext(selhand)
- if(selhand == "right" || selhand == "r")
- selhand = 2
- if(selhand == "left" || selhand == "l")
- selhand = 1
-
- if(selhand != active_hand_index)
- swap_hand(selhand)
- else
- mode() // Activate held item
-
-/mob/living/carbon/attackby(obj/item/I, mob/user, params)
- if(lying && surgeries.len)
- if(user != src && (user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM))
- for(var/datum/surgery/S in surgeries)
- if(S.next_step(user,user.a_intent))
- return 1
- return ..()
-
-/mob/living/carbon/throw_impact(atom/hit_atom, throwingdatum)
- . = ..()
- var/hurt = TRUE
- if(istype(throwingdatum, /datum/thrownthing))
- var/datum/thrownthing/D = throwingdatum
- if(iscyborg(D.thrower))
- var/mob/living/silicon/robot/R = D.thrower
- if(!R.emagged)
- hurt = FALSE
- if(hit_atom.density && isturf(hit_atom))
- if(hurt)
- Knockdown(20)
- take_bodypart_damage(10)
- if(iscarbon(hit_atom) && hit_atom != src)
- var/mob/living/carbon/victim = hit_atom
- if(victim.movement_type & FLYING)
- return
- if(hurt)
- victim.take_bodypart_damage(10)
- take_bodypart_damage(10)
- victim.Knockdown(20)
- Knockdown(20)
- visible_message("[src] crashes into [victim], knocking them both over!",\
- "You violently crash into [victim]!")
- playsound(src,'sound/weapons/punch1.ogg',50,1)
-
-
-//Throwing stuff
-/mob/living/carbon/proc/toggle_throw_mode()
- if(stat)
- return
- if(in_throw_mode)
- throw_mode_off()
- else
- throw_mode_on()
-
-
-/mob/living/carbon/proc/throw_mode_off()
- in_throw_mode = 0
- if(client && hud_used)
- hud_used.throw_icon.icon_state = "act_throw_off"
-
-
-/mob/living/carbon/proc/throw_mode_on()
- in_throw_mode = 1
- if(client && hud_used)
- hud_used.throw_icon.icon_state = "act_throw_on"
-
-/mob/proc/throw_item(atom/target)
- SEND_SIGNAL(src, COMSIG_MOB_THROW, target)
- return
-
-/mob/living/carbon/throw_item(atom/target)
- throw_mode_off()
- if(!target || !isturf(loc))
- return
- if(istype(target, /obj/screen))
- return
-
- //CIT CHANGES - makes it impossible to throw while in stamina softcrit
- if(getStaminaLoss() >= STAMINA_SOFTCRIT)
- to_chat(src, "You're too exhausted.")
- return
- var/random_turn = a_intent == INTENT_HARM
- //END OF CIT CHANGES
-
- var/obj/item/I = src.get_active_held_item()
-
- var/atom/movable/thrown_thing
- var/mob/living/throwable_mob
-
- if(istype(I, /obj/item/clothing/head/mob_holder))
- var/obj/item/clothing/head/mob_holder/holder = I
- if(holder.held_mob)
- throwable_mob = holder.held_mob
- holder.release()
-
- if(!I || throwable_mob)
- if(!throwable_mob && pulling && isliving(pulling) && grab_state >= GRAB_AGGRESSIVE)
- throwable_mob = pulling
-
- if(throwable_mob && !throwable_mob.buckled)
- thrown_thing = throwable_mob
- if(pulling)
- stop_pulling()
- if(HAS_TRAIT(src, TRAIT_PACIFISM))
- to_chat(src, "You gently let go of [throwable_mob].")
- return
-
- adjustStaminaLossBuffered(25)//CIT CHANGE - throwing an entire person shall be very tiring
- var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
- var/turf/end_T = get_turf(target)
- if(start_T && end_T)
- log_combat(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]")
-
- else if(!CHECK_BITFIELD(I.item_flags, ABSTRACT) && !HAS_TRAIT(I, TRAIT_NODROP))
- thrown_thing = I
- dropItemToGround(I)
-
- if(HAS_TRAIT(src, TRAIT_PACIFISM) && I.throwforce)
- to_chat(src, "You set [I] down gently on the ground.")
- return
-
- adjustStaminaLossBuffered(I.getweight()*2)//CIT CHANGE - throwing items shall be more tiring than swinging em. Doubly so.
-
- if(thrown_thing)
- visible_message("[src] has thrown [thrown_thing].")
- src.log_message("has thrown [thrown_thing]", LOG_ATTACK)
- do_attack_animation(target, no_effect = 1)
- playsound(loc, 'sound/weapons/punchmiss.ogg', 50, 1, -1)
- newtonian_move(get_dir(target, src))
- thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src, null, null, null, random_turn)
-
-
-
-/mob/living/carbon/restrained(ignore_grab)
- . = (handcuffed || (!ignore_grab && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE))
-
-/mob/living/carbon/proc/canBeHandcuffed()
- return 0
-
-
-/mob/living/carbon/show_inv(mob/user)
- user.set_machine(src)
- var/dat = {"
-
- [name]
-
-
Head: [(head && !(head.item_flags & ABSTRACT)) ? head : "Nothing"]
-
Mask: [(wear_mask && !(wear_mask.item_flags & ABSTRACT)) ? wear_mask : "Nothing"]
-
Neck: [(wear_neck && !(wear_neck.item_flags & ABSTRACT)) ? wear_neck : "Nothing"]"}
-
- for(var/i in 1 to held_items.len)
- var/obj/item/I = get_item_for_held_index(i)
- dat += "
[get_held_index_name(i)]:[(I && !(I.item_flags & ABSTRACT)) ? I : "Nothing"]"
-
- dat += " Back: [back ? back : "Nothing"]"
-
- if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/tank))
- dat += " [internal ? "Disable Internals" : "Set Internals"]"
-
- if(handcuffed)
- dat += " Handcuffed"
- if(legcuffed)
- dat += " Legcuffed"
-
- dat += {"
-
- Close
- "}
- user << browse(dat, "window=mob[REF(src)];size=325x500")
- onclose(user, "mob[REF(src)]")
-
-/mob/living/carbon/Topic(href, href_list)
- ..()
- //strip panel
- if(usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
- if(href_list["internal"])
- var/slot = text2num(href_list["internal"])
- var/obj/item/ITEM = get_item_by_slot(slot)
- if(ITEM && istype(ITEM, /obj/item/tank) && wear_mask && (wear_mask.clothing_flags & ALLOWINTERNALS))
- visible_message("[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM.name].", \
- "[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM.name].")
- if(do_mob(usr, src, POCKET_STRIP_DELAY))
- if(internal)
- internal = null
- update_internals_hud_icon(0)
- else if(ITEM && istype(ITEM, /obj/item/tank))
- if((wear_mask && (wear_mask.clothing_flags & ALLOWINTERNALS)) || getorganslot(ORGAN_SLOT_BREATHING_TUBE))
- internal = ITEM
- update_internals_hud_icon(1)
-
- visible_message("[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM.name].", \
- "[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM.name].")
-
-
-/mob/living/carbon/fall(forced)
- loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing
-
-/mob/living/carbon/is_muzzled()
- return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
-
-/mob/living/carbon/hallucinating()
- if(hallucination)
- return TRUE
- else
- return FALSE
-
-/mob/living/carbon/resist_buckle()
- if(restrained())
- changeNext_move(CLICK_CD_BREAKOUT)
- last_special = world.time + CLICK_CD_BREAKOUT
- var/buckle_cd = 600
- if(handcuffed)
- var/obj/item/restraints/O = src.get_item_by_slot(SLOT_HANDCUFFED)
- buckle_cd = O.breakouttime
- visible_message("[src] attempts to unbuckle [p_them()]self!", \
- "You attempt to unbuckle yourself... (This will take around [round(buckle_cd/600,1)] minute\s, and you need to stay still.)")
- if(do_after(src, buckle_cd, 0, target = src))
- if(!buckled)
- return
- buckled.user_unbuckle_mob(src,src)
- else
- if(src && buckled)
- to_chat(src, "You fail to unbuckle yourself!")
- else
- buckled.user_unbuckle_mob(src,src)
-
-/mob/living/carbon/resist_fire()
- fire_stacks -= 5
- Knockdown(60, TRUE, TRUE)
- spin(32,2)
- visible_message("[src] rolls on the floor, trying to put [p_them()]self out!", \
- "You stop, drop, and roll!")
- sleep(30)
- if(fire_stacks <= 0)
- visible_message("[src] has successfully extinguished [p_them()]self!", \
- "You extinguish yourself.")
- ExtinguishMob()
- return
-
-/mob/living/carbon/resist_restraints()
- var/obj/item/I = null
- var/type = 0
- if(handcuffed)
- I = handcuffed
- type = 1
- else if(legcuffed)
- I = legcuffed
- type = 2
- if(I)
- if(type == 1)
- changeNext_move(CLICK_CD_BREAKOUT)
- last_special = world.time + CLICK_CD_BREAKOUT
- if(type == 2)
- changeNext_move(CLICK_CD_RANGE)
- last_special = world.time + CLICK_CD_RANGE
- cuff_resist(I)
-
-
-/mob/living/carbon/proc/cuff_resist(obj/item/I, breakouttime = 600, cuff_break = 0)
- if(I.item_flags & BEING_REMOVED)
- to_chat(src, "You're already attempting to remove [I]!")
- return
- I.item_flags |= BEING_REMOVED
- breakouttime = I.breakouttime
- if(!cuff_break)
- visible_message("[src] attempts to remove [I]!")
- to_chat(src, "You attempt to remove [I]... (This will take around [DisplayTimeText(breakouttime)] and you need to stand still.)")
- if(do_after(src, breakouttime, 0, target = src))
- clear_cuffs(I, cuff_break)
- else
- to_chat(src, "You fail to remove [I]!")
-
- else if(cuff_break == FAST_CUFFBREAK)
- breakouttime = 50
- visible_message("[src] is trying to break [I]!")
- to_chat(src, "You attempt to break [I]... (This will take around 5 seconds and you need to stand still.)")
- if(do_after(src, breakouttime, 0, target = src))
- clear_cuffs(I, cuff_break)
- else
- to_chat(src, "You fail to break [I]!")
-
- else if(cuff_break == INSTANT_CUFFBREAK)
- clear_cuffs(I, cuff_break)
- I.item_flags &= ~BEING_REMOVED
-
-/mob/living/carbon/proc/uncuff()
- if (handcuffed)
- var/obj/item/W = handcuffed
- handcuffed = null
- if (buckled && buckled.buckle_requires_restraints)
- buckled.unbuckle_mob(src)
- update_handcuffed()
- if (client)
- client.screen -= W
- if (W)
- W.forceMove(drop_location())
- W.dropped(src)
- if (W)
- W.layer = initial(W.layer)
- W.plane = initial(W.plane)
- changeNext_move(0)
- if (legcuffed)
- var/obj/item/W = legcuffed
- legcuffed = null
- update_inv_legcuffed()
- if (client)
- client.screen -= W
- if (W)
- W.forceMove(drop_location())
- W.dropped(src)
- if (W)
- W.layer = initial(W.layer)
- W.plane = initial(W.plane)
- changeNext_move(0)
-
-/mob/living/carbon/proc/clear_cuffs(obj/item/I, cuff_break)
- if(!I.loc || buckled)
- return
- visible_message("[src] manages to [cuff_break ? "break" : "remove"] [I]!")
- to_chat(src, "You successfully [cuff_break ? "break" : "remove"] [I].")
-
- if(cuff_break)
- . = !((I == handcuffed) || (I == legcuffed))
- qdel(I)
- return
-
- else
- if(I == handcuffed)
- handcuffed.forceMove(drop_location())
- handcuffed.dropped(src)
- handcuffed = null
- if(buckled && buckled.buckle_requires_restraints)
- buckled.unbuckle_mob(src)
- update_handcuffed()
- return
- if(I == legcuffed)
- legcuffed.forceMove(drop_location())
- legcuffed.dropped()
- legcuffed = null
- update_inv_legcuffed()
- return
- else
- dropItemToGround(I)
- return
- return TRUE
-
-/mob/living/carbon/get_standard_pixel_y_offset(lying = 0)
- if(lying)
- return -6
- else
- return initial(pixel_y)
-
-/mob/living/carbon/proc/accident(obj/item/I)
- if(!I || (I.item_flags & ABSTRACT) || HAS_TRAIT(I, TRAIT_NODROP))
- return
-
- //dropItemToGround(I) CIT CHANGE - makes it so the item doesn't drop if the modifier rolls above 100
-
- var/modifier = 0
-
- if(HAS_TRAIT(src, TRAIT_CLUMSY))
- modifier -= 40 //Clumsy people are more likely to hit themselves -Honk!
-
- //CIT CHANGES START HERE
- else if(combatmode)
- modifier += 50
-
- if(modifier < 100)
- dropItemToGround(I)
- //END OF CIT CHANGES
-
- switch(rand(1,100)+modifier) //91-100=Nothing special happens
- if(-INFINITY to 0) //attack yourself
- I.attack(src,src)
- if(1 to 30) //throw it at yourself
- I.throw_impact(src)
- if(31 to 60) //Throw object in facing direction
- var/turf/target = get_turf(loc)
- var/range = rand(2,I.throw_range)
- for(var/i = 1; i < range; i++)
- var/turf/new_turf = get_step(target, dir)
- target = new_turf
- if(new_turf.density)
- break
- I.throw_at(target,I.throw_range,I.throw_speed,src)
- if(61 to 90) //throw it down to the floor
- var/turf/target = get_turf(loc)
- I.throw_at(target,I.throw_range,I.throw_speed,src)
-
-/mob/living/carbon/Stat()
- ..()
- if(statpanel("Status"))
- var/obj/item/organ/alien/plasmavessel/vessel = getorgan(/obj/item/organ/alien/plasmavessel)
- if(vessel)
- stat(null, "Plasma Stored: [vessel.storedPlasma]/[vessel.max_plasma]")
- if(locate(/obj/item/assembly/health) in src)
- stat(null, "Health: [health]")
-
- add_abilities_to_panel()
-
-/mob/living/carbon/attack_ui(slot)
- if(!has_hand_for_held_index(active_hand_index))
- return 0
- return ..()
-
-/mob/living/carbon/proc/vomit(lost_nutrition = 10, blood = FALSE, stun = TRUE, distance = 1, message = TRUE, toxic = FALSE)
- if(HAS_TRAIT(src, TRAIT_NOHUNGER))
- return 1
-
- if(nutrition < 100 && !blood)
- if(message)
- visible_message("[src] dry heaves!", \
- "You try to throw up, but there's nothing in your stomach!")
- if(stun)
- Knockdown(200)
- return 1
-
- if(is_mouth_covered()) //make this add a blood/vomit overlay later it'll be hilarious
- if(message)
- visible_message("[src] throws up all over [p_them()]self!", \
- "You throw up all over yourself!")
- SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "vomit", /datum/mood_event/vomitself)
- distance = 0
- else
- if(message)
- visible_message("[src] throws up!", "You throw up!")
- if(!isflyperson(src))
- SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "vomit", /datum/mood_event/vomit)
- if(stun)
- Stun(80)
-
- playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1)
- var/turf/T = get_turf(src)
- if(!blood)
- nutrition -= lost_nutrition
- adjustToxLoss(-3)
- for(var/i=0 to distance)
- if(blood)
- if(T)
- add_splatter_floor(T)
- if(stun)
- adjustBruteLoss(3)
- else if(src.reagents.has_reagent("blazaam"))
- if(T)
- T.add_vomit_floor(src, VOMIT_PURPLE)
- else
- if(T)
- T.add_vomit_floor(src, VOMIT_TOXIC)//toxic barf looks different
- T = get_step(T, dir)
- if (is_blocked_turf(T))
- break
- return 1
-
-/mob/living/carbon/proc/spew_organ(power = 5, amt = 1)
- for(var/i in 1 to amt)
- if(!internal_organs.len)
- break //Guess we're out of organs!
- var/obj/item/organ/guts = pick(internal_organs)
- var/turf/T = get_turf(src)
- guts.Remove(src)
- guts.forceMove(T)
- var/atom/throw_target = get_edge_target_turf(guts, dir)
- guts.throw_at(throw_target, power, 4, src)
-
-
-/mob/living/carbon/fully_replace_character_name(oldname,newname)
- ..()
- if(dna)
- dna.real_name = real_name
-
-//Updates the mob's health from bodyparts and mob damage variables
-/mob/living/carbon/updatehealth()
- if(status_flags & GODMODE)
- return
- var/total_burn = 0
- var/total_brute = 0
- var/total_stamina = 0
- for(var/X in bodyparts) //hardcoded to streamline things a bit
- var/obj/item/bodypart/BP = X
- total_brute += (BP.brute_dam * BP.body_damage_coeff)
- total_burn += (BP.burn_dam * BP.body_damage_coeff)
- total_stamina += (BP.stamina_dam * BP.stam_damage_coeff)
- health = round(maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute, DAMAGE_PRECISION)
- staminaloss = round(total_stamina, DAMAGE_PRECISION)
- update_stat()
- if(((maxHealth - total_burn) < HEALTH_THRESHOLD_DEAD) && stat == DEAD )
- become_husk("burn")
- med_hud_set_health()
- if(stat == SOFT_CRIT)
- add_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE, multiplicative_slowdown = SOFTCRIT_ADD_SLOWDOWN)
- else
- remove_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE)
-
-/mob/living/carbon/update_stamina()
- var/stam = getStaminaLoss()
- if(stam > DAMAGE_PRECISION)
- var/total_health = (health - stam)
- if(total_health <= crit_threshold && !stat)
- if(!IsKnockdown())
- to_chat(src, "You're too exhausted to keep going...")
- Knockdown(100)
- update_health_hud()
-
-/mob/living/carbon/update_sight()
- if(!client)
- return
- if(stat == DEAD)
- sight = (SEE_TURFS|SEE_MOBS|SEE_OBJS)
- see_in_dark = 8
- see_invisible = SEE_INVISIBLE_OBSERVER
- return
-
- sight = initial(sight)
- lighting_alpha = initial(lighting_alpha)
- var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES)
- if(!E)
- update_tint()
- else
- see_invisible = E.see_invisible
- see_in_dark = E.see_in_dark
- sight |= E.sight_flags
- if(!isnull(E.lighting_alpha))
- lighting_alpha = E.lighting_alpha
- if(HAS_TRAIT(src, TRAIT_NIGHT_VISION))
- lighting_alpha = min(LIGHTING_PLANE_ALPHA_NV_TRAIT, lighting_alpha)
- see_in_dark = max(NIGHT_VISION_DARKSIGHT_RANGE, see_in_dark)
-
- if(client.eye && client.eye != src)
- var/atom/A = client.eye
- if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates.
- return
-
- if(glasses)
- var/obj/item/clothing/glasses/G = glasses
- sight |= G.vision_flags
- see_in_dark = max(G.darkness_view, see_in_dark)
- if(G.invis_override)
- see_invisible = G.invis_override
- else
- see_invisible = min(G.invis_view, see_invisible)
- if(!isnull(G.lighting_alpha))
- lighting_alpha = min(lighting_alpha, G.lighting_alpha)
- if(dna)
- for(var/X in dna.mutations)
- var/datum/mutation/M = X
- if(M.name == XRAY)
- sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS)
- see_in_dark = max(see_in_dark, 8)
-
- if(see_override)
- see_invisible = see_override
- . = ..()
-
-
-//to recalculate and update the mob's total tint from tinted equipment it's wearing.
-/mob/living/carbon/proc/update_tint()
- if(!GLOB.tinted_weldhelh)
- return
- tinttotal = get_total_tint()
- if(tinttotal >= TINT_BLIND)
- become_blind(EYES_COVERED)
- else if(tinttotal >= TINT_DARKENED)
- cure_blind(EYES_COVERED)
- overlay_fullscreen("tint", /obj/screen/fullscreen/impaired, 2)
- else
- cure_blind(EYES_COVERED)
- clear_fullscreen("tint", 0)
-
-/mob/living/carbon/proc/get_total_tint()
- . = 0
- if(istype(head, /obj/item/clothing/head))
- var/obj/item/clothing/head/HT = head
- . += HT.tint
- if(wear_mask)
- . += wear_mask.tint
-
- var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES)
- if(E)
- . += E.tint
-
- else
- . += INFINITY
-
-/mob/living/carbon/get_permeability_protection(list/target_zones = list(HANDS,CHEST,GROIN,LEGS,FEET,ARMS,HEAD))
- var/list/tally = list()
- for(var/obj/item/I in get_equipped_items())
- for(var/zone in target_zones)
- if(I.body_parts_covered & zone)
- tally["[zone]"] = max(1 - I.permeability_coefficient, target_zones["[zone]"])
- var/protection = 0
- for(var/key in tally)
- protection += tally[key]
- protection *= INVERSE(target_zones.len)
- return protection
-
-//this handles hud updates
-/mob/living/carbon/update_damage_hud()
-
- if(!client)
- return
-
- if(health <= crit_threshold)
- var/severity = 0
- switch(health)
- if(-20 to -10)
- severity = 1
- if(-30 to -20)
- severity = 2
- if(-40 to -30)
- severity = 3
- if(-50 to -40)
- severity = 4
- if(-50 to -40)
- severity = 5
- if(-60 to -50)
- severity = 6
- if(-70 to -60)
- severity = 7
- if(-90 to -70)
- severity = 8
- if(-95 to -90)
- severity = 9
- if(-INFINITY to -95)
- severity = 10
- if(!InFullCritical())
- var/visionseverity = 4
- switch(health)
- if(-8 to -4)
- visionseverity = 5
- if(-12 to -8)
- visionseverity = 6
- if(-16 to -12)
- visionseverity = 7
- if(-20 to -16)
- visionseverity = 8
- if(-24 to -20)
- visionseverity = 9
- if(-INFINITY to -24)
- visionseverity = 10
- overlay_fullscreen("critvision", /obj/screen/fullscreen/crit/vision, visionseverity)
- else
- clear_fullscreen("critvision")
- overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity)
- else
- clear_fullscreen("crit")
- clear_fullscreen("critvision")
-
- //Oxygen damage overlay
- var/windedup = getOxyLoss() + getStaminaLoss() * 0.2
- if(windedup)
- var/severity = 0
- switch(windedup)
- if(10 to 20)
- severity = 1
- if(20 to 25)
- severity = 2
- if(25 to 30)
- severity = 3
- if(30 to 35)
- severity = 4
- if(35 to 40)
- severity = 5
- if(40 to 45)
- severity = 6
- if(45 to INFINITY)
- severity = 7
- overlay_fullscreen("oxy", /obj/screen/fullscreen/oxy, severity)
- else
- clear_fullscreen("oxy")
-
- //Fire and Brute damage overlay (BSSR)
- var/hurtdamage = getBruteLoss() + getFireLoss() + damageoverlaytemp
- if(hurtdamage)
- var/severity = 0
- switch(hurtdamage)
- if(5 to 15)
- severity = 1
- if(15 to 30)
- severity = 2
- if(30 to 45)
- severity = 3
- if(45 to 70)
- severity = 4
- if(70 to 85)
- severity = 5
- if(85 to INFINITY)
- severity = 6
- overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
- else
- clear_fullscreen("brute")
-
-/mob/living/carbon/update_health_hud(shown_health_amount)
- if(!client || !hud_used)
- return
- if(hud_used.healths)
- if(stat != DEAD)
- . = 1
- if(!shown_health_amount)
- shown_health_amount = health
- if(shown_health_amount >= maxHealth)
- hud_used.healths.icon_state = "health0"
- else if(shown_health_amount > maxHealth*0.8)
- hud_used.healths.icon_state = "health1"
- else if(shown_health_amount > maxHealth*0.6)
- hud_used.healths.icon_state = "health2"
- else if(shown_health_amount > maxHealth*0.4)
- hud_used.healths.icon_state = "health3"
- else if(shown_health_amount > maxHealth*0.2)
- hud_used.healths.icon_state = "health4"
- else if(shown_health_amount > 0)
- hud_used.healths.icon_state = "health5"
- else
- hud_used.healths.icon_state = "health6"
- else
- hud_used.healths.icon_state = "health7"
-
-/mob/living/carbon/proc/update_internals_hud_icon(internal_state = 0)
- if(hud_used && hud_used.internals)
- hud_used.internals.icon_state = "internal[internal_state]"
-
-/mob/living/carbon/update_stat()
- if(status_flags & GODMODE)
- return
- if(stat != DEAD)
- if(health <= HEALTH_THRESHOLD_DEAD && !HAS_TRAIT(src, TRAIT_NODEATH))
- death()
- return
- if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !HAS_TRAIT(src, TRAIT_NOHARDCRIT)))
- stat = UNCONSCIOUS
- blind_eyes(1)
- if(combatmode)
- toggle_combat_mode(TRUE, TRUE)
- else
- if(health <= crit_threshold && !HAS_TRAIT(src, TRAIT_NOSOFTCRIT))
- stat = SOFT_CRIT
- if(combatmode)
- toggle_combat_mode(TRUE, TRUE)
- else
- stat = CONSCIOUS
- adjust_blindness(-1)
- update_canmove()
- update_damage_hud()
- update_health_hud()
- med_hud_set_status()
-
-//called when we get cuffed/uncuffed
-/mob/living/carbon/proc/update_handcuffed()
- if(handcuffed)
- drop_all_held_items()
- stop_pulling()
- throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = src.handcuffed)
- if(handcuffed.demoralize_criminals)
- SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "handcuffed", /datum/mood_event/handcuffed)
- else
- clear_alert("handcuffed")
- SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "handcuffed")
- update_action_buttons_icon() //some of our action buttons might be unusable when we're handcuffed.
- update_inv_handcuffed()
- update_hud_handcuffed()
-
-/mob/living/carbon/fully_heal(admin_revive = FALSE)
- if(reagents)
- reagents.clear_reagents()
- var/obj/item/organ/brain/B = getorgan(/obj/item/organ/brain)
- if(B)
- B.brain_death = FALSE
- for(var/thing in diseases)
- var/datum/disease/D = thing
- if(D.severity != DISEASE_SEVERITY_POSITIVE)
- D.cure(FALSE)
- if(admin_revive)
- regenerate_limbs()
- regenerate_organs()
- handcuffed = initial(handcuffed)
- for(var/obj/item/restraints/R in contents) //actually remove cuffs from inventory
- qdel(R)
- update_handcuffed()
- if(reagents)
- reagents.addiction_list = list()
- cure_all_traumas(TRAUMA_RESILIENCE_MAGIC)
- ..()
- // heal ears after healing traits, since ears check TRAIT_DEAF trait
- // when healing.
- restoreEars()
-
-/mob/living/carbon/can_be_revived()
- . = ..()
- if(!getorgan(/obj/item/organ/brain) && (!mind || !mind.has_antag_datum(/datum/antagonist/changeling)))
- return 0
-
-/mob/living/carbon/harvest(mob/living/user)
- if(QDELETED(src))
- return
- var/organs_amt = 0
- for(var/X in internal_organs)
- var/obj/item/organ/O = X
- if(prob(50))
- organs_amt++
- O.Remove(src)
- O.forceMove(drop_location())
- if(organs_amt)
- to_chat(user, "You retrieve some of [src]\'s internal organs!")
-
-/mob/living/carbon/ExtinguishMob()
- for(var/X in get_equipped_items())
- var/obj/item/I = X
- I.acid_level = 0 //washes off the acid on our clothes
- I.extinguish() //extinguishes our clothes
- ..()
-
-/mob/living/carbon/fakefire(var/fire_icon = "Generic_mob_burning")
- var/mutable_appearance/new_fire_overlay = mutable_appearance('icons/mob/OnFire.dmi', fire_icon, -FIRE_LAYER)
- new_fire_overlay.appearance_flags = RESET_COLOR
- overlays_standing[FIRE_LAYER] = new_fire_overlay
- apply_overlay(FIRE_LAYER)
-
-/mob/living/carbon/fakefireextinguish()
- remove_overlay(FIRE_LAYER)
-
-
-/mob/living/carbon/proc/devour_mob(mob/living/carbon/C, devour_time = 130)
- C.visible_message("[src] is attempting to devour [C]!", \
- "[src] is attempting to devour you!")
- if(!do_mob(src, C, devour_time))
- return
- if(pulling && pulling == C && grab_state >= GRAB_AGGRESSIVE && a_intent == INTENT_GRAB)
- C.visible_message("[src] devours [C]!", \
- "[src] devours you!")
- C.forceMove(src)
- stomach_contents.Add(C)
- log_combat(src, C, "devoured")
-
-/mob/living/carbon/proc/create_bodyparts()
- var/l_arm_index_next = -1
- var/r_arm_index_next = 0
- for(var/X in bodyparts)
- var/obj/item/bodypart/O = new X()
- O.owner = src
- bodyparts.Remove(X)
- bodyparts.Add(O)
- if(O.body_part == ARM_LEFT)
- l_arm_index_next += 2
- O.held_index = l_arm_index_next //1, 3, 5, 7...
- hand_bodyparts += O
- else if(O.body_part == ARM_RIGHT)
- r_arm_index_next += 2
- O.held_index = r_arm_index_next //2, 4, 6, 8...
- hand_bodyparts += O
-
-/mob/living/carbon/do_after_coefficent()
- . = ..()
- var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) //Currently, only carbons or higher use mood, move this once that changes.
- if(mood)
- switch(mood.sanity) //Alters do_after delay based on how sane you are
- if(SANITY_INSANE to SANITY_DISTURBED)
- . *= 1.25
- if(SANITY_NEUTRAL to SANITY_GREAT)
- . *= 0.90
-
-
-/mob/living/carbon/proc/create_internal_organs()
- for(var/X in internal_organs)
- var/obj/item/organ/I = X
- I.Insert(src)
-
-/mob/living/carbon/proc/update_disabled_bodyparts()
- for(var/B in bodyparts)
- var/obj/item/bodypart/BP = B
- BP.update_disabled()
-
-/mob/living/carbon/vv_get_dropdown()
- . = ..()
- . += "---"
- .["Make AI"] = "?_src_=vars;[HrefToken()];makeai=[REF(src)]"
- .["Modify bodypart"] = "?_src_=vars;[HrefToken()];editbodypart=[REF(src)]"
- .["Modify organs"] = "?_src_=vars;[HrefToken()];editorgans=[REF(src)]"
- .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=[REF(src)]"
- .["Give martial arts"] = "?_src_=vars;[HrefToken()];givemartialart=[REF(src)]"
- .["Give brain trauma"] = "?_src_=vars;[HrefToken()];givetrauma=[REF(src)]"
- .["Cure brain traumas"] = "?_src_=vars;[HrefToken()];curetraumas=[REF(src)]"
-
-/mob/living/carbon/can_resist()
- return bodyparts.len > 2 && ..()
-
-/mob/living/carbon/proc/hypnosis_vulnerable()//unused atm, but added in case
- if(HAS_TRAIT(src, TRAIT_MINDSHIELD))
- return FALSE
- if(hallucinating())
- return TRUE
- if(IsSleeping())
- return TRUE
- if(HAS_TRAIT(src, TRAIT_DUMB))
- return TRUE
- var/datum/component/mood/mood = src.GetComponent(/datum/component/mood)
- if(mood)
- if(mood.sanity < SANITY_UNSTABLE)
- return TRUE
-
-/mob/living/carbon/transfer_ckey(mob/new_mob, send_signal = TRUE)
- if(combatmode)
- toggle_combat_mode(TRUE, TRUE)
- return ..()
-
-/mob/living/carbon/can_see_reagents()
- . = ..()
- if(.) //No need to run through all of this if it's already true.
- return
- if(isclothing(head))
- var/obj/item/clothing/H = head
- if(H.clothing_flags & SCAN_REAGENTS)
- return TRUE
- if(isclothing(wear_mask) && (wear_mask.clothing_flags & SCAN_REAGENTS))
+/mob/living/carbon
+ blood_volume = BLOOD_VOLUME_NORMAL
+
+/mob/living/carbon/Initialize()
+ . = ..()
+ create_reagents(1000)
+ update_body_parts() //to update the carbon's new bodyparts appearance
+ GLOB.carbon_list += src
+ blood_volume = (BLOOD_VOLUME_NORMAL * blood_ratio)
+
+/mob/living/carbon/Destroy()
+ //This must be done first, so the mob ghosts correctly before DNA etc is nulled
+ . = ..()
+
+ QDEL_LIST(internal_organs)
+ QDEL_LIST(stomach_contents)
+ QDEL_LIST(bodyparts)
+ QDEL_LIST(implants)
+ remove_from_all_data_huds()
+ QDEL_NULL(dna)
+ GLOB.carbon_list -= src
+
+/mob/living/carbon/initialize_footstep()
+ AddComponent(/datum/component/footstep, 0.6, 2)
+
+/mob/living/carbon/relaymove(mob/user, direction)
+ if(user in src.stomach_contents)
+ if(prob(40))
+ if(prob(25))
+ audible_message("You hear something rumbling inside [src]'s stomach...", \
+ "You hear something rumbling.", 4,\
+ "Something is rumbling inside your stomach!")
+ var/obj/item/I = user.get_active_held_item()
+ if(I && I.force)
+ var/d = rand(round(I.force / 4), I.force)
+ var/obj/item/bodypart/BP = get_bodypart(BODY_ZONE_CHEST)
+ if(BP.receive_damage(d, 0))
+ update_damage_overlays()
+ visible_message("[user] attacks [src]'s stomach wall with the [I.name]!", \
+ "[user] attacks your stomach wall with the [I.name]!")
+ playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1)
+
+ if(prob(src.getBruteLoss() - 50))
+ for(var/atom/movable/A in stomach_contents)
+ A.forceMove(drop_location())
+ stomach_contents.Remove(A)
+ src.gib()
+
+
+/mob/living/carbon/swap_hand(held_index)
+ if(!held_index)
+ held_index = (active_hand_index % held_items.len)+1
+
+ var/obj/item/item_in_hand = src.get_active_held_item()
+ if(item_in_hand) //this segment checks if the item in your hand is twohanded.
+ var/obj/item/twohanded/TH = item_in_hand
+ if(istype(TH))
+ if(TH.wielded == 1)
+ to_chat(usr, "Your other hand is too busy holding [TH]")
+ return
+ var/oindex = active_hand_index
+ active_hand_index = held_index
+ if(hud_used)
+ var/obj/screen/inventory/hand/H
+ H = hud_used.hand_slots["[oindex]"]
+ if(H)
+ H.update_icon()
+ H = hud_used.hand_slots["[held_index]"]
+ if(H)
+ H.update_icon()
+
+
+/mob/living/carbon/activate_hand(selhand) //l/r OR 1-held_items.len
+ if(!selhand)
+ selhand = (active_hand_index % held_items.len)+1
+
+ if(istext(selhand))
+ selhand = lowertext(selhand)
+ if(selhand == "right" || selhand == "r")
+ selhand = 2
+ if(selhand == "left" || selhand == "l")
+ selhand = 1
+
+ if(selhand != active_hand_index)
+ swap_hand(selhand)
+ else
+ mode() // Activate held item
+
+/mob/living/carbon/attackby(obj/item/I, mob/user, params)
+ if(lying && surgeries.len)
+ if(user != src && (user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM))
+ for(var/datum/surgery/S in surgeries)
+ if(S.next_step(user,user.a_intent))
+ return 1
+ return ..()
+
+/mob/living/carbon/throw_impact(atom/hit_atom, throwingdatum)
+ . = ..()
+ var/hurt = TRUE
+ if(istype(throwingdatum, /datum/thrownthing))
+ var/datum/thrownthing/D = throwingdatum
+ if(iscyborg(D.thrower))
+ var/mob/living/silicon/robot/R = D.thrower
+ if(!R.emagged)
+ hurt = FALSE
+ if(hit_atom.density && isturf(hit_atom))
+ if(hurt)
+ Knockdown(20)
+ take_bodypart_damage(10)
+ if(iscarbon(hit_atom) && hit_atom != src)
+ var/mob/living/carbon/victim = hit_atom
+ if(victim.movement_type & FLYING)
+ return
+ if(hurt)
+ victim.take_bodypart_damage(10)
+ take_bodypart_damage(10)
+ victim.Knockdown(20)
+ Knockdown(20)
+ visible_message("[src] crashes into [victim], knocking them both over!",\
+ "You violently crash into [victim]!")
+ playsound(src,'sound/weapons/punch1.ogg',50,1)
+
+
+//Throwing stuff
+/mob/living/carbon/proc/toggle_throw_mode()
+ if(stat)
+ return
+ if(in_throw_mode)
+ throw_mode_off()
+ else
+ throw_mode_on()
+
+
+/mob/living/carbon/proc/throw_mode_off()
+ in_throw_mode = 0
+ if(client && hud_used)
+ hud_used.throw_icon.icon_state = "act_throw_off"
+
+
+/mob/living/carbon/proc/throw_mode_on()
+ in_throw_mode = 1
+ if(client && hud_used)
+ hud_used.throw_icon.icon_state = "act_throw_on"
+
+/mob/proc/throw_item(atom/target)
+ SEND_SIGNAL(src, COMSIG_MOB_THROW, target)
+ return
+
+/mob/living/carbon/throw_item(atom/target)
+ throw_mode_off()
+ if(!target || !isturf(loc))
+ return
+ if(istype(target, /obj/screen))
+ return
+
+ //CIT CHANGES - makes it impossible to throw while in stamina softcrit
+ if(getStaminaLoss() >= STAMINA_SOFTCRIT)
+ to_chat(src, "You're too exhausted.")
+ return
+ var/random_turn = a_intent == INTENT_HARM
+ //END OF CIT CHANGES
+
+ var/obj/item/I = src.get_active_held_item()
+
+ var/atom/movable/thrown_thing
+ var/mob/living/throwable_mob
+
+ if(istype(I, /obj/item/clothing/head/mob_holder))
+ var/obj/item/clothing/head/mob_holder/holder = I
+ if(holder.held_mob)
+ throwable_mob = holder.held_mob
+ holder.release()
+
+ if(!I || throwable_mob)
+ if(!throwable_mob && pulling && isliving(pulling) && grab_state >= GRAB_AGGRESSIVE)
+ throwable_mob = pulling
+
+ if(throwable_mob && !throwable_mob.buckled)
+ thrown_thing = throwable_mob
+ if(pulling)
+ stop_pulling()
+ if(HAS_TRAIT(src, TRAIT_PACIFISM))
+ to_chat(src, "You gently let go of [throwable_mob].")
+ return
+
+ adjustStaminaLossBuffered(25)//CIT CHANGE - throwing an entire person shall be very tiring
+ var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
+ var/turf/end_T = get_turf(target)
+ if(start_T && end_T)
+ log_combat(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]")
+
+ else if(!CHECK_BITFIELD(I.item_flags, ABSTRACT) && !HAS_TRAIT(I, TRAIT_NODROP))
+ thrown_thing = I
+ dropItemToGround(I)
+
+ if(HAS_TRAIT(src, TRAIT_PACIFISM) && I.throwforce)
+ to_chat(src, "You set [I] down gently on the ground.")
+ return
+
+ adjustStaminaLossBuffered(I.getweight()*2)//CIT CHANGE - throwing items shall be more tiring than swinging em. Doubly so.
+
+ if(thrown_thing)
+ visible_message("[src] has thrown [thrown_thing].")
+ src.log_message("has thrown [thrown_thing]", LOG_ATTACK)
+ do_attack_animation(target, no_effect = 1)
+ playsound(loc, 'sound/weapons/punchmiss.ogg', 50, 1, -1)
+ newtonian_move(get_dir(target, src))
+ thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src, null, null, null, random_turn)
+
+
+
+/mob/living/carbon/restrained(ignore_grab)
+ . = (handcuffed || (!ignore_grab && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE))
+
+/mob/living/carbon/proc/canBeHandcuffed()
+ return 0
+
+
+/mob/living/carbon/show_inv(mob/user)
+ user.set_machine(src)
+ var/dat = {"
+
+ [name]
+
+ Head: [(head && !(head.item_flags & ABSTRACT)) ? head : "Nothing"]
+ Mask: [(wear_mask && !(wear_mask.item_flags & ABSTRACT)) ? wear_mask : "Nothing"]
+ Neck: [(wear_neck && !(wear_neck.item_flags & ABSTRACT)) ? wear_neck : "Nothing"]"}
+
+ for(var/i in 1 to held_items.len)
+ var/obj/item/I = get_item_for_held_index(i)
+ dat += " [get_held_index_name(i)]: | [(I && !(I.item_flags & ABSTRACT)) ? I : "Nothing"]"
+
+ dat += " Back: [back ? back : "Nothing"]"
+
+ if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/tank))
+ dat += " [internal ? "Disable Internals" : "Set Internals"]"
+
+ if(handcuffed)
+ dat += " Handcuffed"
+ if(legcuffed)
+ dat += " Legcuffed"
+
+ dat += {"
+
+ Close
+ "}
+ user << browse(dat, "window=mob[REF(src)];size=325x500")
+ onclose(user, "mob[REF(src)]")
+
+/mob/living/carbon/Topic(href, href_list)
+ ..()
+ //strip panel
+ if(usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
+ if(href_list["internal"])
+ var/slot = text2num(href_list["internal"])
+ var/obj/item/ITEM = get_item_by_slot(slot)
+ if(ITEM && istype(ITEM, /obj/item/tank) && wear_mask && (wear_mask.clothing_flags & ALLOWINTERNALS))
+ visible_message("[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM.name].", \
+ "[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM.name].")
+ if(do_mob(usr, src, POCKET_STRIP_DELAY))
+ if(internal)
+ internal = null
+ update_internals_hud_icon(0)
+ else if(ITEM && istype(ITEM, /obj/item/tank))
+ if((wear_mask && (wear_mask.clothing_flags & ALLOWINTERNALS)) || getorganslot(ORGAN_SLOT_BREATHING_TUBE))
+ internal = ITEM
+ update_internals_hud_icon(1)
+
+ visible_message("[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM.name].", \
+ "[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM.name].")
+
+
+/mob/living/carbon/fall(forced)
+ loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing
+
+/mob/living/carbon/is_muzzled()
+ return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
+
+/mob/living/carbon/hallucinating()
+ if(hallucination)
+ return TRUE
+ else
+ return FALSE
+
+/mob/living/carbon/resist_buckle()
+ if(restrained())
+ changeNext_move(CLICK_CD_BREAKOUT)
+ last_special = world.time + CLICK_CD_BREAKOUT
+ var/buckle_cd = 600
+ if(handcuffed)
+ var/obj/item/restraints/O = src.get_item_by_slot(SLOT_HANDCUFFED)
+ buckle_cd = O.breakouttime
+ visible_message("[src] attempts to unbuckle [p_them()]self!", \
+ "You attempt to unbuckle yourself... (This will take around [round(buckle_cd/600,1)] minute\s, and you need to stay still.)")
+ if(do_after(src, buckle_cd, 0, target = src))
+ if(!buckled)
+ return
+ buckled.user_unbuckle_mob(src,src)
+ else
+ if(src && buckled)
+ to_chat(src, "You fail to unbuckle yourself!")
+ else
+ buckled.user_unbuckle_mob(src,src)
+
+/mob/living/carbon/resist_fire()
+ fire_stacks -= 5
+ Knockdown(60, TRUE, TRUE)
+ spin(32,2)
+ visible_message("[src] rolls on the floor, trying to put [p_them()]self out!", \
+ "You stop, drop, and roll!")
+ sleep(30)
+ if(fire_stacks <= 0)
+ visible_message("[src] has successfully extinguished [p_them()]self!", \
+ "You extinguish yourself.")
+ ExtinguishMob()
+ return
+
+/mob/living/carbon/resist_restraints()
+ var/obj/item/I = null
+ var/type = 0
+ if(handcuffed)
+ I = handcuffed
+ type = 1
+ else if(legcuffed)
+ I = legcuffed
+ type = 2
+ if(I)
+ if(type == 1)
+ changeNext_move(CLICK_CD_BREAKOUT)
+ last_special = world.time + CLICK_CD_BREAKOUT
+ if(type == 2)
+ changeNext_move(CLICK_CD_RANGE)
+ last_special = world.time + CLICK_CD_RANGE
+ cuff_resist(I)
+
+
+/mob/living/carbon/proc/cuff_resist(obj/item/I, breakouttime = 600, cuff_break = 0)
+ if(I.item_flags & BEING_REMOVED)
+ to_chat(src, "You're already attempting to remove [I]!")
+ return
+ I.item_flags |= BEING_REMOVED
+ breakouttime = I.breakouttime
+ if(!cuff_break)
+ visible_message("[src] attempts to remove [I]!")
+ to_chat(src, "You attempt to remove [I]... (This will take around [DisplayTimeText(breakouttime)] and you need to stand still.)")
+ if(do_after(src, breakouttime, 0, target = src))
+ clear_cuffs(I, cuff_break)
+ else
+ to_chat(src, "You fail to remove [I]!")
+
+ else if(cuff_break == FAST_CUFFBREAK)
+ breakouttime = 50
+ visible_message("[src] is trying to break [I]!")
+ to_chat(src, "You attempt to break [I]... (This will take around 5 seconds and you need to stand still.)")
+ if(do_after(src, breakouttime, 0, target = src))
+ clear_cuffs(I, cuff_break)
+ else
+ to_chat(src, "You fail to break [I]!")
+
+ else if(cuff_break == INSTANT_CUFFBREAK)
+ clear_cuffs(I, cuff_break)
+ I.item_flags &= ~BEING_REMOVED
+
+/mob/living/carbon/proc/uncuff()
+ if (handcuffed)
+ var/obj/item/W = handcuffed
+ handcuffed = null
+ if (buckled && buckled.buckle_requires_restraints)
+ buckled.unbuckle_mob(src)
+ update_handcuffed()
+ if (client)
+ client.screen -= W
+ if (W)
+ W.forceMove(drop_location())
+ W.dropped(src)
+ if (W)
+ W.layer = initial(W.layer)
+ W.plane = initial(W.plane)
+ changeNext_move(0)
+ if (legcuffed)
+ var/obj/item/W = legcuffed
+ legcuffed = null
+ update_inv_legcuffed()
+ if (client)
+ client.screen -= W
+ if (W)
+ W.forceMove(drop_location())
+ W.dropped(src)
+ if (W)
+ W.layer = initial(W.layer)
+ W.plane = initial(W.plane)
+ changeNext_move(0)
+
+/mob/living/carbon/proc/clear_cuffs(obj/item/I, cuff_break)
+ if(!I.loc || buckled)
+ return
+ visible_message("[src] manages to [cuff_break ? "break" : "remove"] [I]!")
+ to_chat(src, "You successfully [cuff_break ? "break" : "remove"] [I].")
+
+ if(cuff_break)
+ . = !((I == handcuffed) || (I == legcuffed))
+ qdel(I)
+ return
+
+ else
+ if(I == handcuffed)
+ handcuffed.forceMove(drop_location())
+ handcuffed.dropped(src)
+ handcuffed = null
+ if(buckled && buckled.buckle_requires_restraints)
+ buckled.unbuckle_mob(src)
+ update_handcuffed()
+ return
+ if(I == legcuffed)
+ legcuffed.forceMove(drop_location())
+ legcuffed.dropped()
+ legcuffed = null
+ update_inv_legcuffed()
+ return
+ else
+ dropItemToGround(I)
+ return
+ return TRUE
+
+/mob/living/carbon/get_standard_pixel_y_offset(lying = 0)
+ if(lying)
+ return -6
+ else
+ return initial(pixel_y)
+
+/mob/living/carbon/proc/accident(obj/item/I)
+ if(!I || (I.item_flags & ABSTRACT) || HAS_TRAIT(I, TRAIT_NODROP))
+ return
+
+ //dropItemToGround(I) CIT CHANGE - makes it so the item doesn't drop if the modifier rolls above 100
+
+ var/modifier = 0
+
+ if(HAS_TRAIT(src, TRAIT_CLUMSY))
+ modifier -= 40 //Clumsy people are more likely to hit themselves -Honk!
+
+ //CIT CHANGES START HERE
+ else if(combatmode)
+ modifier += 50
+
+ if(modifier < 100)
+ dropItemToGround(I)
+ //END OF CIT CHANGES
+
+ switch(rand(1,100)+modifier) //91-100=Nothing special happens
+ if(-INFINITY to 0) //attack yourself
+ I.attack(src,src)
+ if(1 to 30) //throw it at yourself
+ I.throw_impact(src)
+ if(31 to 60) //Throw object in facing direction
+ var/turf/target = get_turf(loc)
+ var/range = rand(2,I.throw_range)
+ for(var/i = 1; i < range; i++)
+ var/turf/new_turf = get_step(target, dir)
+ target = new_turf
+ if(new_turf.density)
+ break
+ I.throw_at(target,I.throw_range,I.throw_speed,src)
+ if(61 to 90) //throw it down to the floor
+ var/turf/target = get_turf(loc)
+ I.throw_at(target,I.throw_range,I.throw_speed,src)
+
+/mob/living/carbon/Stat()
+ ..()
+ if(statpanel("Status"))
+ var/obj/item/organ/alien/plasmavessel/vessel = getorgan(/obj/item/organ/alien/plasmavessel)
+ if(vessel)
+ stat(null, "Plasma Stored: [vessel.storedPlasma]/[vessel.max_plasma]")
+ if(locate(/obj/item/assembly/health) in src)
+ stat(null, "Health: [health]")
+
+ add_abilities_to_panel()
+
+/mob/living/carbon/attack_ui(slot)
+ if(!has_hand_for_held_index(active_hand_index))
+ return 0
+ return ..()
+
+/mob/living/carbon/proc/vomit(lost_nutrition = 10, blood = FALSE, stun = TRUE, distance = 1, message = TRUE, toxic = FALSE)
+ if(HAS_TRAIT(src, TRAIT_NOHUNGER))
+ return 1
+
+ if(nutrition < 100 && !blood)
+ if(message)
+ visible_message("[src] dry heaves!", \
+ "You try to throw up, but there's nothing in your stomach!")
+ if(stun)
+ Knockdown(200)
+ return 1
+
+ if(is_mouth_covered()) //make this add a blood/vomit overlay later it'll be hilarious
+ if(message)
+ visible_message("[src] throws up all over [p_them()]self!", \
+ "You throw up all over yourself!")
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "vomit", /datum/mood_event/vomitself)
+ distance = 0
+ else
+ if(message)
+ visible_message("[src] throws up!", "You throw up!")
+ if(!isflyperson(src))
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "vomit", /datum/mood_event/vomit)
+ if(stun)
+ Stun(80)
+
+ playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1)
+ var/turf/T = get_turf(src)
+ if(!blood)
+ nutrition -= lost_nutrition
+ adjustToxLoss(-3)
+ for(var/i=0 to distance)
+ if(blood)
+ if(T)
+ add_splatter_floor(T)
+ if(stun)
+ adjustBruteLoss(3)
+ else if(src.reagents.has_reagent(/datum/reagent/consumable/ethanol/blazaam))
+ if(T)
+ T.add_vomit_floor(src, VOMIT_PURPLE)
+ else
+ if(T)
+ T.add_vomit_floor(src, VOMIT_TOXIC)//toxic barf looks different
+ T = get_step(T, dir)
+ if (is_blocked_turf(T))
+ break
+ return 1
+
+/mob/living/carbon/proc/spew_organ(power = 5, amt = 1)
+ for(var/i in 1 to amt)
+ if(!internal_organs.len)
+ break //Guess we're out of organs!
+ var/obj/item/organ/guts = pick(internal_organs)
+ var/turf/T = get_turf(src)
+ guts.Remove(src)
+ guts.forceMove(T)
+ var/atom/throw_target = get_edge_target_turf(guts, dir)
+ guts.throw_at(throw_target, power, 4, src)
+
+
+/mob/living/carbon/fully_replace_character_name(oldname,newname)
+ ..()
+ if(dna)
+ dna.real_name = real_name
+
+//Updates the mob's health from bodyparts and mob damage variables
+/mob/living/carbon/updatehealth()
+ if(status_flags & GODMODE)
+ return
+ var/total_burn = 0
+ var/total_brute = 0
+ var/total_stamina = 0
+ for(var/X in bodyparts) //hardcoded to streamline things a bit
+ var/obj/item/bodypart/BP = X
+ total_brute += (BP.brute_dam * BP.body_damage_coeff)
+ total_burn += (BP.burn_dam * BP.body_damage_coeff)
+ total_stamina += (BP.stamina_dam * BP.stam_damage_coeff)
+ health = round(maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute, DAMAGE_PRECISION)
+ staminaloss = round(total_stamina, DAMAGE_PRECISION)
+ update_stat()
+ if(((maxHealth - total_burn) < HEALTH_THRESHOLD_DEAD) && stat == DEAD )
+ become_husk("burn")
+ med_hud_set_health()
+ if(stat == SOFT_CRIT)
+ add_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE, multiplicative_slowdown = SOFTCRIT_ADD_SLOWDOWN)
+ else
+ remove_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE)
+
+/mob/living/carbon/update_stamina()
+ var/stam = getStaminaLoss()
+ if(stam > DAMAGE_PRECISION)
+ var/total_health = (health - stam)
+ if(total_health <= crit_threshold && !stat)
+ if(!IsKnockdown())
+ to_chat(src, "You're too exhausted to keep going...")
+ Knockdown(100)
+ update_health_hud()
+
+/mob/living/carbon/update_sight()
+ if(!client)
+ return
+ if(stat == DEAD)
+ sight = (SEE_TURFS|SEE_MOBS|SEE_OBJS)
+ see_in_dark = 8
+ see_invisible = SEE_INVISIBLE_OBSERVER
+ return
+
+ sight = initial(sight)
+ lighting_alpha = initial(lighting_alpha)
+ var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES)
+ if(!E)
+ update_tint()
+ else
+ see_invisible = E.see_invisible
+ see_in_dark = E.see_in_dark
+ sight |= E.sight_flags
+ if(!isnull(E.lighting_alpha))
+ lighting_alpha = E.lighting_alpha
+ if(HAS_TRAIT(src, TRAIT_NIGHT_VISION))
+ lighting_alpha = min(LIGHTING_PLANE_ALPHA_NV_TRAIT, lighting_alpha)
+ see_in_dark = max(NIGHT_VISION_DARKSIGHT_RANGE, see_in_dark)
+
+ if(client.eye && client.eye != src)
+ var/atom/A = client.eye
+ if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates.
+ return
+
+ if(glasses)
+ var/obj/item/clothing/glasses/G = glasses
+ sight |= G.vision_flags
+ see_in_dark = max(G.darkness_view, see_in_dark)
+ if(G.invis_override)
+ see_invisible = G.invis_override
+ else
+ see_invisible = min(G.invis_view, see_invisible)
+ if(!isnull(G.lighting_alpha))
+ lighting_alpha = min(lighting_alpha, G.lighting_alpha)
+ if(dna)
+ for(var/X in dna.mutations)
+ var/datum/mutation/M = X
+ if(M.name == XRAY)
+ sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS)
+ see_in_dark = max(see_in_dark, 8)
+
+ if(see_override)
+ see_invisible = see_override
+ . = ..()
+
+
+//to recalculate and update the mob's total tint from tinted equipment it's wearing.
+/mob/living/carbon/proc/update_tint()
+ if(!GLOB.tinted_weldhelh)
+ return
+ tinttotal = get_total_tint()
+ if(tinttotal >= TINT_BLIND)
+ become_blind(EYES_COVERED)
+ else if(tinttotal >= TINT_DARKENED)
+ cure_blind(EYES_COVERED)
+ overlay_fullscreen("tint", /obj/screen/fullscreen/impaired, 2)
+ else
+ cure_blind(EYES_COVERED)
+ clear_fullscreen("tint", 0)
+
+/mob/living/carbon/proc/get_total_tint()
+ . = 0
+ if(istype(head, /obj/item/clothing/head))
+ var/obj/item/clothing/head/HT = head
+ . += HT.tint
+ if(wear_mask)
+ . += wear_mask.tint
+
+ var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES)
+ if(E)
+ . += E.tint
+
+ else
+ . += INFINITY
+
+/mob/living/carbon/get_permeability_protection(list/target_zones = list(HANDS,CHEST,GROIN,LEGS,FEET,ARMS,HEAD))
+ var/list/tally = list()
+ for(var/obj/item/I in get_equipped_items())
+ for(var/zone in target_zones)
+ if(I.body_parts_covered & zone)
+ tally["[zone]"] = max(1 - I.permeability_coefficient, target_zones["[zone]"])
+ var/protection = 0
+ for(var/key in tally)
+ protection += tally[key]
+ protection *= INVERSE(target_zones.len)
+ return protection
+
+//this handles hud updates
+/mob/living/carbon/update_damage_hud()
+
+ if(!client)
+ return
+
+ if(health <= crit_threshold)
+ var/severity = 0
+ switch(health)
+ if(-20 to -10)
+ severity = 1
+ if(-30 to -20)
+ severity = 2
+ if(-40 to -30)
+ severity = 3
+ if(-50 to -40)
+ severity = 4
+ if(-50 to -40)
+ severity = 5
+ if(-60 to -50)
+ severity = 6
+ if(-70 to -60)
+ severity = 7
+ if(-90 to -70)
+ severity = 8
+ if(-95 to -90)
+ severity = 9
+ if(-INFINITY to -95)
+ severity = 10
+ if(!InFullCritical())
+ var/visionseverity = 4
+ switch(health)
+ if(-8 to -4)
+ visionseverity = 5
+ if(-12 to -8)
+ visionseverity = 6
+ if(-16 to -12)
+ visionseverity = 7
+ if(-20 to -16)
+ visionseverity = 8
+ if(-24 to -20)
+ visionseverity = 9
+ if(-INFINITY to -24)
+ visionseverity = 10
+ overlay_fullscreen("critvision", /obj/screen/fullscreen/crit/vision, visionseverity)
+ else
+ clear_fullscreen("critvision")
+ overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity)
+ else
+ clear_fullscreen("crit")
+ clear_fullscreen("critvision")
+
+ //Oxygen damage overlay
+ var/windedup = getOxyLoss() + getStaminaLoss() * 0.2
+ if(windedup)
+ var/severity = 0
+ switch(windedup)
+ if(10 to 20)
+ severity = 1
+ if(20 to 25)
+ severity = 2
+ if(25 to 30)
+ severity = 3
+ if(30 to 35)
+ severity = 4
+ if(35 to 40)
+ severity = 5
+ if(40 to 45)
+ severity = 6
+ if(45 to INFINITY)
+ severity = 7
+ overlay_fullscreen("oxy", /obj/screen/fullscreen/oxy, severity)
+ else
+ clear_fullscreen("oxy")
+
+ //Fire and Brute damage overlay (BSSR)
+ var/hurtdamage = getBruteLoss() + getFireLoss() + damageoverlaytemp
+ if(hurtdamage)
+ var/severity = 0
+ switch(hurtdamage)
+ if(5 to 15)
+ severity = 1
+ if(15 to 30)
+ severity = 2
+ if(30 to 45)
+ severity = 3
+ if(45 to 70)
+ severity = 4
+ if(70 to 85)
+ severity = 5
+ if(85 to INFINITY)
+ severity = 6
+ overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity)
+ else
+ clear_fullscreen("brute")
+
+/mob/living/carbon/update_health_hud(shown_health_amount)
+ if(!client || !hud_used)
+ return
+ if(hud_used.healths)
+ if(stat != DEAD)
+ . = 1
+ if(!shown_health_amount)
+ shown_health_amount = health
+ if(shown_health_amount >= maxHealth)
+ hud_used.healths.icon_state = "health0"
+ else if(shown_health_amount > maxHealth*0.8)
+ hud_used.healths.icon_state = "health1"
+ else if(shown_health_amount > maxHealth*0.6)
+ hud_used.healths.icon_state = "health2"
+ else if(shown_health_amount > maxHealth*0.4)
+ hud_used.healths.icon_state = "health3"
+ else if(shown_health_amount > maxHealth*0.2)
+ hud_used.healths.icon_state = "health4"
+ else if(shown_health_amount > 0)
+ hud_used.healths.icon_state = "health5"
+ else
+ hud_used.healths.icon_state = "health6"
+ else
+ hud_used.healths.icon_state = "health7"
+
+/mob/living/carbon/proc/update_internals_hud_icon(internal_state = 0)
+ if(hud_used && hud_used.internals)
+ hud_used.internals.icon_state = "internal[internal_state]"
+
+/mob/living/carbon/update_stat()
+ if(status_flags & GODMODE)
+ return
+ if(stat != DEAD)
+ if(health <= HEALTH_THRESHOLD_DEAD && !HAS_TRAIT(src, TRAIT_NODEATH))
+ death()
+ return
+ if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !HAS_TRAIT(src, TRAIT_NOHARDCRIT)))
+ stat = UNCONSCIOUS
+ blind_eyes(1)
+ if(combatmode)
+ toggle_combat_mode(TRUE, TRUE)
+ else
+ if(health <= crit_threshold && !HAS_TRAIT(src, TRAIT_NOSOFTCRIT))
+ stat = SOFT_CRIT
+ if(combatmode)
+ toggle_combat_mode(TRUE, TRUE)
+ else
+ stat = CONSCIOUS
+ adjust_blindness(-1)
+ update_canmove()
+ update_damage_hud()
+ update_health_hud()
+ med_hud_set_status()
+
+//called when we get cuffed/uncuffed
+/mob/living/carbon/proc/update_handcuffed()
+ if(handcuffed)
+ drop_all_held_items()
+ stop_pulling()
+ throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = src.handcuffed)
+ if(handcuffed.demoralize_criminals)
+ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "handcuffed", /datum/mood_event/handcuffed)
+ else
+ clear_alert("handcuffed")
+ SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "handcuffed")
+ update_action_buttons_icon() //some of our action buttons might be unusable when we're handcuffed.
+ update_inv_handcuffed()
+ update_hud_handcuffed()
+
+/mob/living/carbon/fully_heal(admin_revive = FALSE)
+ if(reagents)
+ reagents.clear_reagents()
+ var/obj/item/organ/brain/B = getorgan(/obj/item/organ/brain)
+ if(B)
+ B.brain_death = FALSE
+ for(var/thing in diseases)
+ var/datum/disease/D = thing
+ if(D.severity != DISEASE_SEVERITY_POSITIVE)
+ D.cure(FALSE)
+ if(admin_revive)
+ regenerate_limbs()
+ regenerate_organs()
+ handcuffed = initial(handcuffed)
+ for(var/obj/item/restraints/R in contents) //actually remove cuffs from inventory
+ qdel(R)
+ update_handcuffed()
+ if(reagents)
+ reagents.addiction_list = list()
+ cure_all_traumas(TRAUMA_RESILIENCE_MAGIC)
+ ..()
+ // heal ears after healing traits, since ears check TRAIT_DEAF trait
+ // when healing.
+ restoreEars()
+
+/mob/living/carbon/can_be_revived()
+ . = ..()
+ if(!getorgan(/obj/item/organ/brain) && (!mind || !mind.has_antag_datum(/datum/antagonist/changeling)))
+ return 0
+
+/mob/living/carbon/harvest(mob/living/user)
+ if(QDELETED(src))
+ return
+ var/organs_amt = 0
+ for(var/X in internal_organs)
+ var/obj/item/organ/O = X
+ if(prob(50))
+ organs_amt++
+ O.Remove(src)
+ O.forceMove(drop_location())
+ if(organs_amt)
+ to_chat(user, "You retrieve some of [src]\'s internal organs!")
+
+/mob/living/carbon/ExtinguishMob()
+ for(var/X in get_equipped_items())
+ var/obj/item/I = X
+ I.acid_level = 0 //washes off the acid on our clothes
+ I.extinguish() //extinguishes our clothes
+ ..()
+
+/mob/living/carbon/fakefire(var/fire_icon = "Generic_mob_burning")
+ var/mutable_appearance/new_fire_overlay = mutable_appearance('icons/mob/OnFire.dmi', fire_icon, -FIRE_LAYER)
+ new_fire_overlay.appearance_flags = RESET_COLOR
+ overlays_standing[FIRE_LAYER] = new_fire_overlay
+ apply_overlay(FIRE_LAYER)
+
+/mob/living/carbon/fakefireextinguish()
+ remove_overlay(FIRE_LAYER)
+
+
+/mob/living/carbon/proc/devour_mob(mob/living/carbon/C, devour_time = 130)
+ C.visible_message("[src] is attempting to devour [C]!", \
+ "[src] is attempting to devour you!")
+ if(!do_mob(src, C, devour_time))
+ return
+ if(pulling && pulling == C && grab_state >= GRAB_AGGRESSIVE && a_intent == INTENT_GRAB)
+ C.visible_message("[src] devours [C]!", \
+ "[src] devours you!")
+ C.forceMove(src)
+ stomach_contents.Add(C)
+ log_combat(src, C, "devoured")
+
+/mob/living/carbon/proc/create_bodyparts()
+ var/l_arm_index_next = -1
+ var/r_arm_index_next = 0
+ for(var/X in bodyparts)
+ var/obj/item/bodypart/O = new X()
+ O.owner = src
+ bodyparts.Remove(X)
+ bodyparts.Add(O)
+ if(O.body_part == ARM_LEFT)
+ l_arm_index_next += 2
+ O.held_index = l_arm_index_next //1, 3, 5, 7...
+ hand_bodyparts += O
+ else if(O.body_part == ARM_RIGHT)
+ r_arm_index_next += 2
+ O.held_index = r_arm_index_next //2, 4, 6, 8...
+ hand_bodyparts += O
+
+/mob/living/carbon/do_after_coefficent()
+ . = ..()
+ var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) //Currently, only carbons or higher use mood, move this once that changes.
+ if(mood)
+ switch(mood.sanity) //Alters do_after delay based on how sane you are
+ if(SANITY_INSANE to SANITY_DISTURBED)
+ . *= 1.25
+ if(SANITY_NEUTRAL to SANITY_GREAT)
+ . *= 0.90
+
+
+/mob/living/carbon/proc/create_internal_organs()
+ for(var/X in internal_organs)
+ var/obj/item/organ/I = X
+ I.Insert(src)
+
+/mob/living/carbon/proc/update_disabled_bodyparts()
+ for(var/B in bodyparts)
+ var/obj/item/bodypart/BP = B
+ BP.update_disabled()
+
+/mob/living/carbon/vv_get_dropdown()
+ . = ..()
+ . += "---"
+ .["Make AI"] = "?_src_=vars;[HrefToken()];makeai=[REF(src)]"
+ .["Modify bodypart"] = "?_src_=vars;[HrefToken()];editbodypart=[REF(src)]"
+ .["Modify organs"] = "?_src_=vars;[HrefToken()];editorgans=[REF(src)]"
+ .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=[REF(src)]"
+ .["Give martial arts"] = "?_src_=vars;[HrefToken()];givemartialart=[REF(src)]"
+ .["Give brain trauma"] = "?_src_=vars;[HrefToken()];givetrauma=[REF(src)]"
+ .["Cure brain traumas"] = "?_src_=vars;[HrefToken()];curetraumas=[REF(src)]"
+
+/mob/living/carbon/can_resist()
+ return bodyparts.len > 2 && ..()
+
+/mob/living/carbon/proc/hypnosis_vulnerable()//unused atm, but added in case
+ if(HAS_TRAIT(src, TRAIT_MINDSHIELD))
+ return FALSE
+ if(hallucinating())
+ return TRUE
+ if(IsSleeping())
+ return TRUE
+ if(HAS_TRAIT(src, TRAIT_DUMB))
+ return TRUE
+ var/datum/component/mood/mood = src.GetComponent(/datum/component/mood)
+ if(mood)
+ if(mood.sanity < SANITY_UNSTABLE)
+ return TRUE
+
+/mob/living/carbon/transfer_ckey(mob/new_mob, send_signal = TRUE)
+ if(combatmode)
+ toggle_combat_mode(TRUE, TRUE)
+ return ..()
+
+/mob/living/carbon/can_see_reagents()
+ . = ..()
+ if(.) //No need to run through all of this if it's already true.
+ return
+ if(isclothing(head))
+ var/obj/item/clothing/H = head
+ if(H.clothing_flags & SCAN_REAGENTS)
+ return TRUE
+ if(isclothing(wear_mask) && (wear_mask.clothing_flags & SCAN_REAGENTS))
return TRUE
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index ba40ae8e5f..161b5875b1 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -243,7 +243,7 @@
shock_damage *= dna.species.siemens_coeff
if(shock_damage<1 && !override)
return 0
- if(reagents.has_reagent("teslium"))
+ if(reagents.has_reagent(/datum/reagent/teslium))
shock_damage *= 1.5 //If the mob has teslium in their body, shocks are 50% more damaging!
if(illusion)
adjustStaminaLoss(shock_damage)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 3a6f0e6724..eca3a81c4b 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -255,7 +255,7 @@
else
msg += "[t_He] [t_is] bleeding!\n"
- if(reagents.has_reagent("teslium"))
+ if(reagents.has_reagent(/datum/reagent/teslium))
msg += "[t_He] [t_is] emitting a gentle blue glow!\n"
if(islist(stun_absorption))
@@ -278,7 +278,7 @@
if(91.01 to INFINITY)
msg += "[t_He] [t_is] a shitfaced, slobbering wreck.\n"
- if(reagents.has_reagent("astral"))
+ if(reagents.has_reagent(/datum/reagent/fermi/astral))
if(mind)
msg += "[t_He] has wild, spacey eyes and they have a strange, abnormal look to them.\n"
else
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 62f6d1237a..5b8173b6ba 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1270,9 +1270,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
H.update_mutant_bodyparts()
/datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
- if(chem.id == exotic_blood)
+ if(chem.type == exotic_blood)
H.blood_volume = min(H.blood_volume + round(chem.volume, 0.1), BLOOD_VOLUME_MAXIMUM)
- H.reagents.del_reagent(chem.id)
+ H.reagents.del_reagent(chem.type)
return 1
return FALSE
diff --git a/code/modules/mob/living/carbon/human/species_types/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm
index 946bffbdbc..9c28b8a0b7 100644
--- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm
@@ -7,18 +7,18 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
id = "dwarf" //Also called Homo sapiens pumilionis
default_color = "FFFFFF"
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR)
- inherent_traits = list()
+ inherent_traits = list()
default_features = list("mcolor" = "FFF", "wings" = "None")
limbs_id = "human"
use_skintones = 1
say_mod = "bellows" //high energy, EXTRA BIOLOGICAL FUEL
- damage_overlay_type = "human"
+ damage_overlay_type = "human"
skinned_type = /obj/item/stack/sheet/animalhide/human
liked_food = ALCOHOL | MEAT | DAIRY //Dwarves like alcohol, meat, and dairy products.
disliked_food = JUNKFOOD | FRIED //Dwarves hate foods that have no nutrition other than alcohol.
mutant_organs = list(/obj/item/organ/dwarfgland) //Dwarven alcohol gland, literal gland warrior
mutantliver = /obj/item/organ/liver/dwarf //Dwarven super liver (Otherwise they r doomed)
-
+
/mob/living/carbon/human/species/dwarf //species admin spawn path
race = /datum/species/dwarf //and the race the path is set to.
@@ -30,7 +30,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
/datum/species/dwarf/on_species_gain(mob/living/carbon/C, datum/species/old_species)
. = ..()
var/dwarf_hair = pick("Beard (Dwarf)", "Beard (Very Long)", "Beard (Long)") //beard roullette
- var/mob/living/carbon/human/H = C
+ var/mob/living/carbon/human/H = C
H.facial_hair_style = dwarf_hair
H.update_hair()
H.transform = H.transform.Scale(1, 0.8) //We use scale, and yeah. Dwarves can become gnomes with DWARFISM.
@@ -95,7 +95,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
/obj/item/organ/dwarfgland/prepare_eat()
var/obj/S = ..()
- S.reagents.add_reagent("ethanol", stored_alcohol/10)
+ S.reagents.add_reagent(/datum/reagent/consumable/ethanol, stored_alcohol/10)
return S
/obj/item/organ/dwarfgland/on_life() //Primary loop to hook into to start delayed loops for other loops..
@@ -108,8 +108,8 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
return //We make sure they are not dead, so they don't increment any tickers.
dwarf_eth_ticker++
dwarf_filth_ticker++
-
- if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds.
+
+ if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds.
dwarf_filth_cycle() //On_life will adjust regarding other factors, so we are along for the ride.
dwarf_filth_ticker = 0 //We set the ticker back to 0 to go again.
if(dwarf_eth_ticker >= 1) //Alcohol reagent check should be around 2 seconds, since a tick is around 2 seconds.
diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
index 0c3bcc2b00..426213161e 100644
--- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm
@@ -13,9 +13,9 @@
exotic_bloodtype = "BUG"
/datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
- if(chem.id == "pestkiller")
+ if(chem.type == /datum/reagent/toxin/pestkiller)
H.adjustToxLoss(3)
- H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
+ H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
return 1
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index 3d6c5092e1..c247d14589 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -305,9 +305,9 @@
H.take_overall_damage(2,0)
/datum/species/golem/wood/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
- if(chem.id == "plantbgone")
+ if(chem.type == /datum/reagent/toxin/plantbgone)
H.adjustToxLoss(3)
- H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
+ H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
return 1
//Radioactive
@@ -619,14 +619,14 @@
C.RemoveSpell(dominate)
/datum/species/golem/runic/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
- if(chem.id == "holywater")
+ if(chem.type == /datum/reagent/water/holywater)
H.adjustFireLoss(4)
- H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
+ H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
- if(chem.id == "unholywater")
+ if(chem.type == /datum/reagent/fuel/unholywater)
H.adjustBruteLoss(-4)
H.adjustFireLoss(-4)
- H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
+ H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
/datum/species/golem/clockwork
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index 5f91e3ae66..b63cd59173 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -12,7 +12,7 @@
inherent_traits = list(TRAIT_TOXINLOVER)
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime
gib_types = list(/obj/effect/gibspawner/slime, /obj/effect/gibspawner/slime/bodypartless)
- exotic_blood = "jellyblood"
+ exotic_blood = /datum/reagent/blood/jellyblood
exotic_bloodtype = "GEL"
damage_overlay_type = ""
var/datum/action/innate/regenerate_limbs/regenerate_limbs
diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
index 7744a65464..ab0962cf12 100644
--- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
@@ -52,9 +52,9 @@
QDEL_NULL(mush)
/datum/species/mush/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
- if(chem.id == "weedkiller")
+ if(chem.type == /datum/reagent/toxin/plantbgone/weedkiller)
H.adjustToxLoss(3)
- H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
+ H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
return TRUE
/datum/species/mush/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour)
diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
index f0dd48c6c1..66eb207670 100644
--- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
@@ -47,9 +47,9 @@
H.take_overall_damage(2,0)
/datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
- if(chem.id == "plantbgone")
+ if(chem.type == /datum/reagent/toxin/plantbgone)
H.adjustToxLoss(3)
- H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
+ H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
return 1
/datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H)
diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm
index 5cd1a599ad..0335e08922 100644
--- a/code/modules/mob/living/carbon/human/species_types/synths.dm
+++ b/code/modules/mob/living/carbon/human/species_types/synths.dm
@@ -36,9 +36,9 @@
UnregisterSignal(H, COMSIG_MOB_SAY)
/datum/species/synth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
- if(chem.id == "synthflesh")
+ if(chem.type == /datum/reagent/medicine/synthflesh)
chem.reaction_mob(H, TOUCH, 2 ,0) //heal a little
- H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
+ H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
return 1
else
return ..()
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 0061c7ed70..9e9d440574 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -80,7 +80,7 @@
//Second link in a breath chain, calls check_breath()
/mob/living/carbon/proc/breathe()
var/obj/item/organ/lungs = getorganslot(ORGAN_SLOT_LUNGS)
- if(reagents.has_reagent("lexorin"))
+ if(reagents.has_reagent(/datum/reagent/toxin/lexorin))
return
if(istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell))
return
@@ -156,7 +156,7 @@
//CRIT
if(!breath || (breath.total_moles() == 0) || !lungs)
- if(reagents.has_reagent("epinephrine") && lungs)
+ if(reagents.has_reagent(/datum/reagent/medicine/epinephrine) && lungs)
return
adjustOxyLoss(1)
@@ -357,7 +357,7 @@
return
// No decay if formaldehyde in corpse or when the corpse is charred
- if(reagents.has_reagent("formaldehyde", 15) || HAS_TRAIT(src, TRAIT_HUSK))
+ if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 15) || HAS_TRAIT(src, TRAIT_HUSK))
return
// Also no decay if corpse chilled or not organic/undead
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index fe041dd0a6..14c3a76307 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -66,7 +66,7 @@
. = ..()
remove_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE)
var/amount
- if(reagents.has_reagent("morphine"))
+ if(reagents.has_reagent(/datum/reagent/medicine/morphine))
amount = -1
if(amount)
add_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 78542ab052..c2a307950c 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1225,7 +1225,7 @@
clamp_unconscious_to = 0,
clamp_immobility_to = 0,
reset_misc = TRUE,
- healing_chems = list("inaprovaline" = 3, "synaptizine" = 10, "regen_jelly" = 10, "stimulants" = 10),
+ healing_chems = list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/stimulants = 10),
message = "You feel a surge of energy!",
stamina_buffer_boost = 0, //restores stamina buffer rather than just health
scale_stamina_loss_recovery, //defaults to null. if this is set, restores loss * this stamina. make sure it's a fraction.
@@ -1252,5 +1252,5 @@
updatehealth()
update_stamina()
update_canmove()
- for(var/chem in healing_chems)
- reagents.add_reagent(chem, healing_chems[chem])
+ if(healing_chems)
+ reagents.add_reagent_list(healing_chems)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 3c5c5e3518..e398dad65b 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -464,7 +464,7 @@
to_chat(src, "You resist Nar'Sie's influence... but not all of it. Run!")
adjustBruteLoss(35)
if(src && reagents)
- reagents.add_reagent("heparin", 5)
+ reagents.add_reagent(/datum/reagent/toxin/heparin, 5)
return FALSE
if(GLOB.cult_narsie && GLOB.cult_narsie.souls_needed[src])
GLOB.cult_narsie.souls_needed -= src
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 1d8e5ed21b..48e6f8c288 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -647,11 +647,11 @@
/obj/item/reagent_containers/spray/cyborg_drying
name = "drying agent spray"
color = "#A000A0"
- list_reagents = list("drying_agent" = 250)
+ list_reagents = list(/datum/reagent/drying_agent = 250)
/obj/item/reagent_containers/spray/cyborg_lube
name = "lube spray"
- list_reagents = list("lube" = 250)
+ list_reagents = list(/datum/reagent/lube = 250)
/obj/item/robot_module/clown
name = "Clown"
@@ -725,17 +725,17 @@
var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules
var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules
if(O)
- O.reagents.add_reagent("enzyme", 2 * coeff)
+ O.reagents.add_reagent(/datum/reagent/consumable/enzyme, 2 * coeff)
if(LR)
for(var/i in 1 to coeff)
LR.Charge(R)
var/obj/item/reagent_containers/spray/cyborg_drying/CD = locate(/obj/item/reagent_containers/spray/cyborg_drying) in basic_modules
if(CD)
- CD.reagents.add_reagent("drying_agent", 5 * coeff)
+ CD.reagents.add_reagent(/datum/reagent/drying_agent, 5 * coeff)
var/obj/item/reagent_containers/spray/cyborg_lube/CL = locate(/obj/item/reagent_containers/spray/cyborg_lube) in emag_modules
if(CL)
- CL.reagents.add_reagent("lube", 2 * coeff)
+ CL.reagents.add_reagent(/datum/reagent/lube, 2 * coeff)
/obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module)
var/mob/living/silicon/robot/R = loc
diff --git a/code/modules/mob/living/simple_animal/astral.dm b/code/modules/mob/living/simple_animal/astral.dm
index 3d0c335989..472cbd7414 100644
--- a/code/modules/mob/living/simple_animal/astral.dm
+++ b/code/modules/mob/living/simple_animal/astral.dm
@@ -44,7 +44,7 @@
if(isliving(A))
if(ishuman(A))
var/mob/living/carbon/human/H = A
- if(H.reagents.has_reagent("astral") && !H.mind)
+ if(H.reagents.has_reagent(/datum/reagent/fermi/astral) && !H.mind)
var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in H.reagents.reagent_list
if(As.originalmind == src.mind && As.current_cycle < 10 && H.stat != DEAD) //So you can return to your body.
to_chat(src, "The intensity of the astrogen in your body is too much allow you to return to yourself yet!")
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index fed770d0b0..13e9299b1d 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -43,17 +43,17 @@
var/declare_cooldown = 0 //Prevents spam of critical patient alerts.
var/stationary_mode = 0 //If enabled, the Medibot will not move automatically.
//Setting which reagents to use to treat what by default. By id.
- var/treatment_brute_avoid = "tricordrazine"
- var/treatment_brute = "bicaridine"
+ var/treatment_brute_avoid = /datum/reagent/medicine/tricordrazine
+ var/treatment_brute = /datum/reagent/medicine/bicaridine
var/treatment_oxy_avoid = null
- var/treatment_oxy = "dexalin"
- var/treatment_fire_avoid = "tricordrazine"
- var/treatment_fire = "kelotane"
- var/treatment_tox_avoid = "tricordrazine"
- var/treatment_tox = "charcoal"
- var/treatment_tox_toxlover = "toxin"
+ var/treatment_oxy = /datum/reagent/medicine/dexalin
+ var/treatment_fire_avoid = /datum/reagent/medicine/tricordrazine
+ var/treatment_fire = /datum/reagent/medicine/kelotane
+ var/treatment_tox_avoid = /datum/reagent/medicine/tricordrazine
+ var/treatment_tox = /datum/reagent/medicine/charcoal
+ var/treatment_tox_toxlover = /datum/reagent/toxin
var/treatment_virus_avoid = null
- var/treatment_virus = "spaceacillin"
+ var/treatment_virus = /datum/reagent/medicine/spaceacillin
var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible.
var/shut_up = 0 //self explanatory :)
@@ -61,9 +61,9 @@
name = "\improper Mysterious Medibot"
desc = "International Medibot of mystery."
skin = "bezerk"
- treatment_brute = "tricordrazine"
- treatment_fire = "tricordrazine"
- treatment_tox = "tricordrazine"
+ treatment_brute = /datum/reagent/medicine/tricordrazine
+ treatment_fire = /datum/reagent/medicine/tricordrazine
+ treatment_tox = /datum/reagent/medicine/tricordrazine
/mob/living/simple_animal/bot/medbot/derelict
name = "\improper Old Medibot"
@@ -71,13 +71,13 @@
skin = "bezerk"
heal_threshold = 0
declare_crit = 0
- treatment_oxy = "pancuronium"
+ treatment_oxy = /datum/reagent/toxin/pancuronium
treatment_brute_avoid = null
- treatment_brute = "pancuronium"
+ treatment_brute = /datum/reagent/toxin/pancuronium
treatment_fire_avoid = null
- treatment_fire = "sodium_thiopental"
+ treatment_fire = /datum/reagent/toxin/sodium_thiopental
treatment_tox_avoid = null
- treatment_tox = "sodium_thiopental"
+ treatment_tox = /datum/reagent/toxin/sodium_thiopental
/mob/living/simple_animal/bot/medbot/update_icon()
cut_overlays()
@@ -369,8 +369,9 @@
//If they're injured, we're using a beaker, and don't have one of our WONDERCHEMS.
if((reagent_glass) && (use_beaker) && ((C.getBruteLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getOxyLoss() >= (heal_threshold + 15))))
- for(var/datum/reagent/R in reagent_glass.reagents.reagent_list)
- if(!C.reagents.has_reagent(R.id))
+ for(var/A in reagent_glass.reagents.reagent_list)
+ var/datum/reagent/R = A
+ if(!C.reagents.has_reagent(R.type))
return TRUE
//They're injured enough for it!
@@ -477,8 +478,9 @@
//If the patient is injured but doesn't have our special reagent in them then we should give it to them first
if(reagent_id && use_beaker && reagent_glass && reagent_glass.reagents.total_volume)
- for(var/datum/reagent/R in reagent_glass.reagents.reagent_list)
- if(!C.reagents.has_reagent(R.id))
+ for(var/A in reagent_glass.reagents.reagent_list)
+ var/datum/reagent/R = A
+ if(!C.reagents.has_reagent(R.type))
reagent_id = "internal_beaker"
break
diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm
index ee770fc2ca..bfe7b2cde0 100644
--- a/code/modules/mob/living/simple_animal/bot/secbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/secbot.dm
@@ -54,7 +54,7 @@
var/atom/Tsec = drop_location()
new /obj/item/stock_parts/cell/potato(Tsec)
var/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/S = new(Tsec)
- S.reagents.add_reagent("whiskey", 15)
+ S.reagents.add_reagent(/datum/reagent/consumable/ethanol/whiskey, 15)
S.on_reagent_change(ADD_REAGENT)
..()
diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm
index 00f7b8cab7..dacf8c4833 100644
--- a/code/modules/mob/living/simple_animal/friendly/cat.dm
+++ b/code/modules/mob/living/simple_animal/friendly/cat.dm
@@ -280,8 +280,8 @@
if(.) //the attack was blocked
return
if(L.a_intent == INTENT_HARM && L.reagents && !stat)
- L.reagents.add_reagent("nutriment", 0.4)
- L.reagents.add_reagent("vitamin", 0.4)
+ L.reagents.add_reagent(/datum/reagent/consumable/nutriment, 0.4)
+ L.reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 0.4)
//Cat made
/mob/living/simple_animal/pet/cat/custom_cat
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index 2679c68b52..6754f94b01 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -455,12 +455,12 @@
/obj/item/udder/Initialize()
create_reagents(50)
- reagents.add_reagent("milk", 20)
+ reagents.add_reagent(/datum/reagent/consumable/milk, 20)
. = ..()
/obj/item/udder/proc/generateMilk()
if(prob(5))
- reagents.add_reagent("milk", rand(5, 10))
+ reagents.add_reagent(/datum/reagent/consumable/milk, rand(5, 10))
/obj/item/udder/proc/milkAnimal(obj/O, mob/user)
var/obj/item/reagent_containers/glass/G = O
diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm
index fec75e4a36..69d9a0eef3 100644
--- a/code/modules/mob/living/simple_animal/friendly/mouse.dm
+++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm
@@ -117,9 +117,9 @@
icon_state = "mouse_gray_dead"
bitesize = 3
eatverb = "devour"
- list_reagents = list("nutriment" = 3, "vitamin" = 2)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2)
foodtype = GROSS | MEAT | RAW
- grind_results = list("blood" = 20, "liquidgibs" = 5)
+ grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5)
/obj/item/reagent_containers/food/snacks/deadmouse/on_grind()
reagents.clear_reagents()
diff --git a/code/modules/mob/living/simple_animal/friendly/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm
index 2f37857902..95838c9acb 100644
--- a/code/modules/mob/living/simple_animal/friendly/snake.dm
+++ b/code/modules/mob/living/simple_animal/friendly/snake.dm
@@ -1,6 +1,6 @@
/mob/living/simple_animal/hostile/retaliate/poison
var/poison_per_bite = 0
- var/poison_type = "toxin"
+ var/poison_type = /datum/reagent/toxin
/mob/living/simple_animal/hostile/retaliate/poison/AttackingTarget()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm
index 81dc9d3e24..f3ce343bfd 100644
--- a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm
@@ -96,10 +96,10 @@
icon_state = "bananaspider"
bitesize = 3
eatverb = "devours"
- list_reagents = list("nutriment" = 3, "vitamin" = 2)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2)
foodtype = GROSS | MEAT | RAW
- grind_results = list("blood" = 20, "liquidgibs" = 5)
- juice_results = list("banana" = 0)
+ grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5)
+ juice_results = list(/datum/reagent/consumable/banana = 0)
/obj/item/reagent_containers/food/snacks/deadbanana_spider/Initialize()
diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm
index 89c4f70f69..bb1f1284b5 100644
--- a/code/modules/mob/living/simple_animal/hostile/bees.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bees.dm
@@ -140,7 +140,7 @@
var/mob/living/L = target
if(L.reagents)
beegent.reaction_mob(L, INJECT)
- L.reagents.add_reagent(beegent.id, rand(1,5))
+ L.reagents.add_reagent(beegent.type, rand(1,5))
/mob/living/simple_animal/hostile/poison/bees/proc/assign_reagent(datum/reagent/R)
@@ -205,7 +205,7 @@
/mob/living/simple_animal/hostile/poison/bees/toxin/Initialize()
. = ..()
var/datum/reagent/R = pick(typesof(/datum/reagent/toxin))
- assign_reagent(GLOB.chemical_reagents_list[initial(R.id)])
+ assign_reagent(GLOB.chemical_reagents_list[R])
/mob/living/simple_animal/hostile/poison/bees/queen
name = "queen bee"
@@ -225,7 +225,7 @@
if(. && beegent && isliving(target))
var/mob/living/L = target
beegent.reaction_mob(L, TOUCH)
- L.reagents.add_reagent(beegent.id, rand(1,5))
+ L.reagents.add_reagent(beegent.type, rand(1,5))
//PEASENT BEES
@@ -236,7 +236,7 @@
/mob/living/simple_animal/hostile/poison/bees/proc/reagent_incompatible(mob/living/simple_animal/hostile/poison/bees/B)
if(!B)
return FALSE
- if(B.beegent && beegent && B.beegent.id != beegent.id || B.beegent && !beegent || !B.beegent && beegent)
+ if(B.beegent && beegent && B.beegent.type != beegent.type || B.beegent && !beegent || !B.beegent && beegent)
return TRUE
return FALSE
@@ -253,9 +253,10 @@
/obj/item/queen_bee/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/reagent_containers/syringe))
var/obj/item/reagent_containers/syringe/S = I
- if(S.reagents.has_reagent("royal_bee_jelly")) //checked twice, because I really don't want royal bee jelly to be duped
- if(S.reagents.has_reagent("royal_bee_jelly",5))
- S.reagents.remove_reagent("royal_bee_jelly", 5)
+ var/jelly_amount = S.reagents.get_reagent_amount(/datum/reagent/royal_bee_jelly)
+ if(jelly_amount)
+ if(jelly_amount >= 5)
+ S.reagents.remove_reagent(/datum/reagent/royal_bee_jelly, 5)
var/obj/item/queen_bee/qb = new(user.drop_location())
qb.queen = new(qb)
if(queen && queen.beegent)
@@ -266,8 +267,8 @@
to_chat(user, "You don't have enough royal bee jelly to split a bee in two!")
else
var/datum/reagent/R = GLOB.chemical_reagents_list[S.reagents.get_master_reagent_id()]
- if(R && S.reagents.has_reagent(R.id, 5))
- S.reagents.remove_reagent(R.id,5)
+ if(R && S.reagents.has_reagent(R.type, 5))
+ S.reagents.remove_reagent(R.type,5)
queen.assign_reagent(R)
user.visible_message("[user] injects [src]'s genome with [R.name], mutating it's DNA!","You inject [src]'s genome with [R.name], mutating it's DNA!")
name = queen.name
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index 69209f7266..2e7c0ff455 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -6,7 +6,7 @@
/mob/living/simple_animal/hostile/poison
var/poison_per_bite = 5
- var/poison_type = "toxin"
+ var/poison_type = /datum/reagent/toxin
/mob/living/simple_animal/hostile/poison/AttackingTarget()
. = ..()
@@ -158,7 +158,7 @@
melee_damage_upper = 1
poison_per_bite = 12
move_to_delay = 4
- poison_type = "venom" //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe?
+ poison_type = /datum/reagent/toxin/venom //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe?
speed = 1
gold_core_spawnable = NO_SPAWN
@@ -217,7 +217,7 @@
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
maxbodytemp = 1500
- poison_type = "frostoil"
+ poison_type = /datum/reagent/consumable/frostoil
color = rgb(114,228,250)
gold_core_spawnable = NO_SPAWN
@@ -226,7 +226,7 @@
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
maxbodytemp = 1500
- poison_type = "frostoil"
+ poison_type = /datum/reagent/consumable/frostoil
color = rgb(114,228,250)
gold_core_spawnable = NO_SPAWN
@@ -235,7 +235,7 @@
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
maxbodytemp = 1500
- poison_type = "frostoil"
+ poison_type = /datum/reagent/consumable/frostoil
color = rgb(114,228,250)
gold_core_spawnable = NO_SPAWN
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
index d1e8f1f49e..34903a477b 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
@@ -42,7 +42,7 @@
..()
if(iscarbon(target))
var/mob/living/carbon/C = target
- C.reagents.add_reagent("leaper_venom", 5)
+ C.reagents.add_reagent(/datum/reagent/toxin/leaper_venom, 5)
return
if(isanimal(target))
var/mob/living/simple_animal/L = target
@@ -96,7 +96,7 @@
L.Knockdown(50)
if(iscarbon(L))
var/mob/living/carbon/C = L
- C.reagents.add_reagent("leaper_venom", 5)
+ C.reagents.add_reagent(/datum/reagent/toxin/leaper_venom, 5)
if(isanimal(L))
var/mob/living/simple_animal/A = L
A.adjustHealth(25)
@@ -105,7 +105,6 @@
/datum/reagent/toxin/leaper_venom
name = "Leaper venom"
- id = "leaper_venom"
description = "A toxin spat out by leapers that, while harmless in small doses, quickly creates a toxic reaction if too much is in the body."
color = "#801E28" // rgb: 128, 30, 40
toxpwr = 0
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm
index 910e9c3c4a..9e9fbaeab8 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm
@@ -131,7 +131,7 @@
/obj/item/udder/gutlunch/generateMilk()
if(prob(60))
- reagents.add_reagent("cream", rand(2, 5))
+ reagents.add_reagent(/datum/reagent/consumable/cream, rand(2, 5))
if(prob(45))
- reagents.add_reagent("salglu_solution", rand(2,5))
+ reagents.add_reagent(/datum/reagent/medicine/salglu_solution, rand(2,5))
diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
index a5e3cd8120..8301489e8c 100644
--- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
@@ -187,6 +187,6 @@
var/counter
for(counter=0, counter<=powerlevel, counter++)
var/obj/item/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/reagent_containers/food/snacks/hugemushroomslice(src.loc)
- S.reagents.add_reagent("mushroomhallucinogen", powerlevel)
- S.reagents.add_reagent("omnizine", powerlevel)
- S.reagents.add_reagent("synaptizine", powerlevel)
+ S.reagents.add_reagent(/datum/reagent/drug/mushroomhallucinogen, powerlevel)
+ S.reagents.add_reagent(/datum/reagent/medicine/omnizine, powerlevel)
+ S.reagents.add_reagent(/datum/reagent/medicine/synaptizine, powerlevel)
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 439ea5b2bf..107a6eed38 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -141,9 +141,9 @@
. = ..()
remove_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE)
var/amount = 0
- if(reagents.has_reagent("morphine")) // morphine slows slimes down
+ if(reagents.has_reagent(/datum/reagent/medicine/morphine)) // morphine slows slimes down
amount = 2
- if(reagents.has_reagent("frostoil")) // Frostoil also makes them move VEEERRYYYYY slow
+ if(reagents.has_reagent(/datum/reagent/consumable/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow
amount = 5
if(amount)
add_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount)
diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm
index 816ae58749..89f5d20e70 100644
--- a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm
@@ -4,7 +4,7 @@
if(!ninjacost(0,N_ADRENALINE))
var/mob/living/carbon/human/H = affecting
- H.do_adrenaline(150, TRUE, 0, 0, TRUE, list("inaprovaline" = 3, "synaptizine" = 10, "omnizine" = 10), "You feel a sudden surge of energy!")
+ H.do_adrenaline(150, TRUE, 0, 0, TRUE, list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/omnizine = 10), "You feel a sudden surge of energy!")
H.say(pick("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!","HURT ME MOOORRREEE!","IMPRESSIVE!"), forced = "ninjaboost")
@@ -15,5 +15,5 @@
/obj/item/clothing/suit/space/space_ninja/proc/ninjaboost_after()
var/mob/living/carbon/human/H = affecting
- H.reagents.add_reagent("radium", a_transfer)
+ H.reagents.add_reagent(/datum/reagent/radium, a_transfer)
to_chat(H, "You are beginning to feel the after-effect of the injection.")
diff --git a/code/modules/ninja/suit/suit_attackby.dm b/code/modules/ninja/suit/suit_attackby.dm
index 0496a2f1c3..ed920a57d1 100644
--- a/code/modules/ninja/suit/suit_attackby.dm
+++ b/code/modules/ninja/suit/suit_attackby.dm
@@ -5,13 +5,13 @@
return ..()
if(istype(I, /obj/item/reagent_containers/glass))//If it's a glass beaker.
- if(I.reagents.has_reagent("radium", a_transfer) && a_boost < a_maxamount)
- I.reagents.remove_reagent("radium", a_transfer)
+ if(I.reagents.has_reagent(/datum/reagent/radium, a_transfer) && a_boost < a_maxamount)
+ I.reagents.remove_reagent(/datum/reagent/radium, a_transfer)
a_boost++;
to_chat(U, "There are now [a_boost] adrenaline boosts remaining.")
return
- if(I.reagents.has_reagent("smoke_powder", a_transfer) && s_bombs < s_maxamount)
- I.reagents.remove_reagent("smoke_powder", a_transfer)
+ if(I.reagents.has_reagent(/datum/reagent/smoke_powder, a_transfer) && s_bombs < s_maxamount)
+ I.reagents.remove_reagent(/datum/reagent/smoke_powder, a_transfer)
s_bombs++;
to_chat(U, "There are now [s_bombs] smoke bombs remaining.")
return
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 7567fc1a52..8172a57399 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -23,7 +23,7 @@
throw_range = 7
materials = list(MAT_METAL=10)
pressure_resistance = 2
- grind_results = list("iron" = 2, "iodine" = 1)
+ grind_results = list(/datum/reagent/iron = 2, /datum/reagent/iodine = 1)
var/colour = "black" //what colour the ink is!
var/degrees = 0
var/font = PEN_FONT
@@ -165,9 +165,9 @@
/obj/item/pen/sleepy/Initialize()
. = ..()
create_reagents(45, OPENCONTAINER)
- reagents.add_reagent("chloralhydrate", 20)
- reagents.add_reagent("mutetoxin", 15)
- reagents.add_reagent("tirizene", 10)
+ reagents.add_reagent(/datum/reagent/toxin/chloralhydrate, 20)
+ reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 15)
+ reagents.add_reagent(/datum/reagent/toxin/staminatoxin, 10)
/*
* (Alan) Edaggers
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 4e74ccc44b..e8d318697c 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -335,6 +335,6 @@
name = "toner cartridge"
icon = 'icons/obj/device.dmi'
icon_state = "tonercartridge"
- grind_results = list("iodine" = 40, "iron" = 10)
+ grind_results = list(/datum/reagent/iodine = 40, /datum/reagent/iron = 10)
var/charges = 5
var/max_charges = 5
diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm
index 5682c333c7..49f315d998 100644
--- a/code/modules/photography/photos/photo.dm
+++ b/code/modules/photography/photos/photo.dm
@@ -9,7 +9,7 @@
w_class = WEIGHT_CLASS_TINY
resistance_flags = FLAMMABLE
max_integrity = 50
- grind_results = list("iodine" = 4)
+ grind_results = list(/datum/reagent/iodine = 4)
var/datum/picture/picture
var/scribble //Scribble on the back.
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index cc03976f79..fde2ce4178 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -490,7 +490,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
attack_verb = list("whipped", "lashed", "disciplined", "flogged")
singular_name = "cable piece"
full_w_class = WEIGHT_CLASS_SMALL
- grind_results = list("copper" = 2) //2 copper per cable in the coil
+ grind_results = list(/datum/reagent/copper = 2) //2 copper per cable in the coil
usesound = 'sound/items/deconstruct.ogg'
/obj/item/stack/cable_coil/cyborg
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index ded99d6fa6..5f9e7038f3 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -14,7 +14,7 @@
var/charge = 0 // note %age conveted to actual charge in New
var/maxcharge = 1000
materials = list(MAT_METAL=700, MAT_GLASS=50)
- grind_results = list("lithium" = 15, "iron" = 5, "silicon" = 5)
+ grind_results = list(/datum/reagent/lithium = 15, /datum/reagent/iron = 5, /datum/reagent/silicon = 5)
var/rigged = FALSE // true if rigged to explode
var/chargerate = 100 //how much power is given every tick in a recharger
var/self_recharge = 0 //does it self recharge, over time, or not?
@@ -106,7 +106,7 @@
/obj/item/stock_parts/cell/on_reagent_change(changetype)
..()
- rigged = reagents?.has_reagent("plasma", 5) ? TRUE : FALSE //has_reagent returns the reagent datum
+ rigged = reagents?.has_reagent(/datum/reagent/toxin/plasma, 5) ? TRUE : FALSE //has_reagent returns the reagent datum
/obj/item/stock_parts/cell/proc/explode()
var/turf/T = get_turf(src.loc)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index cdbaa29a3b..e50b11ea35 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -719,7 +719,7 @@
var/base_state
var/switchcount = 0 // number of times switched
materials = list(MAT_GLASS=100)
- grind_results = list("silicon" = 5, "nitrogen" = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs
+ grind_results = list(/datum/reagent/silicon = 5, /datum/reagent/nitrogen = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs
var/rigged = 0 // true if rigged to explode
var/brightness = 2 //how much light it gives off
@@ -789,7 +789,7 @@
to_chat(user, "You inject the solution into \the [src].")
- if(S.reagents.has_reagent("plasma", 5))
+ if(S.reagents.has_reagent(/datum/reagent/toxin/plasma, 5))
rigged = 1
diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
index ab463163f0..a8d3934208 100644
--- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm
+++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
@@ -134,8 +134,8 @@
/obj/item/ammo_casing/shotgun/dart/bioterror/Initialize()
. = ..()
- reagents.add_reagent("neurotoxin", 6)
- reagents.add_reagent("spore", 6)
- reagents.add_reagent("mutetoxin", 6) //;HELP OPS IN MAINT
- reagents.add_reagent("coniine", 6)
- reagents.add_reagent("sodium_thiopental", 6)
+ reagents.add_reagent(/datum/reagent/toxin/fentanyl, 6)
+ reagents.add_reagent(/datum/reagent/toxin/spore, 6)
+ reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 6) //;HELP OPS IN MAINT
+ reagents.add_reagent(/datum/reagent/toxin/coniine, 6)
+ reagents.add_reagent(/datum/reagent/toxin/sodium_thiopental, 6)
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 9141a6d299..04fffaf431 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -210,7 +210,7 @@
if(reagents && reagents.reagent_list)
reagent_note = " REAGENTS:"
for(var/datum/reagent/R in reagents.reagent_list)
- reagent_note += R.id + " ("
+ reagent_note += R.type + " ("
reagent_note += num2text(R.volume) + ") "
if(ismob(firer))
diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm
index bdbf706448..29e6c39c31 100644
--- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm
+++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm
@@ -31,9 +31,9 @@
/obj/item/projectile/bullet/dart/metalfoam/Initialize()
. = ..()
- reagents.add_reagent("aluminium", 15)
- reagents.add_reagent("foaming_agent", 5)
- reagents.add_reagent("facid", 5)
+ reagents.add_reagent(/datum/reagent/aluminium, 15)
+ reagents.add_reagent(/datum/reagent/foaming_agent, 5)
+ reagents.add_reagent(/datum/reagent/toxin/acid, 5)
/obj/item/projectile/bullet/dart/syringe
name = "syringe"
@@ -52,20 +52,19 @@
if(blocked != 100)
if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body.
..(target, blocked, TRUE)
- for(var/datum/reagent/R in reagents.reagent_list) //OD prevention time!
- if(istype(R, /datum/reagent/medicine)) //Is this a medicine?
- if(M.reagents.has_reagent(R.id))
- if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD?
- M.reagents.add_reagent(R.id, R.volume)
- else
- var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.id)) -1)
- M.reagents.add_reagent(R.id, transVol)
+ for(var/datum/reagent/medicine/R in reagents.reagent_list) //OD prevention time!
+ if(M.reagents.has_reagent(R.type))
+ if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD?
+ M.reagents.add_reagent(R.type, R.volume)
else
- if(!R.overdose_threshold == 0)
- var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1)
- M.reagents.add_reagent(R.id, transVol)
- else
- M.reagents.add_reagent(R.id, R.volume)
+ var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.type)) -1)
+ M.reagents.add_reagent(R.type, transVol)
+ else
+ if(!R.overdose_threshold == 0)
+ var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1)
+ M.reagents.add_reagent(R.type, transVol)
+ else
+ M.reagents.add_reagent(R.type, R.volume)
diff --git a/code/modules/reagents/chem_wiki_render.dm b/code/modules/reagents/chem_wiki_render.dm
index efb6bdecfd..e24da70d47 100644
--- a/code/modules/reagents/chem_wiki_render.dm
+++ b/code/modules/reagents/chem_wiki_render.dm
@@ -1,18 +1,11 @@
//Generates a markdown txt file for use with the wiki
/proc/find_reagent(input)
- . = FALSE
- if(GLOB.chemical_reagents_list[input]) //prefer IDs!
- var/datum/reagent/R = GLOB.chemical_reagents_list[input]
- return R
- else
- for(var/X in GLOB.chemical_reagents_list)
- var/datum/reagent/R = GLOB.chemical_reagents_list[X]
- if(input == replacetext(lowertext(R.name), " ", ""))
- return R
- if(input == replacetext(lowertext(R.id), " ", ""))
- return R
-
+ //prefer types!
+ . = GLOB.chemical_reagents_list[text2path(input)]
+ if(.)
+ return
+ . = GLOB.name2reagent[ckey(input)]
@@ -24,7 +17,7 @@
var/prefix = "|Name | Reagents | Reaction vars | Description | Chem properties |\n|---|---|---|-----------|---|\n"
- var/input_reagent = replacetext(lowertext(input("Input the name/id of a reagent to get it's description on it's own, or leave blank to parse every chem.", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name
+ var/input_reagent = replacetext(lowertext(input("Input the name/type of a reagent to get it's description on it's own, or leave blank to parse every chem.", "Input") as text), " ", "") //95% of the time, the reagent type is a lowercase, no spaces / underscored version of the name
if(input_reagent)
var/input_reagent2 = find_reagent(input_reagent)
if(!input_reagent2)
@@ -68,98 +61,23 @@
var/impure = ""
//Chem_dispencer
- var/list/dispensable_reagents = list(
- "hydrogen",
- "lithium",
- "carbon",
- "nitrogen",
- "oxygen",
- "fluorine",
- "sodium",
- "aluminium",
- "silicon",
- "phosphorus",
- "sulfur",
- "chlorine",
- "potassium",
- "iron",
- "copper",
- "mercury",
- "radium",
- "water",
- "ethanol",
- "sugar",
- "sacid",
- "welding_fuel",
- "silver",
- "iodine",
- "bromine",
- "stable_plasma"
- )
- var/list/components = list(
- "oil",
- "ammonia",
- "ash",
- "acetone",
- "phenol",
- "diethylamine",
- "saltpetre",
- "sodiumchloride",
- "lye"
- )
+ var/obj/machinery/chem_dispenser/C
+ var/list/dispensable_reagents = initial(C.dispensable_reagents)
+ var/list/components = initial(C.upgrade_reagents) + initial(C.upgrade_reagents2) + initial(C.upgrade_reagents3)
var/list/grind = list(
- "bluespace",
- "gold",
- "plasma",
- "uranium"
+ /datum/reagent/bluespace,
+ /datum/reagent/gold,
+ /datum/reagent/toxin/plasma,
+ /datum/reagent/uranium
)
//Bartender
- var/dispence_drinks = list(
- "water",
- "ice",
- "coffee",
- "cream",
- "tea",
- "icetea",
- "cola",
- "spacemountainwind",
- "dr_gibb",
- "space_up",
- "tonic",
- "sodawater",
- "lemon_lime",
- "pwr_game",
- "shamblers",
- "sugar",
- "orangejuice",
- "grenadine",
- "limejuice",
- "tomatojuice",
- "lemonjuice",
- "menthol"
- )
- var/dispence_alco = list(
- "beer",
- "kahlua",
- "whiskey",
- "wine",
- "vodka",
- "gin",
- "rum",
- "tequila",
- "vermouth",
- "cognac",
- "ale",
- "absinthe",
- "hcider",
- "creme_de_menthe",
- "creme_de_cacao",
- "triple_sec",
- "sake",
- "applejack"
- )
+ var/obj/machinery/chem_dispenser/drinks/D
+ var/dispence_drinks = initial(D.dispensable_reagents)
+
+ var/obj/machinery/chem_dispenser/drinks/beer/B
+ var/dispence_alco = initial(B.dispensable_reagents)
var/breakout = FALSE
for(var/i = 1, i <= 2, i+=1)
@@ -169,31 +87,31 @@
continue
for(var/Y in dispensable_reagents) //Why do you have to do this
- if(R.id == Y)
+ if(R.type == Y)
basic += generate_chemwiki_line(R, X, processCR)
breakout = TRUE
continue
for(var/Y in components)
- if(R.id == Y)
+ if(R.type == Y)
upgraded += generate_chemwiki_line(R, X, processCR)
breakout = TRUE
continue
for(var/Y in dispence_drinks)
- if(R.id == Y)
+ if(R.type == Y)
drinks += generate_chemwiki_line(R, X, processCR)
breakout = TRUE
continue
for(var/Y in dispence_alco)
- if(R.id == Y)
+ if(R.type == Y)
alco += generate_chemwiki_line(R, X, processCR)
breakout = TRUE
continue
for(var/Y in grind)
- if(R.id == Y)
+ if(R.type == Y)
grinded += generate_chemwiki_line(R, X, processCR)
breakout = TRUE
continue
@@ -273,7 +191,7 @@
/proc/generate_chemwiki_line(datum/reagent/R, X, processCR)
//name | Reagent pH | reagents | reaction temp | explosion temp | pH range | Kinetics | description | OD level | Addiction level | Metabolism rate | impure chem | inverse chem
- var/datum/chemical_reaction/CR = get_chemical_reaction(R.id)
+ var/datum/chemical_reaction/CR = get_chemical_reaction(R.type)
if((!CR && processCR) || (CR && !processCR)) // Do reactions first.
return ""
@@ -284,11 +202,11 @@
outstring += ""
for(var/R2 in CR.required_reagents)
R3 = GLOB.chemical_reagents_list[R2]//What a convoluted mess
- outstring += "- [R3.name]: [CR.required_reagents[R3.id]]u
"
+ outstring += "- [R3.name]: [CR.required_reagents[R3.type]]u
"
if(CR.required_catalysts)
for(var/R2 in CR.required_catalysts)
R3 = GLOB.chemical_reagents_list[R2]
- outstring += "- Catalyst: [R3.name]: [CR.required_catalysts[R3.id]]u
"
+ outstring += "- Catalyst: [R3.name]: [CR.required_catalysts[R3.type]]u
"
outstring += " | "
else
outstring += "N/A | "
@@ -332,11 +250,11 @@
//Description, OD, Addict, Meta
outstring += "[R.description] | - Metabolism rate: [R.metabolization_rate/2]u/s
[(R.overdose_threshold?"- Overdose: [R.overdose_threshold]u
":"")] [(R.addiction_threshold?"- Addiction: [R.addiction_threshold]u
":"")] "
- if(R.impure_chem && R.impure_chem != "fermiTox")
+ if(R.impure_chem && R.impure_chem != /datum/reagent/impure/fermiTox)
R3 = GLOB.chemical_reagents_list[R.impure_chem]
outstring += "- Impure chem:[R3.name]
"
- if(R.inverse_chem && R.impure_chem != "fermiTox")
+ if(R.inverse_chem && R.impure_chem != /datum/reagent/impure/fermiTox)
R3 = GLOB.chemical_reagents_list[R.inverse_chem]
outstring += "- Inverse chem:[R3.name]
[(R3.inverse_chem_val?"- Inverse purity: [R3.inverse_chem_val]
":"")] "
@@ -361,11 +279,11 @@
var/datum/reagent/R3
for(var/R2 in CR.required_reagents)
R3 = GLOB.chemical_reagents_list[R2]
- outstring += "- [R3.name]: [CR.required_reagents[R3.id]]u
"
+ outstring += "- [R3.name]: [CR.required_reagents[R3.type]]u
"
if(CR.required_catalysts)
for(var/R2 in CR.required_catalysts)
R3 = GLOB.chemical_reagents_list[R2]
- outstring += "- Catalyst: [R3.name]: [CR.required_catalysts[R3.id]]u
"
+ outstring += "- Catalyst: [R3.name]: [CR.required_catalysts[R3.type]]u
"
outstring += " | "
//Reaction vars
diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index d540cd02fe..bf3c4220b4 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -11,13 +11,13 @@
for(var/path in paths)
var/datum/reagent/D = new path()
- GLOB.chemical_reagents_list[D.id] = D
+ GLOB.chemical_reagents_list[path] = D
/proc/build_chemical_reactions_list()
//Chemical Reactions - Initialises all /datum/chemical_reaction into a list
// It is filtered into multiple lists within a list.
// For example:
- // chemical_reaction_list["plasma"] is a list of all reactions relating to plasma
+ // chemical_reaction_list[/datum/reagent/toxin/plasma] is a list of all reactions relating to plasma
if(GLOB.chemical_reactions_list)
return
@@ -32,14 +32,11 @@
var/datum/chemical_reaction/D = new path()
var/list/reaction_ids = list()
- if(!D.id)
- continue
-
if(D.required_reagents && D.required_reagents.len)
for(var/reaction in D.required_reagents)
reaction_ids += reaction
- // Create filters based on each reagent id in the required reagents list
+ // Create filters based on each reagent type in the required reagents list
for(var/id in reaction_ids)
if(!GLOB.chemical_reactions_list[id])
GLOB.chemical_reactions_list[id] = list()
@@ -63,7 +60,7 @@
var/targetVol = 0 //the target volume, i.e. the total amount that can be created during a fermichem reaction.
var/reactedVol = 0 //how much of the reagent is reacted during a fermireaction
var/fermiIsReacting = FALSE //that prevents multiple reactions from occurring (i.e. add_reagent calls to process_reactions(), this stops any extra reactions.)
- var/fermiReactID //ID of the chem being made during a fermireaction, kept here so it's cache isn't lost between loops/procs.
+ var/fermiReactID //instance of the chem reaction used during a fermireaction, kept here so it's cache isn't lost between loops/procs.
/datum/reagents/New(maximum=100, new_flags)
maximum_volume = maximum
@@ -96,7 +93,7 @@
var/list/data = list()
for(var/r in reagent_list) //no reagents will be left behind
var/datum/reagent/R = r
- data += "[R.id] ([round(R.volume, CHEMICAL_QUANTISATION_LEVEL)]u)"
+ data += "[R.type] ([round(R.volume, CHEMICAL_QUANTISATION_LEVEL)]u)"
//Using IDs because SOME chemicals (I'm looking at you, chlorhydrate-beer) have the same names as other chemicals.
return english_list(data)
@@ -117,7 +114,7 @@
current_list_element = 1
var/datum/reagent/R = cached_reagents[current_list_element]
- remove_reagent(R.id, 1)
+ remove_reagent(R.type, 1)
current_list_element++
total_transfered++
@@ -132,7 +129,7 @@
var/part = amount / total_volume
for(var/reagent in cached_reagents)
var/datum/reagent/R = reagent
- remove_reagent(R.id, R.volume * part, ignore_pH = TRUE)
+ remove_reagent(R.type, R.volume * part, ignore_pH = TRUE)
pH = REAGENT_NORMAL_PH
update_total()
handle_reactions()
@@ -152,15 +149,15 @@
/datum/reagents/proc/get_master_reagent_id()
var/list/cached_reagents = reagent_list
- var/id
+ var/max_type
var/max_volume = 0
for(var/reagent in cached_reagents)
var/datum/reagent/R = reagent
if(R.volume > max_volume)
max_volume = R.volume
- id = R.id
+ max_type = R.type
- return id
+ return max_type
/datum/reagents/proc/get_master_reagent()
var/list/cached_reagents = reagent_list
@@ -198,9 +195,9 @@
trans_data = copy_data(T)
- R.add_reagent(T.id, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered.
+ R.add_reagent(T.type, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered.
- remove_reagent(T.id, transfer_amount, ignore_pH = TRUE)
+ remove_reagent(T.type, transfer_amount, ignore_pH = TRUE)
update_total()
R.update_total()
@@ -232,7 +229,7 @@
var/copy_amount = T.volume * part
if(preserve_data)
trans_data = T.data
- R.add_reagent(T.id, copy_amount * multiplier, trans_data)
+ R.add_reagent(T.type, copy_amount * multiplier, trans_data)
src.update_total()
R.update_total()
@@ -256,12 +253,12 @@
var/trans_data = null
for (var/CR in cached_reagents)
var/datum/reagent/current_reagent = CR
- if(current_reagent.id == reagent)
+ if(current_reagent.type == reagent)
if(preserve_data)
trans_data = current_reagent.data
- R.add_reagent(current_reagent.id, amount, trans_data, chem_temp, current_reagent.purity, pH, no_react = TRUE)
+ R.add_reagent(current_reagent.type, amount, trans_data, chem_temp, current_reagent.purity, pH, no_react = TRUE)
- remove_reagent(current_reagent.id, amount, 1)
+ remove_reagent(current_reagent.type, amount, 1)
break
src.update_total()
@@ -313,18 +310,21 @@
var/datum/reagent/R = addiction
if(C && R)
R.addiction_stage++
- if(1 <= R.addiction_stage && R.addiction_stage <= R.addiction_stage1_end)
- need_mob_update += R.addiction_act_stage1(C)
- else if(R.addiction_stage1_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage2_end)
- need_mob_update += R.addiction_act_stage2(C)
- else if(R.addiction_stage2_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage3_end)
- need_mob_update += R.addiction_act_stage3(C)
- else if(R.addiction_stage3_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage4_end)
- need_mob_update += R.addiction_act_stage4(C)
- else if(R.addiction_stage4_end <= R.addiction_stage)
- to_chat(C, "You feel like you've gotten over your need for [R.name].")
- SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction")
- cached_addictions.Remove(R)
+ switch(R.addiction_stage)
+ if(1 to R.addiction_stage1_end)
+ need_mob_update += R.addiction_act_stage1(C)
+ if(R.addiction_stage1_end to R.addiction_stage2_end)
+ need_mob_update += R.addiction_act_stage2(C)
+ if(R.addiction_stage2_end to R.addiction_stage3_end)
+ need_mob_update += R.addiction_act_stage3(C)
+ if(R.addiction_stage3_end to R.addiction_stage4_end)
+ need_mob_update += R.addiction_act_stage4(C)
+ if(R.addiction_stage4_end to INFINITY)
+ to_chat(C, "You feel like you've gotten over your need for [R.name].")
+ SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_addiction")
+ cached_addictions.Remove(R)
+ else
+ SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose")
addiction_tick++
if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates.
C.updatehealth()
@@ -381,7 +381,7 @@
reaction_occurred = 0
for(var/reagent in cached_reagents)
var/datum/reagent/R = reagent
- for(var/reaction in cached_reactions[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id
+ for(var/reaction in cached_reactions[R.type]) // Was a big list but now it should be smaller since we filtered it with our reagent type
if(!reaction)
continue
@@ -630,7 +630,7 @@
deltapH = 1
//This should never proc:
else
- WARNING("[my_atom] attempted to determine FermiChem pH for '[C.id]' which broke for some reason! ([usr])")
+ WARNING("[my_atom] attempted to determine FermiChem pH for '[C.type]' which broke for some reason! ([usr])")
//Calculate DeltaT (Deviation of T from optimal)
if (cached_temp < C.OptimalTempMax && cached_temp >= C.OptimalTempMin)
@@ -679,7 +679,7 @@
//Above should reduce yeild based on holder purity.
//Purity Check
for(var/datum/reagent/R in my_atom.reagents.reagent_list)
- if(P == R.id)
+ if(P == R.type)
if (R.purity < C.PurityMin)//If purity is below the min, blow it up.
fermiIsReacting = FALSE
SSblackbox.record_feedback("tally", "fermi_chem", 1, ("[P] explosion"))
@@ -724,7 +724,7 @@
return cachedPurity/i
/datum/reagents/proc/uncache_purity(id)
- var/datum/reagent/R = has_reagent("[id]")
+ var/datum/reagent/R = has_reagent(id)
if(!R)
return
if(R.cached_purity == 1)
@@ -735,15 +735,15 @@
var/list/cached_reagents = reagent_list
for(var/_reagent in cached_reagents)
var/datum/reagent/R = _reagent
- if(R.id != reagent)
- del_reagent(R.id)
+ if(R.type != reagent)
+ del_reagent(R.type)
update_total()
/datum/reagents/proc/del_reagent(reagent)
var/list/cached_reagents = reagent_list
for(var/_reagent in cached_reagents)
var/datum/reagent/R = _reagent
- if(R.id == reagent)
+ if(R.type == reagent)
if(my_atom && isliving(my_atom))
var/mob/living/M = my_atom
if(R.metabolizing)
@@ -763,9 +763,9 @@
for(var/reagent in cached_reagents)
var/datum/reagent/R = reagent
if(R.volume <= 0)//For clarity
- del_reagent(R.id)
+ del_reagent(R.type)
if((R.volume < 0.01) && !fermiIsReacting)
- del_reagent(R.id)
+ del_reagent(R.type)
else
total_volume += R.volume
if(!reagent_list || !total_volume)
@@ -776,7 +776,7 @@
var/list/cached_reagents = reagent_list
for(var/reagent in cached_reagents)
var/datum/reagent/R = reagent
- del_reagent(R.id)
+ del_reagent(R.type)
pH = REAGENT_NORMAL_PH
return 0
@@ -842,13 +842,13 @@
WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])")
return FALSE
- if (D.id == "water" && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany.
+ if (D.type == /datum/reagent/water && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany.
if (pH < 2)
SSblackbox.record_feedback("tally", "fermi_chem", 1, "water-acid explosions")
var/datum/effect_system/smoke_spread/chem/s = new
var/turf/T = get_turf(my_atom)
var/datum/reagents/R = new/datum/reagents(3000)
- R.add_reagent("fermiAcid", amount)
+ R.add_reagent(/datum/reagent/fermi/fermiAcid, amount)
for (var/datum/reagent/reagentgas in reagent_list)
R.add_reagent(reagentgas, amount/5)
remove_reagent(reagentgas, amount/5)
@@ -895,7 +895,7 @@
//add the reagent to the existing if it exists
for(var/A in cached_reagents)
var/datum/reagent/R = A
- if (R.id == reagent) //IF MERGING
+ if (R.type == reagent) //IF MERGING
//Add amount and equalize purity
R.volume += round(amount, CHEMICAL_QUANTISATION_LEVEL)
R.purity = ((R.purity * R.volume) + (other_purity * amount)) /((R.volume + amount)) //This should add the purity to the product
@@ -937,7 +937,7 @@
return TRUE
-/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15)
+/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list(/datum/reagent/toxin = 10, /datum/reagent/consumable/ethanol/beer = 15)
for(var/r_id in list_reagents)
var/amt = list_reagents[r_id]
add_reagent(r_id, amt, data)
@@ -959,7 +959,7 @@
for(var/A in cached_reagents)
var/datum/reagent/R = A
- if (R.id == reagent)
+ if (R.type == reagent)
if((total_volume - amount) <= 0)//Because this can result in 0, I don't want it to crash.
pH = REAGENT_NORMAL_PH
//In practice this is really confusing and players feel like it randomly melts their beakers, but I'm not sure how else to handle it. We'll see how it goes and I can remove this if it confuses people.
@@ -986,7 +986,7 @@
var/list/cached_reagents = reagent_list
for(var/_reagent in cached_reagents)
var/datum/reagent/R = _reagent
- if (R.id == reagent)
+ if (R.type == reagent)
if(!amount)
return R
else
@@ -1001,7 +1001,7 @@
var/list/cached_reagents = reagent_list
for(var/_reagent in cached_reagents)
var/datum/reagent/R = _reagent
- if (R.id == reagent)
+ if (R.type == reagent)
return round(R.volume, CHEMICAL_QUANTISATION_LEVEL)
return 0
@@ -1034,7 +1034,7 @@
// We found a match, proceed to remove the reagent. Keep looping, we might find other reagents of the same type.
if(matches)
// Have our other proc handle removement
- has_removed_reagent = remove_reagent(R.id, amount, safety)
+ has_removed_reagent = remove_reagent(R.type, amount, safety)
return has_removed_reagent
@@ -1043,14 +1043,14 @@
var/list/cached_reagents = reagent_list
for(var/reagent in cached_reagents)
var/datum/reagent/R = reagent
- if(R.id == reagent_id)
+ if(R.type == reagent_id)
return R.data
/datum/reagents/proc/set_data(reagent_id, new_data)
var/list/cached_reagents = reagent_list
for(var/reagent in cached_reagents)
var/datum/reagent/R = reagent
- if(R.id == reagent_id)
+ if(R.type == reagent_id)
R.data = new_data
/datum/reagents/proc/copy_data(datum/reagent/current_reagent)
@@ -1143,12 +1143,12 @@
reagents = new/datum/reagents(max_vol, flags)
reagents.my_atom = src
-/proc/get_random_reagent_id() // Returns a random reagent ID minus blacklisted reagents
+/proc/get_random_reagent_id() // Returns a random reagent type minus blacklisted reagents
var/static/list/random_reagents = list()
if(!random_reagents.len)
for(var/thing in subtypesof(/datum/reagent))
var/datum/reagent/R = thing
if(initial(R.can_synth))
- random_reagents += initial(R.id)
+ random_reagents += R
var/picked_reagent = pick(random_reagents)
return picked_reagent
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index 2c5d7aa3e2..217c915a9e 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -1,3 +1,16 @@
+/proc/translate_legacy_chem_id(id)
+ switch (id)
+ if ("sacid")
+ return "sulphuricacid"
+ if ("facid")
+ return "fluorosulfuricacid"
+ if ("co2")
+ return "carbondioxide"
+ if ("mine_salve")
+ return "minerssalve"
+ else
+ return ckey(id)
+
/obj/machinery/chem_dispenser
name = "chem dispenser"
desc = "Creates and dispenses chemicals."
@@ -21,65 +34,66 @@
var/macrotier = 1
var/obj/item/reagent_containers/beaker = null
var/list/dispensable_reagents = list(
- "hydrogen",
- "lithium",
- "carbon",
- "nitrogen",
- "oxygen",
- "fluorine",
- "sodium",
- "aluminium",
- "silicon",
- "phosphorus",
- "sulfur",
- "chlorine",
- "potassium",
- "iron",
- "copper",
- "mercury",
- "radium",
- "water",
- "ethanol",
- "sugar",
- "sacid",
- "welding_fuel",
- "silver",
- "iodine",
- "bromine",
- "stable_plasma"
+ /datum/reagent/hydrogen,
+ /datum/reagent/lithium,
+ /datum/reagent/carbon,
+ /datum/reagent/nitrogen,
+ /datum/reagent/oxygen,
+ /datum/reagent/fluorine,
+ /datum/reagent/sodium,
+ /datum/reagent/aluminium,
+ /datum/reagent/silicon,
+ /datum/reagent/phosphorus,
+ /datum/reagent/sulfur,
+ /datum/reagent/chlorine,
+ /datum/reagent/potassium,
+ /datum/reagent/iron,
+ /datum/reagent/copper,
+ /datum/reagent/mercury,
+ /datum/reagent/radium,
+ /datum/reagent/water,
+ /datum/reagent/consumable/ethanol,
+ /datum/reagent/consumable/sugar,
+ /datum/reagent/toxin/acid,
+ /datum/reagent/fuel,
+ /datum/reagent/silver,
+ /datum/reagent/iodine,
+ /datum/reagent/bromine,
+ /datum/reagent/stable_plasma
)
//these become available once upgraded.
var/list/upgrade_reagents = list(
- "oil",
- "ammonia",
- "ash"
+ /datum/reagent/oil,
+ /datum/reagent/ammonia,
+ /datum/reagent/ash
)
var/list/upgrade_reagents2 = list(
- "acetone",
- "phenol",
- "diethylamine"
+ /datum/reagent/acetone,
+ /datum/reagent/phenol,
+ /datum/reagent/diethylamine
)
var/list/upgrade_reagents3 = list(
- "mine_salve",
- "toxin"
+ /datum/reagent/medicine/mine_salve,
+ /datum/reagent/toxin
)
var/list/emagged_reagents = list(
- "space_drugs",
- "plasma",
- "frostoil",
- "carpotoxin",
- "histamine",
- "morphine"
+ /datum/reagent/drug/space_drugs,
+ /datum/reagent/toxin/plasma,
+ /datum/reagent/consumable/frostoil,
+ /datum/reagent/toxin/carpotoxin,
+ /datum/reagent/toxin/histamine,
+ /datum/reagent/medicine/morphine
)
var/list/saved_recipes = list()
/obj/machinery/chem_dispenser/Initialize()
. = ..()
- dispensable_reagents = sortList(dispensable_reagents)
+ for(var/list/L in list(dispensable_reagents, emagged_reagents, upgrade_reagents, upgrade_reagents2, upgrade_reagents3))
+ L = sortList(L, /proc/cmp_reagents_asc)
update_icon()
/obj/machinery/chem_dispenser/Destroy()
@@ -213,7 +227,7 @@
var/chemname = temp.name
if(is_hallucinating && prob(5))
chemname = "[pick_list_replacements("hallucination.json", "chemicals")]"
- chemicals.Add(list(list("title" = chemname, "id" = temp.id)))
+ chemicals.Add(list(list("title" = chemname, "id" = ckey(temp.name))))
for(var/recipe in saved_recipes)
recipes.Add(list(recipe))
data["chemicals"] = chemicals
@@ -235,7 +249,7 @@
if("dispense")
if(!is_operational() || QDELETED(cell))
return
- var/reagent = params["reagent"]
+ var/reagent = GLOB.name2reagent[params["reagent"]]
if(beaker && dispensable_reagents.Find(reagent))
var/datum/reagents/R = beaker.reagents
var/free = R.maximum_volume - R.total_volume
@@ -267,7 +281,7 @@
var/res = get_macro_resolution()
for(var/key in chemicals_to_dispense) // i suppose you could edit the list locally before passing it
var/list/keysplit = splittext(key," ")
- var/r_id = keysplit[1]
+ var/r_id = GLOB.name2reagent[translate_legacy_chem_id(keysplit[1])]
if(beaker && dispensable_reagents.Find(r_id)) // but since we verify we have the reagent, it'll be fine
var/datum/reagents/R = beaker.reagents
var/free = R.maximum_volume - R.total_volume
@@ -299,7 +313,8 @@
var/resmismatch = FALSE
for(var/reagents in first_process)
var/list/reagent = splittext(reagents, "=")
- if(dispensable_reagents.Find(reagent[1]))
+ var/reagent_id = GLOB.name2reagent[translate_legacy_chem_id(reagent[1])]
+ if(dispensable_reagents.Find(reagent_id))
if (!resmismatch && !check_macro_part(reagents, res))
resmismatch = TRUE
continue
@@ -475,45 +490,45 @@
nopower_state = null
pass_flags = PASSTABLE
dispensable_reagents = list(
- "water",
- "ice",
- "coffee",
- "cream",
- "tea",
- "icetea",
- "cola",
- "spacemountainwind",
- "dr_gibb",
- "space_up",
- "tonic",
- "sodawater",
- "lemon_lime",
- "pwr_game",
- "shamblers",
- "sugar",
- "orangejuice",
- "grenadine",
- "limejuice",
- "tomatojuice",
- "lemonjuice",
- "menthol"
+ /datum/reagent/water,
+ /datum/reagent/consumable/ice,
+ /datum/reagent/consumable/coffee,
+ /datum/reagent/consumable/cream,
+ /datum/reagent/consumable/tea,
+ /datum/reagent/consumable/icetea,
+ /datum/reagent/consumable/space_cola,
+ /datum/reagent/consumable/spacemountainwind,
+ /datum/reagent/consumable/dr_gibb,
+ /datum/reagent/consumable/space_up,
+ /datum/reagent/consumable/tonic,
+ /datum/reagent/consumable/sodawater,
+ /datum/reagent/consumable/lemon_lime,
+ /datum/reagent/consumable/pwr_game,
+ /datum/reagent/consumable/shamblers,
+ /datum/reagent/consumable/sugar,
+ /datum/reagent/consumable/orangejuice,
+ /datum/reagent/consumable/grenadine,
+ /datum/reagent/consumable/limejuice,
+ /datum/reagent/consumable/tomatojuice,
+ /datum/reagent/consumable/lemonjuice,
+ /datum/reagent/consumable/menthol
)
upgrade_reagents = list(
- "mushroomhallucinogen",
- "nothing",
- "cryoxadone"
+ /datum/reagent/drug/mushroomhallucinogen,
+ /datum/reagent/consumable/nothing,
+ /datum/reagent/medicine/cryoxadone
)
upgrade_reagents2 = list(
- "banana",
- "berryjuice"
+ /datum/reagent/consumable/banana,
+ /datum/reagent/consumable/berryjuice
)
upgrade_reagents3 = null
emagged_reagents = list(
- "thirteenloko",
- "changelingsting",
- "whiskeycola",
- "mindbreaker",
- "tirizene"
+ /datum/reagent/consumable/ethanol/thirteenloko,
+ /datum/reagent/consumable/ethanol/changelingsting,
+ /datum/reagent/consumable/ethanol/whiskey_cola,
+ /datum/reagent/toxin/mindbreaker,
+ /datum/reagent/toxin/staminatoxin
)
@@ -542,39 +557,39 @@
icon_state = "booze_dispenser"
circuit = /obj/item/circuitboard/machine/chem_dispenser/drinks/beer
dispensable_reagents = list(
- "beer",
- "kahlua",
- "whiskey",
- "wine",
- "vodka",
- "gin",
- "rum",
- "tequila",
- "vermouth",
- "cognac",
- "ale",
- "absinthe",
- "hcider",
- "creme_de_menthe",
- "creme_de_cacao",
- "triple_sec",
- "sake",
- "applejack"
+ /datum/reagent/consumable/ethanol/beer,
+ /datum/reagent/consumable/ethanol/kahlua,
+ /datum/reagent/consumable/ethanol/whiskey,
+ /datum/reagent/consumable/ethanol/wine,
+ /datum/reagent/consumable/ethanol/vodka,
+ /datum/reagent/consumable/ethanol/gin,
+ /datum/reagent/consumable/ethanol/rum,
+ /datum/reagent/consumable/ethanol/tequila,
+ /datum/reagent/consumable/ethanol/vermouth,
+ /datum/reagent/consumable/ethanol/cognac,
+ /datum/reagent/consumable/ethanol/ale,
+ /datum/reagent/consumable/ethanol/absinthe,
+ /datum/reagent/consumable/ethanol/hcider,
+ /datum/reagent/consumable/ethanol/creme_de_menthe,
+ /datum/reagent/consumable/ethanol/creme_de_cacao,
+ /datum/reagent/consumable/ethanol/triple_sec,
+ /datum/reagent/consumable/ethanol/sake,
+ /datum/reagent/consumable/ethanol/applejack
)
upgrade_reagents = list(
- "ethanol",
- "fernet"
+ /datum/reagent/consumable/ethanol,
+ /datum/reagent/consumable/ethanol/fernet
)
upgrade_reagents2 = null
upgrade_reagents3 = null
emagged_reagents = list(
- "iron",
- "alexander",
- "clownstears",
- "minttoxin",
- "atomicbomb",
- "aphro",
- "aphro+"
+ /datum/reagent/iron,
+ /datum/reagent/consumable/ethanol/alexander,
+ /datum/reagent/consumable/clownstears,
+ /datum/reagent/toxin/minttoxin,
+ /datum/reagent/consumable/ethanol/atomicbomb,
+ /datum/reagent/drug/aphrodisiac,
+ /datum/reagent/drug/aphrodisiacplus
)
/obj/machinery/chem_dispenser/drinks/beer/fullupgrade //fully ugpraded stock parts, emagged
@@ -598,9 +613,9 @@
/obj/machinery/chem_dispenser/mutagen
name = "mutagen dispenser"
desc = "Creates and dispenses mutagen."
- dispensable_reagents = list("mutagen")
+ dispensable_reagents = list(/datum/reagent/toxin/mutagen)
upgrade_reagents = null
- emagged_reagents = list("plasma")
+ emagged_reagents = list(/datum/reagent/toxin/plasma)
/obj/machinery/chem_dispenser/mutagensaltpeter
@@ -609,19 +624,19 @@
flags_1 = NODECONSTRUCT_1
dispensable_reagents = list(
- "mutagen",
- "saltpetre",
- "eznutriment",
- "left4zednutriment",
- "robustharvestnutriment",
- "water",
- "plantbgone",
- "weedkiller",
- "pestkiller",
- "cryoxadone",
- "ammonia",
- "ash",
- "diethylamine")
+ /datum/reagent/toxin/mutagen,
+ /datum/reagent/saltpetre,
+ /datum/reagent/plantnutriment/eznutriment,
+ /datum/reagent/plantnutriment/left4zednutriment,
+ /datum/reagent/plantnutriment/robustharvestnutriment,
+ /datum/reagent/water,
+ /datum/reagent/toxin/plantbgone,
+ /datum/reagent/toxin/plantbgone/weedkiller,
+ /datum/reagent/toxin/pestkiller,
+ /datum/reagent/medicine/cryoxadone,
+ /datum/reagent/ammonia,
+ /datum/reagent/ash,
+ /datum/reagent/diethylamine)
//same as above.
upgrade_reagents = null
upgrade_reagents2 = null
@@ -667,46 +682,46 @@
working_state = null
nopower_state = null
dispensable_reagents = list(
- "hydrogen",
- "lithium",
- "carbon",
- "nitrogen",
- "oxygen",
- "fluorine",
- "sodium",
- "aluminium",
- "silicon",
- "phosphorus",
- "sulfur",
- "chlorine",
- "potassium",
- "iron",
- "copper",
- "mercury",
- "radium",
- "water",
- "ethanol",
- "sugar",
- "sacid",
- "welding_fuel",
- "silver",
- "iodine",
- "bromine",
- "stable_plasma",
- "oil",
- "ammonia",
- "ash",
- "acetone",
- "phenol",
- "diethylamine",
- "mine_salve",
- "toxin",
- "space_drugs",
- "plasma",
- "frostoil",
- "uranium",
- "histamine",
- "morphine"
+ /datum/reagent/hydrogen,
+ /datum/reagent/lithium,
+ /datum/reagent/carbon,
+ /datum/reagent/nitrogen,
+ /datum/reagent/oxygen,
+ /datum/reagent/fluorine,
+ /datum/reagent/sodium,
+ /datum/reagent/aluminium,
+ /datum/reagent/silicon,
+ /datum/reagent/phosphorus,
+ /datum/reagent/sulfur,
+ /datum/reagent/chlorine,
+ /datum/reagent/potassium,
+ /datum/reagent/iron,
+ /datum/reagent/copper,
+ /datum/reagent/mercury,
+ /datum/reagent/radium,
+ /datum/reagent/water,
+ /datum/reagent/consumable/ethanol,
+ /datum/reagent/consumable/sugar,
+ /datum/reagent/toxin/acid,
+ /datum/reagent/fuel,
+ /datum/reagent/silver,
+ /datum/reagent/iodine,
+ /datum/reagent/bromine,
+ /datum/reagent/stable_plasma,
+ /datum/reagent/oil,
+ /datum/reagent/ammonia,
+ /datum/reagent/ash,
+ /datum/reagent/acetone,
+ /datum/reagent/phenol,
+ /datum/reagent/diethylamine,
+ /datum/reagent/medicine/mine_salve,
+ /datum/reagent/toxin,
+ /datum/reagent/drug/space_drugs,
+ /datum/reagent/toxin/plasma,
+ /datum/reagent/consumable/frostoil,
+ /datum/reagent/uranium,
+ /datum/reagent/toxin/histamine,
+ /datum/reagent/medicine/morphine
)
/obj/machinery/chem_dispenser/abductor/Initialize()
@@ -719,4 +734,4 @@
component_parts += new /obj/item/stock_parts/manipulator/femto(null)
component_parts += new /obj/item/stack/sheet/glass(null)
component_parts += new /obj/item/stock_parts/cell/bluespace(null)
- RefreshParts()
\ No newline at end of file
+ RefreshParts()
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 513626465a..e6b19417d8 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -186,13 +186,13 @@
var/beakerContents[0]
if(beaker)
for(var/datum/reagent/R in beaker.reagents.reagent_list)
- beakerContents.Add(list(list("name" = R.name, "id" = R.id, "volume" = R.volume))) // list in a list because Byond merges the first list...
+ beakerContents.Add(list(list("name" = R.name, "id" = ckey(R.name), "volume" = R.volume))) // list in a list because Byond merges the first list...
data["beakerContents"] = beakerContents
var/bufferContents[0]
if(reagents.total_volume)
for(var/datum/reagent/N in reagents.reagent_list)
- bufferContents.Add(list(list("name" = N.name, "id" = N.id, "volume" = N.volume))) // ^
+ bufferContents.Add(list(list("name" = N.name, "id" = ckey(N.name), "volume" = N.volume))) // ^
data["bufferContents"] = bufferContents
//Calculated at init time as it never changes
@@ -214,34 +214,34 @@
if("transferToBuffer")
if(beaker)
- var/id = params["id"]
+ var/reagent = GLOB.name2reagent[params["id"]]
var/amount = text2num(params["amount"])
if (amount > 0)
end_fermi_reaction()
- beaker.reagents.trans_id_to(src, id, amount)
+ beaker.reagents.trans_id_to(src, reagent, amount)
. = TRUE
else if (amount == -1) // -1 means custom amount
useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null
if (useramount > 0)
end_fermi_reaction()
- beaker.reagents.trans_id_to(src, id, useramount)
+ beaker.reagents.trans_id_to(src, reagent, useramount)
. = TRUE
if("transferFromBuffer")
- var/id = params["id"]
+ var/reagent = GLOB.name2reagent[params["id"]]
var/amount = text2num(params["amount"])
if (amount > 0)
if(mode)
- reagents.trans_id_to(beaker, id, amount)
+ reagents.trans_id_to(beaker, reagent, amount)
. = TRUE
else
- reagents.remove_reagent(id, amount)
+ reagents.remove_reagent(reagent, amount)
. = TRUE
else if (amount == -1) // -1 means custom amount
useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null
if (useramount > 0)
end_fermi_reaction()
- reagents.trans_id_to(beaker, id, useramount)
+ reagents.trans_id_to(beaker, reagent, useramount)
. = TRUE
if("toggleMode")
@@ -423,7 +423,7 @@
//END CITADEL ADDITIONS
if("analyzeBeak")
- var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]]
+ var/datum/reagent/R = GLOB.name2reagent[params["id"]]
if(R)
var/state = "Unknown"
if(initial(R.reagent_state) == 1)
@@ -434,11 +434,11 @@
state = "Gas"
var/const/P = 3 //The number of seconds between life ticks
var/T = initial(R.metabolization_rate) * (60 / P)
- var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id)
+ var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.type)
if(Rcr && Rcr.FermiChem)
fermianalyze = TRUE
var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2
- var/datum/reagent/targetReagent = beaker.reagents.has_reagent("[R.id]")
+ var/datum/reagent/targetReagent = beaker.reagents.has_reagent(R.type)
if(!targetReagent)
CRASH("Tried to find a reagent that doesn't exist in the chem_master!")
@@ -450,7 +450,7 @@
return
if("analyzeBuff")
- var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]]
+ var/datum/reagent/R = GLOB.name2reagent[params["id"]]
if(R)
var/state = "Unknown"
if(initial(R.reagent_state) == 1)
@@ -463,9 +463,9 @@
var/T = initial(R.metabolization_rate) * (60 / P)
if(istype(R, /datum/reagent/fermi))
fermianalyze = TRUE
- var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id)
+ var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.type)
var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2
- var/datum/reagent/targetReagent = reagents.has_reagent("[R.id]")
+ var/datum/reagent/targetReagent = reagents.has_reagent(R.type)
if(!targetReagent)
CRASH("Tried to find a reagent that doesn't exist in the chem_master!")
diff --git a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm
index daac5a5d1c..ed23e7c75c 100644
--- a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm
@@ -8,8 +8,8 @@
flags_1 = NODECONSTRUCT_1
use_power = NO_POWER_USE
var/static/list/shortcuts = list(
- "meth" = "methamphetamine",
- "tricord" = "tricordrazine"
+ "meth" = /datum/reagent/drug/methamphetamine,
+ "tricord" = /datum/reagent/medicine/tricordrazine
)
/obj/machinery/chem_dispenser/chem_synthesizer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
@@ -31,13 +31,13 @@
beaker = null
. = TRUE
if("input")
- var/input_reagent = replacetext(lowertext(input("Enter the name of any liquid", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name
+ var/input_reagent = replacetext(lowertext(input("Enter the name of any reagent", "Input") as text), " ", "") //95% of the time, the reagent types is a lowercase, no spaces / underscored version of the name
if(shortcuts[input_reagent])
input_reagent = shortcuts[input_reagent]
else
input_reagent = find_reagent(input_reagent)
- if(!input_reagent || !GLOB.chemical_reagents_list[input_reagent])
- say("OUT OF RANGE")
+ if(!input_reagent)
+ say("REAGENT NOT FOUND")
return
else
if(!beaker)
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index 6ae0a682d8..68ce6e490f 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -144,9 +144,9 @@
var/datum/reagent/blood/B = locate() in beaker.reagents.reagent_list
if(B)
data["has_blood"] = TRUE
- data["blood"] = list()
- data["blood"]["dna"] = B.data["blood_DNA"] || "none"
- data["blood"]["type"] = B.data["blood_type"] || "none"
+ data[/datum/reagent/blood] = list()
+ data[/datum/reagent/blood]["dna"] = B.data["blood_DNA"] || "none"
+ data[/datum/reagent/blood]["type"] = B.data["blood_type"] || "none"
data["viruses"] = get_viruses_data(B)
data["resistances"] = get_resistance_data(B)
if(SYMPTOM_DETAILS)
@@ -192,7 +192,7 @@
var/obj/item/reagent_containers/glass/bottle/B = new(drop_location())
B.name = "[A.name] culture bottle"
B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium."
- B.reagents.add_reagent("blood", 20, data)
+ B.reagents.add_reagent(/datum/reagent/blood, 20, data)
wait = TRUE
update_icon()
var/turf/source_turf = get_turf(src)
@@ -204,7 +204,7 @@
var/datum/disease/D = SSdisease.archive_diseases[id]
var/obj/item/reagent_containers/glass/bottle/B = new(drop_location())
B.name = "[D.name] vaccine bottle"
- B.reagents.add_reagent("vaccine", 15, list(id))
+ B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id))
wait = TRUE
update_icon()
addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 200)
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index 98cfd877b2..7e1b7ec018 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -299,18 +299,18 @@
/obj/machinery/reagentgrinder/proc/mix_complete()
if(beaker?.reagents.total_volume)
//Recipe to make Butter
- var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount("milk") / MILK_TO_BUTTER_COEFF, 1)
- beaker.reagents.remove_reagent("milk", MILK_TO_BUTTER_COEFF * butter_amt)
+ var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/milk) / MILK_TO_BUTTER_COEFF, 1)
+ beaker.reagents.remove_reagent(/datum/reagent/consumable/milk, MILK_TO_BUTTER_COEFF * butter_amt)
for(var/i in 1 to butter_amt)
new /obj/item/reagent_containers/food/snacks/butter(drop_location())
//Recipe to make Mayonnaise
- if (beaker.reagents.has_reagent("eggyolk"))
- var/amount = beaker.reagents.get_reagent_amount("eggyolk")
- beaker.reagents.remove_reagent("eggyolk", amount)
- beaker.reagents.add_reagent("mayonnaise", amount)
+ if (beaker.reagents.has_reagent(/datum/reagent/consumable/eggyolk))
+ var/amount = beaker.reagents.get_reagent_amount(/datum/reagent/consumable/eggyolk)
+ beaker.reagents.remove_reagent(/datum/reagent/consumable/eggyolk, amount)
+ beaker.reagents.add_reagent(/datum/reagent/consumable/mayonnaise, amount)
//Moonsugar for skooma
- if(beaker.reagents.has_reagent("sugar") && beaker.reagents.has_reagent("moonshine"))
- var/amount = min(beaker.reagents.get_reagent_amount("sugar"), beaker.reagents.get_reagent_amount("moonshine"))
- beaker.reagents.remove_reagent("sugar", amount)
- beaker.reagents.remove_reagent("moonshine", amount)
- beaker.reagents.add_reagent("moonsugar", amount*2)
+ if(beaker.reagents.has_reagent(/datum/reagent/consumable/sugar) && beaker.reagents.has_reagent(/datum/reagent/consumable/ethanol/moonshine))
+ var/amount = min(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/sugar), beaker.reagents.get_reagent_amount(/datum/reagent/consumable/ethanol/moonshine))
+ beaker.reagents.remove_reagent(/datum/reagent/consumable/sugar, amount)
+ beaker.reagents.remove_reagent(/datum/reagent/consumable/ethanol/moonshine, amount)
+ beaker.reagents.add_reagent(/datum/reagent/moonsugar, amount*2)
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index da41ac9dc4..5eb2c135a8 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -1,12 +1,20 @@
#define REM REAGENTS_EFFECT_MULTIPLIER
+GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
+
+/proc/build_name2reagent()
+ . = list()
+ for (var/t in subtypesof(/datum/reagent))
+ var/datum/reagent/R = t
+ if (length(initial(R.name)))
+ .[ckey(initial(R.name))] = t
+
//Various reagents
//Toxin & acid reagents
//Hydroponics stuff
/datum/reagent
var/name = "Reagent"
- var/id = "reagent"
var/description = ""
var/specific_heat = SPECIFIC_HEAT_DEFAULT //J/(K*mol)
var/taste_description = "metaphorical salt"
@@ -58,7 +66,7 @@
var/modifier = CLAMP((1 - touch_protection), 0, 1)
var/amount = round(reac_volume*modifier, 0.1)
if(amount >= 0.5)
- M.reagents.add_reagent(id, amount)
+ M.reagents.add_reagent(type, amount)
return 1
/datum/reagent/proc/reaction_obj(obj/O, volume)
@@ -70,7 +78,7 @@
/datum/reagent/proc/on_mob_life(mob/living/carbon/M)
current_cycle++
if(holder)
- holder.remove_reagent(src.id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
+ holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
return
//called when a mob processes chems when dead.
@@ -79,7 +87,7 @@
return
current_cycle++
if(holder)
- holder.remove_reagent(src.id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
+ holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
return
// Called when this reagent is first added to a mob
@@ -88,19 +96,19 @@
return
var/mob/living/carbon/M = L
if (purity == 1)
- log_game("CHEM: [L] ckey: [L.key] has ingested [volume]u of [id]")
+ log_game("CHEM: [L] ckey: [L.key] has ingested [volume]u of [type]")
return
if(cached_purity == 1)
cached_purity = purity
else if(purity < 0)
- CRASH("Purity below 0 for chem: [id], Please let Fermis Know!")
+ CRASH("Purity below 0 for chem: [type], Please let Fermis Know!")
if(chemical_flags & REAGENT_DONOTSPLIT)
return
if ((inverse_chem_val > purity) && (inverse_chem))//Turns all of a added reagent into the inverse chem
- M.reagents.remove_reagent(id, amount, FALSE)
+ M.reagents.remove_reagent(type, amount, FALSE)
M.reagents.add_reagent(inverse_chem, amount, FALSE, other_purity = 1-cached_purity)
- var/datum/reagent/R = M.reagents.has_reagent("[inverse_chem]")
+ var/datum/reagent/R = M.reagents.has_reagent(inverse_chem)
if(R.chemical_flags & REAGENT_SNEAKYNAME)
R.name = name//Negative effects are hidden
if(R.chemical_flags & REAGENT_INVISIBLE)
@@ -110,9 +118,9 @@
else if (impure_chem)
var/impureVol = amount * (1 - purity) //turns impure ratio into impure chem
if(!(chemical_flags & REAGENT_SPLITRETAINVOL))
- M.reagents.remove_reagent(id, (impureVol), FALSE)
+ M.reagents.remove_reagent(type, (impureVol), FALSE)
M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity)
- log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [id]")
+ log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [type]")
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [impure_chem]")
return
@@ -140,18 +148,18 @@
if(!iscarbon(M))
return
if (purity == 1)
- log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [id]")
+ log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [type]")
return
cached_purity = purity //purity SHOULD be precalculated from the add_reagent, update cache.
if (purity < 0)
- CRASH("Purity below 0 for chem: [id], Please let Fermis Know!")
+ CRASH("Purity below 0 for chem: [type], Please let Fermis Know!")
if(chemical_flags & REAGENT_DONOTSPLIT)
return
if ((inverse_chem_val > purity) && (inverse_chem)) //INVERT
- M.reagents.remove_reagent(id, amount, FALSE)
+ M.reagents.remove_reagent(type, amount, FALSE)
M.reagents.add_reagent(inverse_chem, amount, FALSE, other_purity = 1-cached_purity)
- var/datum/reagent/R = M.reagents.has_reagent("[inverse_chem]")
+ var/datum/reagent/R = M.reagents.has_reagent(inverse_chem)
if(R.chemical_flags & REAGENT_SNEAKYNAME)
R.name = name//Negative effects are hidden
if(R.chemical_flags & REAGENT_INVISIBLE)
@@ -161,9 +169,9 @@
else if (impure_chem) //SPLIT
var/impureVol = amount * (1 - purity)
if(!(chemical_flags & REAGENT_SPLITRETAINVOL))
- M.reagents.remove_reagent(id, impureVol, FALSE)
+ M.reagents.remove_reagent(type, impureVol, FALSE)
M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity)
- log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [id]")
+ log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [type]")
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [impure_chem]")
return
@@ -180,29 +188,29 @@
/datum/reagent/proc/overdose_start(mob/living/M)
to_chat(M, "You feel like you took too much of [name]!")
- SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name)
return
/datum/reagent/proc/addiction_act_stage1(mob/living/M)
- SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_light, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_light, name)
if(prob(30))
to_chat(M, "You feel like having some [name] right about now.")
return
/datum/reagent/proc/addiction_act_stage2(mob/living/M)
- SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_medium, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_medium, name)
if(prob(30))
to_chat(M, "You feel like you need [name]. You just can't get enough.")
return
/datum/reagent/proc/addiction_act_stage3(mob/living/M)
- SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_severe, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_severe, name)
if(prob(30))
to_chat(M, "You have an intense craving for [name].")
return
/datum/reagent/proc/addiction_act_stage4(mob/living/M)
- SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_critical, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_critical, name)
if(prob(30))
to_chat(M, "You're not feeling good at all! You really need some [name].")
return
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index 077ab1fb7a..62a8d97b2d 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -8,7 +8,6 @@
/datum/reagent/consumable/ethanol
name = "Ethanol"
- id = "ethanol"
description = "A well-known alcohol with a variety of applications."
color = "#404030" // rgb: 64, 64, 48
nutriment_factor = 0
@@ -81,7 +80,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/beer
name = "Beer"
- id = "beer"
description = "An alcoholic beverage brewed since ancient times on Old Earth. Still popular today."
color = "#664300" // rgb: 102, 67, 0
nutriment_factor = 1 * REAGENTS_METABOLISM
@@ -94,7 +92,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/beer/light
name = "Light Beer"
- id = "light_beer"
description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety has reduced calorie and alcohol content."
boozepwr = 5 //Space Europeans hate it
taste_description = "dish water"
@@ -105,7 +102,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/beer/green
name = "Green Beer"
- id = "greenbeer"
description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety is dyed a festive green."
color = "#A8E61D"
taste_description = "green piss water"
@@ -125,7 +121,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/kahlua
name = "Kahlua"
- id = "kahlua"
description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 45
@@ -148,7 +143,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/whiskey
name = "Whiskey"
- id = "whiskey"
description = "A superb and well-aged single-malt whiskey. Damn."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 75
@@ -162,7 +156,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/thirteenloko
name = "Thirteen Loko"
- id = "thirteenloko"
description = "A potent mixture of caffeine and alcohol."
color = "#102000" // rgb: 16, 32, 0
nutriment_factor = 1 * REAGENTS_METABOLISM
@@ -227,7 +220,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/vodka
name = "Vodka"
- id = "vodka"
description = "Number one drink AND fueling choice for Russians worldwide."
color = "#0064C8" // rgb: 0, 100, 200
boozepwr = 65
@@ -245,7 +237,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/bilk
name = "Bilk"
- id = "bilk"
description = "This appears to be beer mixed with milk. Disgusting."
color = "#895C4C" // rgb: 137, 92, 76
nutriment_factor = 2 * REAGENTS_METABOLISM
@@ -264,7 +255,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/threemileisland
name = "Three Mile Island Iced Tea"
- id = "threemileisland"
description = "Made for a woman, strong enough for a man."
color = "#666340" // rgb: 102, 99, 64
boozepwr = 10
@@ -282,7 +272,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/gin
name = "Gin"
- id = "gin"
description = "It's gin. In space. I say, good sir."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 45
@@ -295,7 +284,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/rum
name = "Rum"
- id = "rum"
description = "Yohoho and all that."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 60
@@ -309,7 +297,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/tequila
name = "Tequila"
- id = "tequila"
description = "A strong and mildly flavoured, Mexican produced spirit. Feeling thirsty, hombre?"
color = "#FFFF91" // rgb: 255, 255, 145
boozepwr = 70
@@ -323,7 +310,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/vermouth
name = "Vermouth"
- id = "vermouth"
description = "You suddenly feel a craving for a martini..."
color = "#91FF91" // rgb: 145, 255, 145
boozepwr = 45
@@ -337,7 +323,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/wine
name = "Wine"
- id = "wine"
description = "A premium alcoholic beverage made from distilled grape juice."
color = "#7E4043" // rgb: 126, 64, 67
boozepwr = 35
@@ -351,7 +336,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/lizardwine
name = "Lizard wine"
- id = "lizardwine"
description = "An alcoholic beverage from Space China, made by infusing lizard tails in ethanol."
color = "#7E4043" // rgb: 126, 64, 67
boozepwr = 45
@@ -362,7 +346,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/grappa
name = "Grappa"
- id = "grappa"
description = "A fine Italian brandy, for when regular wine just isn't alcoholic enough for you."
color = "#F8EBF1"
boozepwr = 60
@@ -375,7 +358,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/cognac
name = "Cognac"
- id = "cognac"
description = "A sweet and strongly alcoholic drink, made after numerous distillations and years of maturing. Classy as fornication."
color = "#AB3C05" // rgb: 171, 60, 5
boozepwr = 75
@@ -389,7 +371,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/absinthe
name = "Absinthe"
- id = "absinthe"
description = "A powerful alcoholic drink. Rumored to cause hallucinations but does not."
color = rgb(10, 206, 0)
boozepwr = 80 //Very strong even by default
@@ -407,7 +388,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/hooch
name = "Hooch"
- id = "hooch"
description = "Either someone's failure at cocktail making or attempt in alcohol production. In any case, do you really want to drink that?"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 100
@@ -424,7 +404,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/ale
name = "Ale"
- id = "ale"
description = "A dark alcoholic beverage made with malted barley and yeast."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 65
@@ -437,7 +416,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/goldschlager
name = "Goldschlager"
- id = "goldschlager"
description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break."
color = "#FFFF91" // rgb: 255, 255, 145
boozepwr = 25
@@ -451,7 +429,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/patron
name = "Patron"
- id = "patron"
description = "Tequila with silver in it, a favorite of alcoholic women in the club scene."
color = "#585840" // rgb: 88, 88, 64
boozepwr = 60
@@ -466,7 +443,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/gintonic
name = "Gin and Tonic"
- id = "gintonic"
description = "An all time classic, mild cocktail."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 25
@@ -480,7 +456,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/rum_coke
name = "Rum and Coke"
- id = "rumcoke"
description = "Rum, mixed with cola."
taste_description = "cola"
boozepwr = 40
@@ -494,7 +469,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/cuba_libre
name = "Cuba Libre"
- id = "cubalibre"
description = "Viva la Revolucion! Viva Cuba Libre!"
color = "#3E1B00" // rgb: 62, 27, 0
boozepwr = 50
@@ -517,7 +491,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/whiskey_cola
name = "Whiskey Cola"
- id = "whiskeycola"
description = "Whiskey, mixed with cola. Surprisingly refreshing."
color = "#3E1B00" // rgb: 62, 27, 0
boozepwr = 70
@@ -530,7 +503,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/martini
name = "Classic Martini"
- id = "martini"
description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 60
@@ -543,7 +515,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/vodkamartini
name = "Vodka Martini"
- id = "vodkamartini"
description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 65
@@ -557,7 +528,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/white_russian
name = "White Russian"
- id = "whiterussian"
description = "That's just, like, your opinion, man..."
color = "#A68340" // rgb: 166, 131, 64
boozepwr = 50
@@ -570,7 +540,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/screwdrivercocktail
name = "Screwdriver"
- id = "screwdrivercocktail"
description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious."
color = "#A68310" // rgb: 166, 131, 16
boozepwr = 55
@@ -588,7 +557,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/booger
name = "Booger"
- id = "booger"
description = "Ewww..."
color = "#8CFF8C" // rgb: 140, 255, 140
boozepwr = 45
@@ -600,7 +568,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/bloody_mary
name = "Bloody Mary"
- id = "bloodymary"
description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 55
@@ -620,7 +587,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/brave_bull
name = "Brave Bull"
- id = "bravebull"
description = "It's just as effective as Dutch-Courage!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 80
@@ -645,7 +611,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/tequila_sunrise
name = "Tequila Sunrise"
- id = "tequilasunrise"
description = "Tequila, Grenadine, and Orange Juice."
color = "#FFE48C" // rgb: 255, 228, 140
boozepwr = 45
@@ -664,7 +629,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/carbon/M)
if(QDELETED(light_holder))
- M.reagents.del_reagent("tequilasunrise") //If we lost our light object somehow, remove the reagent
+ M.reagents.del_reagent(type) //If we lost our light object somehow, remove the reagent
else if(light_holder.loc != M)
light_holder.forceMove(M)
return ..()
@@ -675,7 +640,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/toxins_special
name = "Toxins Special"
- id = "toxinsspecial"
description = "This thing is ON FIRE! CALL THE DAMN SHUTTLE!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 25
@@ -693,7 +657,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/beepsky_smash
name = "Beepsky Smash"
- id = "beepskysmash"
description = "Drink this and prepare for the LAW."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 90 //THE FIST OF THE LAW IS STRONG AND HARD
@@ -738,7 +701,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/irish_cream
name = "Irish Cream"
- id = "irishcream"
description = "Whiskey-imbued cream, what else would you expect from the Irish?"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 50
@@ -751,7 +713,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/manly_dorf
name = "The Manly Dorf"
- id = "manlydorf"
description = "Beer and Ale, brought together in a delicious mix. Intended for true men only."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 100 //For the manly only
@@ -779,7 +740,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/longislandicedtea
name = "Long Island Iced Tea"
- id = "longislandicedtea"
description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
@@ -792,7 +752,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/moonshine
name = "Moonshine"
- id = "moonshine"
description = "You've really hit rock bottom now... your liver packed its bags and left last night."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 95
@@ -804,7 +763,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/b52
name = "B-52"
- id = "b52"
description = "Coffee, Irish Cream, and cognac. You will get bombed."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 85
@@ -821,7 +779,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/irishcoffee
name = "Irish Coffee"
- id = "irishcoffee"
description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
@@ -834,7 +791,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/margarita
name = "Margarita"
- id = "margarita"
description = "On the rocks with salt on the rim. Arriba~!"
color = "#8CFF8C" // rgb: 140, 255, 140
boozepwr = 35
@@ -847,7 +803,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/black_russian
name = "Black Russian"
- id = "blackrussian"
description = "For the lactose-intolerant. Still as classy as a White Russian."
color = "#360000" // rgb: 54, 0, 0
boozepwr = 70
@@ -861,7 +816,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/manhattan
name = "Manhattan"
- id = "manhattan"
description = "The Detective's undercover drink of choice. He never could stomach gin..."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 30
@@ -875,7 +829,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/manhattan_proj
name = "Manhattan Project"
- id = "manhattan_proj"
description = "A scientist's drink of choice, for pondering ways to blow up the station."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 45
@@ -893,7 +846,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/whiskeysoda
name = "Whiskey Soda"
- id = "whiskeysoda"
description = "For the more refined griffon."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 70
@@ -906,7 +858,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/antifreeze
name = "Anti-freeze"
- id = "antifreeze"
description = "The ultimate refreshment. Not what it sounds like."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
@@ -923,7 +874,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/barefoot
name = "Barefoot"
- id = "barefoot"
description = "Barefoot and pregnant."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 45
@@ -944,7 +894,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/snowwhite
name = "Snow White"
- id = "snowwhite"
description = "A cold refreshment."
color = "#FFFFFF" // rgb: 255, 255, 255
boozepwr = 35
@@ -957,7 +906,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/demonsblood //Prevents the imbiber from being dragged into a pool of blood by a slaughter demon.
name = "Demon's Blood"
- id = "demonsblood"
description = "AHHHH!!!!"
color = "#820000" // rgb: 130, 0, 0
boozepwr = 75
@@ -970,7 +918,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/devilskiss //If eaten by a slaughter demon, the demon will regret it.
name = "Devil's Kiss"
- id = "devilskiss"
description = "Creepy time!"
color = "#A68310" // rgb: 166, 131, 16
boozepwr = 70
@@ -983,7 +930,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/vodkatonic
name = "Vodka and Tonic"
- id = "vodkatonic"
description = "For when a gin and tonic isn't Russian enough."
color = "#0064C8" // rgb: 0, 100, 200
boozepwr = 70
@@ -996,7 +942,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/ginfizz
name = "Gin Fizz"
- id = "ginfizz"
description = "Refreshingly lemony, deliciously dry."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 45
@@ -1009,7 +954,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/bahama_mama
name = "Bahama Mama"
- id = "bahama_mama"
description = "Tropical cocktail."
color = "#FF7F3B" // rgb: 255, 127, 59
boozepwr = 35
@@ -1022,7 +966,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/singulo
name = "Singulo"
- id = "singulo"
description = "A blue-space beverage!"
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 35
@@ -1035,7 +978,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/sbiten
name = "Sbiten"
- id = "sbiten"
description = "A spicy Vodka! Might be a little hot for the little guys!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 70
@@ -1052,7 +994,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/red_mead
name = "Red Mead"
- id = "red_mead"
description = "The true Viking drink! Even though it has a strange red color."
color = "#C73C00" // rgb: 199, 60, 0
boozepwr = 31 //Red drinks are stronger
@@ -1065,7 +1006,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/mead
name = "Mead"
- id = "mead"
description = "A Viking drink, though a cheap one."
color = "#664300" // rgb: 102, 67, 0
nutriment_factor = 1 * REAGENTS_METABOLISM
@@ -1079,7 +1019,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/iced_beer
name = "Iced Beer"
- id = "iced_beer"
description = "A beer which is so cold the air around it freezes."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 15
@@ -1095,7 +1034,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/grog
name = "Grog"
- id = "grog"
description = "Watered down rum, Nanotrasen approves!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 1 //Basically nothing
@@ -1107,7 +1045,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/aloe
name = "Aloe"
- id = "aloe"
description = "So very, very, very good."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
@@ -1120,7 +1057,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/andalusia
name = "Andalusia"
- id = "andalusia"
description = "A nice, strangely named drink."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 40
@@ -1133,7 +1069,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/alliescocktail
name = "Allies Cocktail"
- id = "alliescocktail"
description = "A drink made from your allies. Not as sweet as those made from your enemies."
color = "#664300" // rgb: 102, 67, 0
boozepwr = 45
@@ -1146,7 +1081,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/acid_spit
name = "Acid Spit"
- id = "acidspit"
description = "A drink for the daring, can be deadly if incorrectly prepared!"
color = "#365000" // rgb: 54, 80, 0
boozepwr = 80
@@ -1159,7 +1093,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/amasec
name = "Amasec"
- id = "amasec"
description = "Official drink of the Nanotrasen Gun-Club!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 35
@@ -1172,7 +1105,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/changelingsting
name = "Changeling Sting"
- id = "changelingsting"
description = "You take a tiny sip and feel a burning sensation..."
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 95
@@ -1193,7 +1125,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/irishcarbomb
name = "Irish Car Bomb"
- id = "irishcarbomb"
description = "Mmm, tastes like chocolate cake..."
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 25
@@ -1206,7 +1137,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/syndicatebomb
name = "Syndicate Bomb"
- id = "syndicatebomb"
description = "Tastes like terrorism!"
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 90
@@ -1224,7 +1154,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/erikasurprise
name = "Erika Surprise"
- id = "erikasurprise"
description = "The surprise is, it's green!"
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 35
@@ -1237,7 +1166,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/driestmartini
name = "Driest Martini"
- id = "driestmartini"
description = "Only for the experienced. You think you see sand floating in the glass."
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#2E6671" // rgb: 46, 102, 113
@@ -1251,7 +1179,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/bananahonk
name = "Banana Honk"
- id = "bananahonk"
description = "A drink from Clown Heaven."
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#FFFF91" // rgb: 255, 255, 140
@@ -1271,7 +1198,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/silencer
name = "Silencer"
- id = "silencer"
description = "A drink from Mime Heaven."
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#664300" // rgb: 102, 67, 0
@@ -1291,7 +1217,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/drunkenblumpkin
name = "Drunken Blumpkin"
- id = "drunkenblumpkin"
description = "A weird mix of whiskey and blumpkin juice."
color = "#1EA0FF" // rgb: 102, 67, 0
boozepwr = 50
@@ -1304,7 +1229,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/whiskey_sour //Requested since we had whiskey cola and soda but not sour.
name = "Whiskey Sour"
- id = "whiskey_sour"
description = "Lemon juice/whiskey/sugar mixture. Moderate alcohol content."
color = rgb(255, 201, 49)
boozepwr = 35
@@ -1317,7 +1241,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/hcider
name = "Hard Cider"
- id = "hcider"
description = "Apple juice, for adults."
color = "#CD6839"
nutriment_factor = 1 * REAGENTS_METABOLISM
@@ -1331,7 +1254,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/fetching_fizz //A reference to one of my favorite games of all time. Pulls nearby ores to the imbiber!
name = "Fetching Fizz"
- id = "fetching_fizz"
description = "Whiskey sour/iron/uranium mixture resulting in a highly magnetic slurry. Mild alcohol content." //Requires no alcohol to make but has alcohol anyway because ~magic~
color = rgb(255, 91, 15)
boozepwr = 10
@@ -1351,7 +1273,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
//Another reference. Heals those in critical condition extremely quickly.
/datum/reagent/consumable/ethanol/hearty_punch
name = "Hearty Punch"
- id = "hearty_punch"
description = "Brave bull/syndicate bomb/absinthe mixture resulting in an energizing beverage. Mild alcohol content."
color = rgb(140, 0, 0)
boozepwr = 90
@@ -1375,7 +1296,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/bacchus_blessing //An EXTREMELY powerful drink. Smashed in seconds, dead in minutes.
name = "Bacchus' Blessing"
- id = "bacchus_blessing"
description = "Unidentifiable mixture. Unmeasurably high alcohol content."
color = rgb(51, 19, 3) //Sickly brown
boozepwr = 300 //I warned you
@@ -1388,7 +1308,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/atomicbomb
name = "Atomic Bomb"
- id = "atomicbomb"
description = "Nuclear proliferation never tasted so good."
color = "#666300" // rgb: 102, 99, 0
boozepwr = 0 //custom drunk effect
@@ -1418,7 +1337,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/gargle_blaster
name = "Pan-Galactic Gargle Blaster"
- id = "gargleblaster"
description = "Whoah, this stuff looks volatile!"
color = "#664300" // rgb: 102, 67, 0
boozepwr = 0 //custom drunk effect
@@ -1447,7 +1365,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/neurotoxin
name = "Neurotoxin"
- id = "neurotoxin"
description = "A strong neurotoxin that puts the subject into a death-like state."
color = "#2E2E61" // rgb: 46, 46, 97
boozepwr = 50
@@ -1458,9 +1375,9 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "Neurotoxin"
glass_desc = "A drink that is guaranteed to knock you silly."
//SplitChem = TRUE
- impure_chem = "neuroweak"
+ impure_chem = /datum/reagent/consumable/ethanol/neuroweak
inverse_chem_val = 0.5 //Clear conversion
- inverse_chem = "neuroweak"
+ inverse_chem = /datum/reagent/consumable/ethanol/neuroweak
value = 4
/datum/reagent/consumable/ethanol/neurotoxin/proc/pickt()
@@ -1470,12 +1387,12 @@ All effects don't start immediately, but rather get worse over time; the rate is
M.set_drugginess(50)
M.dizziness +=2
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM, 150)
- if(prob(20) && !holder.has_reagent("neuroweak"))
+ if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak))
M.adjustStaminaLoss(10)
M.drop_all_held_items()
to_chat(M, "You cant feel your hands!")
if(current_cycle > 5)
- if(prob(20) && !holder.has_reagent("neuroweak"))
+ if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak))
var/t = pickt()
ADD_TRAIT(M, t, type)
M.adjustStaminaLoss(10)
@@ -1499,19 +1416,18 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/neuroweak
name = "Neuro-Smash"
- id = "neuroweak"
description = "A mostly safe alcoholic drink for the true daredevils. Counteracts Neurotoxins."
boozepwr = 60
pH = 8
value = 3
/datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M)
- if(holder.has_reagent("neurotoxin"))
+ if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin))
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150)
- M.reagents.remove_reagent("neurotoxin", 1.5 * REAGENTS_METABOLISM, FALSE)
- if(holder.has_reagent("fentanyl"))
+ M.reagents.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 1.5 * REAGENTS_METABOLISM, FALSE)
+ else if(holder.has_reagent(/datum/reagent/toxin/fentanyl))
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150)
- M.reagents.remove_reagent("fentanyl", 0.75 * REAGENTS_METABOLISM, FALSE)
+ M.reagents.remove_reagent(/datum/reagent/toxin/fentanyl, 0.75 * REAGENTS_METABOLISM, FALSE)
else
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -0.5*REM, 150)
M.dizziness +=2
@@ -1519,7 +1435,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/hippies_delight
name = "Hippie's Delight"
- id = "hippiesdelight"
description = "You just don't get it maaaan."
color = "#664300" // rgb: 102, 67, 0
nutriment_factor = 0
@@ -1565,7 +1480,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/eggnog
name = "Eggnog"
- id = "eggnog"
description = "The traditional way to get absolutely hammered at a Christmas party."
color = "#fcfdc6" // rgb: 252, 253, 198
nutriment_factor = 2 * REAGENTS_METABOLISM
@@ -1580,7 +1494,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/narsour
name = "Nar'Sour"
- id = "narsour"
description = "Side effects include self-mutilation and hoarding plasteel."
color = RUNE_COLOR_DARKRED
boozepwr = 10
@@ -1598,7 +1511,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/triple_sec
name = "Triple Sec"
- id = "triple_sec"
description = "A sweet and vibrant orange liqueur."
color = "#ffcc66"
boozepwr = 30
@@ -1610,7 +1522,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/creme_de_menthe
name = "Creme de Menthe"
- id = "creme_de_menthe"
description = "A minty liqueur excellent for refreshing, cool drinks."
color = "#00cc00"
boozepwr = 20
@@ -1622,7 +1533,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/creme_de_cacao
name = "Creme de Cacao"
- id = "creme_de_cacao"
description = "A chocolatey liqueur excellent for adding dessert notes to beverages and bribing sororities."
color = "#996633"
boozepwr = 20
@@ -1634,7 +1544,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/quadruple_sec
name = "Quadruple Sec"
- id = "quadruple_sec"
description = "Kicks just as hard as licking the powercell on a baton, but tastier."
color = "#cc0000"
boozepwr = 35
@@ -1654,7 +1563,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/quintuple_sec
name = "Quintuple Sec"
- id = "quintuple_sec"
description = "Law, Order, Alcohol, and Police Brutality distilled into one single elixir of JUSTICE."
color = "#ff3300"
boozepwr = 80
@@ -1677,7 +1585,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/grasshopper
name = "Grasshopper"
- id = "grasshopper"
description = "A fresh and sweet dessert shooter. Difficult to look manly while drinking this."
color = "00ff00"
boozepwr = 25
@@ -1690,7 +1597,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/stinger
name = "Stinger"
- id = "stinger"
description = "A snappy way to end the day."
color = "ccff99"
boozepwr = 25
@@ -1703,7 +1609,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/bastion_bourbon
name = "Bastion Bourbon"
- id = "bastion_bourbon"
description = "Soothing hot herbal brew with restorative properties. Hints of citrus and berry flavors."
color = "#00FFFF"
boozepwr = 30
@@ -1743,7 +1648,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/squirt_cider
name = "Squirt Cider"
- id = "squirt_cider"
description = "Fermented squirt extract with a nose of stale bread and ocean water. Whatever a squirt is."
color = "#FF0000"
boozepwr = 40
@@ -1762,7 +1666,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/fringe_weaver
name = "Fringe Weaver"
- id = "fringe_weaver"
description = "Bubbly, classy, and undoubtedly strong - a Glitch City classic."
color = "#FFEAC4"
boozepwr = 90 //classy hooch, essentially, but lower pwr to make up for slightly easier access
@@ -1775,7 +1678,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/sugar_rush
name = "Sugar Rush"
- id = "sugar_rush"
description = "Sweet, light, and fruity - as girly as it gets."
color = "#FF226C"
boozepwr = 10
@@ -1794,7 +1696,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/crevice_spike
name = "Crevice Spike"
- id = "crevice_spike"
description = "Sour, bitter, and smashingly sobering."
color = "#5BD231"
boozepwr = -10 //sobers you up - ideally, one would drink to get hit with brute damage now to avoid alcohol problems later
@@ -1810,7 +1711,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/sake
name = "Sake"
- id = "sake"
description = "A sweet rice wine of questionable legality and extreme potency."
color = "#DDDDDD"
boozepwr = 70
@@ -1822,7 +1722,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/peppermint_patty
name = "Peppermint Patty"
- id = "peppermint_patty"
description = "This lightly alcoholic drink combines the benefits of menthol and cocoa."
color = "#45ca7a"
taste_description = "mint and chocolate"
@@ -1840,7 +1739,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/alexander
name = "Alexander"
- id = "alexander"
description = "Named after a Greek hero, this mix is said to embolden a user's shield as if they were in a phalanx."
color = "#F5E9D3"
boozepwr = 80
@@ -1864,7 +1762,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/alexander/on_mob_life(mob/living/L)
..()
if(mighty_shield && !(mighty_shield in L.contents)) //If you had a shield and lose it, you lose the reagent as well. Otherwise this is just a normal drink.
- L.reagents.del_reagent("alexander")
+ L.reagents.del_reagent(type)
/datum/reagent/consumable/ethanol/alexander/on_mob_end_metabolize(mob/living/L)
if(mighty_shield)
@@ -1874,7 +1772,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/sidecar
name = "Sidecar"
- id = "sidecar"
description = "The one ride you'll gladly give up the wheel for."
color = "#FFC55B"
boozepwr = 80
@@ -1887,7 +1784,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/between_the_sheets
name = "Between the Sheets"
- id = "between_the_sheets"
description = "A provocatively named classic. Funny enough, doctors recommend drinking it before taking a nap."
color = "#F4C35A"
boozepwr = 80
@@ -1913,7 +1809,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/kamikaze
name = "Kamikaze"
- id = "kamikaze"
description = "Divinely windy."
color = "#EEF191"
boozepwr = 60
@@ -1926,7 +1821,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/mojito
name = "Mojito"
- id = "mojito"
description = "A drink that looks as refreshing as it tastes."
color = "#DFFAD9"
boozepwr = 30
@@ -1939,7 +1833,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/fernet
name = "Fernet"
- id = "fernet"
description = "An incredibly bitter herbal liqueur used as a digestif."
color = "#1B2E24" // rgb: 27, 46, 36
boozepwr = 80
@@ -1957,7 +1850,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/fernet_cola
name = "Fernet Cola"
- id = "fernet_cola"
description = "A very popular and bittersweet digestif, ideal after a heavy meal. Best served on a sawed-off cola bottle as per tradition."
color = "#390600" // rgb: 57, 6, 0
boozepwr = 25
@@ -1978,7 +1870,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/fanciulli
name = "Fanciulli"
- id = "fanciulli"
description = "What if the Manhattan coctail ACTUALLY used a bitter herb liquour? Helps you sobers up." //also causes a bit of stamina damage to symbolize the afterdrink lazyness
color = "#CA933F" // rgb: 202, 147, 63
boozepwr = -10
@@ -2003,7 +1894,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/branca_menta
name = "Branca Menta"
- id = "branca_menta"
description = "A refreshing mixture of bitter Fernet with mint creme liquour."
color = "#4B5746" // rgb: 75, 87, 70
boozepwr = 35
@@ -2026,7 +1916,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/blank_paper
name = "Blank Paper"
- id = "blank_paper"
description = "A bubbling glass of blank paper. Just looking at it makes you feel fresh."
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#DCDCDC" // rgb: 220, 220, 220
@@ -2046,7 +1935,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/champagne //How the hell did we not have champagne already!?
name = "Champagne"
- id = "champagne"
description = "A sparkling wine known for its ability to strike fast and hard."
color = "#ffffc1"
boozepwr = 40
@@ -2058,7 +1946,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/wizz_fizz
name = "Wizz Fizz"
- id = "wizz_fizz"
description = "A magical potion, fizzy and wild! However the taste, you will find, is quite mild."
color = "#4235d0" //Just pretend that the triple-sec was blue curacao.
boozepwr = 50
@@ -2079,7 +1966,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/bug_spray
name = "Bug Spray"
- id = "bug_spray"
description = "A harsh, acrid, bitter drink, for those who need something to brace themselves."
color = "#33ff33"
boozepwr = 50
@@ -2103,7 +1989,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/applejack
name = "Applejack"
- id = "applejack"
description = "The perfect beverage for when you feel the need to horse around."
color = "#ff6633"
boozepwr = 20
@@ -2115,7 +2000,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/jack_rose
name = "Jack Rose"
- id = "jack_rose"
description = "A light cocktail perfect for sipping with a slice of pie."
color = "#ff6633"
boozepwr = 15
@@ -2128,7 +2012,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/turbo
name = "Turbo"
- id = "turbo"
description = "A turbulent cocktail associated with outlaw hoverbike racing. Not for the faint of heart."
color = "#e94c3a"
boozepwr = 85
@@ -2147,7 +2030,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/old_timer
name = "Old Timer"
- id = "old_timer"
description = "An archaic potation enjoyed by old coots of all ages."
color = "#996835"
boozepwr = 35
@@ -2168,7 +2050,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
N.hair_color = "ccc"
N.update_hair()
if(N.age > 100)
- N.become_nearsighted(id)
+ N.become_nearsighted(type)
if(N.gender == MALE)
N.facial_hair_style = "Beard (Very Long)"
N.update_hair()
@@ -2181,7 +2063,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/rubberneck
name = "Rubberneck"
- id = "rubberneck"
description = "A quality rubberneck should not contain any gross natural ingredients."
color = "#ffe65b"
boozepwr = 60
@@ -2194,7 +2075,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/duplex
name = "Duplex"
- id = "duplex"
description = "An inseparable combination of two fruity drinks."
color = "#50e5cf"
boozepwr = 25
@@ -2207,7 +2087,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/trappist
name = "Trappist Beer"
- id = "trappist"
description = "A strong dark ale brewed by space-monks."
color = "#390c00"
boozepwr = 40
@@ -2227,7 +2106,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/blazaam
name = "Blazaam"
- id = "blazaam"
description = "A strange drink that few people seem to remember existing. Doubles as a Berenstain remover."
boozepwr = 70
quality = DRINK_FANTASTIC
@@ -2251,7 +2129,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/planet_cracker
name = "Planet Cracker"
- id = "planet_cracker"
description = "This jubilant drink celebrates humanity's triumph over the alien menace. May be offensive to non-human crewmembers."
boozepwr = 50
quality = DRINK_FANTASTIC
@@ -2263,7 +2140,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/commander_and_chief
name = "Commander and Chief"
- id = "commander_and_chief"
description = "A cocktail for the captain on the go."
color = "#ffffc9"
boozepwr = 50
@@ -2287,7 +2163,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/fruit_wine
name = "Fruit Wine"
- id = "fruit_wine"
description = "A wine made from grown plants."
color = "#FFFFFF"
boozepwr = 35
diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm
index ada4cd8d8e..fba0b47eb4 100644
--- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm
@@ -47,7 +47,6 @@
//does brute damage but can replicate when damaged and has a chance of expanding again
/datum/reagent/blob/replicating_foam
name = "Replicating Foam"
- id = "replicating_foam"
description = "will do medium brute damage and occasionally expand again when expanding."
shortdesc = "will do medium brute damage."
effectdesc = "will also expand when attacked with burn damage, but takes more brute damage."
@@ -78,7 +77,6 @@
//does massive brute and burn damage, but can only expand manually
/datum/reagent/blob/networked_fibers
name = "Networked Fibers"
- id = "networked_fibers"
description = "will do high brute and burn damage and will generate resources quicker, but can only expand manually."
shortdesc = "will do high brute and burn damage."
taste_description = "efficiency"
@@ -112,7 +110,6 @@
//does brute damage, shifts away when damaged
/datum/reagent/blob/shifting_fragments
name = "Shifting Fragments"
- id = "shifting_fragments"
description = "will do medium brute damage."
effectdesc = "will also cause blob parts to shift away when attacked."
taste_description = "something other-dimensional"
@@ -134,7 +131,7 @@
if((damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") && damage > 0 && B.obj_integrity - damage > 0 && prob(60-damage))
var/list/blobstopick = list()
for(var/obj/structure/blob/OB in orange(1, B))
- if((istype(OB, /obj/structure/blob/normal) || (istype(OB, /obj/structure/blob/shield) && prob(25))) && OB.overmind && OB.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id)
+ if((istype(OB, /obj/structure/blob/normal) || (istype(OB, /obj/structure/blob/shield) && prob(25))) && OB.overmind && OB.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type)
blobstopick += OB //as long as the blob picked is valid; ie, a normal or shield blob that has the same chemical as we do, we can swap with it
if(blobstopick.len)
var/obj/structure/blob/targeted = pick(blobstopick) //randomize the blob chosen, because otherwise it'd tend to the lower left
@@ -146,7 +143,6 @@
//sets you on fire, does burn damage, explodes into flame when burnt, weak to water
/datum/reagent/blob/blazing_oil
name = "Blazing Oil"
- id = "blazing_oil"
description = "will do medium burn damage and set targets on fire."
effectdesc = "will also release bursts of flame when burnt, but takes damage from water."
taste_description = "burning oil"
@@ -174,7 +170,7 @@
if(damage_type == BURN && damage_flag != "energy")
for(var/turf/open/T in range(1, B))
var/obj/structure/blob/C = locate() in T
- if(!(C && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) && prob(80))
+ if(!(C && C.overmind && C.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) && prob(80))
new /obj/effect/hotspot(T)
if(damage_flag == "fire")
return 0
@@ -183,7 +179,6 @@
//does toxin damage, hallucination, targets think they're not hurt at all
/datum/reagent/blob/regenerative_materia
name = "Regenerative Materia"
- id = "regenerative_materia"
description = "will do toxin damage and cause targets to believe they are fully healed."
analyzerdescdamage = "Does toxin damage and injects a toxin that causes the target to believe they are fully healed."
taste_description = "heaven"
@@ -195,8 +190,8 @@
reac_volume = ..()
M.adjust_drugginess(reac_volume)
if(M.reagents)
- M.reagents.add_reagent("regenerative_materia", 0.2*reac_volume)
- M.reagents.add_reagent("spore", 0.2*reac_volume)
+ M.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 0.2*reac_volume)
+ M.reagents.add_reagent(/datum/reagent/toxin/spore, 0.2*reac_volume)
M.apply_damage(0.7*reac_volume, TOX)
/datum/reagent/blob/regenerative_materia/on_mob_life(mob/living/carbon/C)
@@ -213,7 +208,6 @@
//kills sleeping targets and turns them into blob zombies, produces fragile spores when killed or on expanding
/datum/reagent/blob/zombifying_pods
name = "Zombifying Pods"
- id = "zombifying_pods"
description = "will do very low toxin damage and harvest sleeping targets for additional resources and a blob zombie."
effectdesc = "will also produce fragile spores when killed and on expanding."
taste_description = "fungi"
@@ -257,7 +251,6 @@
//does tons of oxygen damage and a little stamina, immune to tesla bolts, weak to EMP
/datum/reagent/blob/energized_jelly
name = "Energized Jelly"
- id = "energized_jelly"
description = "will cause low stamina and high oxygen damage, and cause targets to be unable to breathe."
taste_description = "gelatin"
effectdesc = "will also conduct electricity, but takes damage from EMPs."
@@ -289,7 +282,6 @@
//does aoe brute damage when hitting targets, is immune to explosions
/datum/reagent/blob/explosive_lattice
name = "Explosive Lattice"
- id = "explosive_lattice"
description = "will do brute damage in an area around targets."
taste_description = "the bomb"
effectdesc = "will also resist explosions, but takes increased damage from fire and other energy sources."
@@ -326,7 +318,6 @@
//does brute, burn, and toxin damage, and cools targets down
/datum/reagent/blob/cryogenic_poison
name = "Cryogenic Poison"
- id = "cryogenic_poison"
description = "will inject targets with a freezing poison that does high damage over time."
analyzerdescdamage = "Injects targets with a freezing poison that will gradually solidify the target's internal organs."
color = "#8BA6E9"
@@ -339,9 +330,9 @@
/datum/reagent/blob/cryogenic_poison/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O)
reac_volume = ..()
if(M.reagents)
- M.reagents.add_reagent("frostoil", 0.3*reac_volume)
- M.reagents.add_reagent("ice", 0.3*reac_volume)
- M.reagents.add_reagent("cryogenic_poison", 0.3*reac_volume)
+ M.reagents.add_reagent(/datum/reagent/consumable/frostoil, 0.3*reac_volume)
+ M.reagents.add_reagent(/datum/reagent/consumable/ice, 0.3*reac_volume)
+ M.reagents.add_reagent(/datum/reagent/blob/cryogenic_poison, 0.3*reac_volume)
M.apply_damage(0.2*reac_volume, BRUTE)
/datum/reagent/blob/cryogenic_poison/on_mob_life(mob/living/carbon/M)
@@ -354,7 +345,6 @@
//does burn damage and EMPs, slightly fragile
/datum/reagent/blob/electromagnetic_web
name = "Electromagnetic Web"
- id = "electromagnetic_web"
description = "will do high burn damage and EMP targets."
taste_description = "pop rocks"
effectdesc = "will also take massively increased damage and release an EMP when killed."
@@ -391,7 +381,6 @@
//does brute damage, bonus damage for each nearby blob, and spreads damage out
/datum/reagent/blob/synchronous_mesh
name = "Synchronous Mesh"
- id = "synchronous_mesh"
description = "will do massively increased brute damage for each blob near the target."
effectdesc = "will also spread damage between each blob near the attacked blob."
taste_description = "toxic mold"
@@ -415,10 +404,10 @@
if(damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") //the cause isn't fire or bombs, so split the damage
var/damagesplit = 1 //maximum split is 9, reducing the damage each blob takes to 11% but doing that damage to 9 blobs
for(var/obj/structure/blob/C in orange(1, B))
- if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) //if it doesn't have the same chemical or is a core or node, don't split damage to it
+ if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) //if it doesn't have the same chemical or is a core or node, don't split damage to it
damagesplit += 1
for(var/obj/structure/blob/C in orange(1, B))
- if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) //only hurt blobs that have the same overmind chemical and aren't cores or nodes
+ if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) //only hurt blobs that have the same overmind chemical and aren't cores or nodes
C.take_damage(damage/damagesplit, CLONE, 0, 0)
return damage / damagesplit
else
@@ -427,7 +416,6 @@
//does brute damage through armor and bio resistance
/datum/reagent/blob/reactive_spines
name = "Reactive Spines"
- id = "reactive_spines"
description = "will do medium brute damage through armor and bio resistance."
taste_description = "rock"
effectdesc = "will also react when attacked with brute damage, attacking all near the attacked blob."
@@ -454,7 +442,6 @@
//does low brute damage, oxygen damage, and stamina damage and wets tiles when damaged
/datum/reagent/blob/pressurized_slime
name = "Pressurized Slime"
- id = "pressurized_slime"
description = "will do low brute, oxygen, and stamina damage, and wet tiles under targets."
effectdesc = "will also wet tiles near blobs that are attacked or killed."
taste_description = "a sponge"
diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm
index e8551074e7..6460bfed78 100644
--- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm
@@ -6,7 +6,6 @@
/datum/reagent/consumable/orangejuice
name = "Orange Juice"
- id = "orangejuice"
description = "Both delicious AND rich in Vitamin C, what more do you need?"
color = "#E78108" // rgb: 231, 129, 8
taste_description = "oranges"
@@ -23,7 +22,6 @@
/datum/reagent/consumable/tomatojuice
name = "Tomato Juice"
- id = "tomatojuice"
description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?"
color = "#731008" // rgb: 115, 16, 8
taste_description = "tomatoes"
@@ -39,7 +37,6 @@
/datum/reagent/consumable/limejuice
name = "Lime Juice"
- id = "limejuice"
description = "The sweet-sour juice of limes."
color = "#365E30" // rgb: 54, 94, 48
taste_description = "unbearable sourness"
@@ -56,7 +53,6 @@
/datum/reagent/consumable/carrotjuice
name = "Carrot Juice"
- id = "carrotjuice"
description = "It is just like a carrot but without crunching."
color = "#973800" // rgb: 151, 56, 0
taste_description = "carrots"
@@ -78,7 +74,6 @@
/datum/reagent/consumable/berryjuice
name = "Berry Juice"
- id = "berryjuice"
description = "A delicious blend of several different kinds of berries."
color = "#863333" // rgb: 134, 51, 51
taste_description = "berries"
@@ -88,7 +83,6 @@
/datum/reagent/consumable/applejuice
name = "Apple Juice"
- id = "applejuice"
description = "The sweet juice of an apple, fit for all ages."
color = "#ECFF56" // rgb: 236, 255, 86
taste_description = "apples"
@@ -96,7 +90,6 @@
/datum/reagent/consumable/poisonberryjuice
name = "Poison Berry Juice"
- id = "poisonberryjuice"
description = "A tasty juice blended from various kinds of very deadly and toxic berries."
color = "#863353" // rgb: 134, 51, 83
taste_description = "berries"
@@ -111,7 +104,6 @@
/datum/reagent/consumable/watermelonjuice
name = "Watermelon Juice"
- id = "watermelonjuice"
description = "Delicious juice made from watermelon."
color = "#863333" // rgb: 134, 51, 51
taste_description = "juicy watermelon"
@@ -121,7 +113,6 @@
/datum/reagent/consumable/lemonjuice
name = "Lemon Juice"
- id = "lemonjuice"
description = "This juice is VERY sour."
color = "#863333" // rgb: 175, 175, 0
taste_description = "sourness"
@@ -132,7 +123,6 @@
/datum/reagent/consumable/banana
name = "Banana Juice"
- id = "banana"
description = "The raw essence of a banana. HONK"
color = "#863333" // rgb: 175, 175, 0
taste_description = "banana"
@@ -148,7 +138,6 @@
/datum/reagent/consumable/nothing
name = "Nothing"
- id = "nothing"
description = "Absolutely nothing."
taste_description = "nothing"
glass_icon_state = "nothing"
@@ -164,7 +153,6 @@
/datum/reagent/consumable/laughter
name = "Laughter"
- id = "laughter"
description = "Some say that this is the best medicine, but recent studies have proven that to be untrue."
metabolization_rate = INFINITY
color = "#FF4DD2"
@@ -177,7 +165,6 @@
/datum/reagent/consumable/superlaughter
name = "Super Laughter"
- id = "superlaughter"
description = "Funny until you're the one laughing."
metabolization_rate = 1.5 * REAGENTS_METABOLISM
color = "#FF4DD2"
@@ -192,7 +179,6 @@
/datum/reagent/consumable/potato_juice
name = "Potato Juice"
- id = "potato"
description = "Juice of the potato. Bleh."
nutriment_factor = 2 * REAGENTS_METABOLISM
color = "#302000" // rgb: 48, 32, 0
@@ -203,14 +189,12 @@
/datum/reagent/consumable/grapejuice
name = "Grape Juice"
- id = "grapejuice"
description = "The juice of a bunch of grapes. Guaranteed non-alcoholic."
color = "#290029" // dark purple
taste_description = "grape soda"
/datum/reagent/consumable/milk
name = "Milk"
- id = "milk"
description = "An opaque white liquid produced by the mammary glands of mammals."
color = "#DFDFDF" // rgb: 223, 223, 223
taste_description = "milk"
@@ -227,13 +211,12 @@
if(M.getBruteLoss() && prob(20))
M.heal_bodypart_damage(1,0, 0)
. = 1
- if(holder.has_reagent("capsaicin"))
- holder.remove_reagent("capsaicin", 2)
+ if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
+ holder.remove_reagent(/datum/reagent/consumable/capsaicin, 2)
..()
/datum/reagent/consumable/soymilk
name = "Soy Milk"
- id = "soymilk"
description = "An opaque white liquid made from soybeans."
color = "#DFDFC7" // rgb: 223, 223, 199
taste_description = "soy milk"
@@ -249,7 +232,6 @@
/datum/reagent/consumable/coconutmilk
name = "Coconut Milk"
- id = "coconutmilk"
description = "A transparent white liquid extracted from coconuts. Rich in taste."
color = "#DFDFDF" // rgb: 223, 223, 223
taste_description = "sweet milk"
@@ -266,7 +248,6 @@
/datum/reagent/consumable/cream
name = "Cream"
- id = "cream"
description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?"
color = "#DFD7AF" // rgb: 223, 215, 175
taste_description = "creamy milk"
@@ -282,7 +263,6 @@
/datum/reagent/consumable/coffee
name = "Coffee"
- id = "coffee"
description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant."
color = "#482000" // rgb: 72, 32, 0
nutriment_factor = 0
@@ -302,14 +282,13 @@
M.AdjustSleeping(-40, FALSE)
//310.15 is the normal bodytemp.
M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL)
- if(holder.has_reagent("frostoil"))
- holder.remove_reagent("frostoil", 5)
+ if(holder.has_reagent(/datum/reagent/consumable/frostoil))
+ holder.remove_reagent(/datum/reagent/consumable/frostoil, 5)
..()
. = 1
/datum/reagent/consumable/tea
name = "Tea"
- id = "tea"
description = "Tasty black tea, it has antioxidants, it's good for you!"
color = "#101000" // rgb: 16, 16, 0
nutriment_factor = 0
@@ -331,7 +310,6 @@
/datum/reagent/consumable/lemonade
name = "Lemonade"
- id = "lemonade"
description = "Sweet, tangy lemonade. Good for the soul."
quality = DRINK_NICE
taste_description = "sunshine and summertime"
@@ -341,7 +319,6 @@
/datum/reagent/consumable/tea/arnold_palmer
name = "Arnold Palmer"
- id = "arnold_palmer"
description = "Encourages the patient to go golfing."
color = "#FFB766"
quality = DRINK_NICE
@@ -359,7 +336,6 @@
/datum/reagent/consumable/icecoffee
name = "Iced Coffee"
- id = "icecoffee"
description = "Coffee and ice, refreshing and cool."
color = "#102838" // rgb: 16, 40, 56
nutriment_factor = 0
@@ -379,7 +355,6 @@
/datum/reagent/consumable/icetea
name = "Iced Tea"
- id = "icetea"
description = "No relation to a certain rap artist/actor."
color = "#104038" // rgb: 16, 64, 56
nutriment_factor = 0
@@ -400,7 +375,6 @@
/datum/reagent/consumable/space_cola
name = "Cola"
- id = "cola"
description = "A refreshing beverage."
color = "#100800" // rgb: 16, 8, 0
taste_description = "cola"
@@ -415,7 +389,6 @@
/datum/reagent/consumable/nuka_cola
name = "Nuka Cola"
- id = "nuka_cola"
description = "Cola, cola never changes."
color = "#100800" // rgb: 16, 8, 0
quality = DRINK_VERYGOOD
@@ -424,10 +397,6 @@
glass_name = "glass of Nuka Cola"
glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland."
-/datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/L)
- L.remove_movespeed_modifier(id)
- ..()
-
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M)
M.Jitter(20)
M.set_drugginess(30)
@@ -440,7 +409,6 @@
/datum/reagent/consumable/spacemountainwind
name = "SM Wind"
- id = "spacemountainwind"
description = "Blows right through you like a space wind."
color = "#102000" // rgb: 16, 32, 0
taste_description = "sweet citrus soda"
@@ -458,7 +426,6 @@
/datum/reagent/consumable/dr_gibb
name = "Dr. Gibb"
- id = "dr_gibb"
description = "A delicious blend of 42 different flavours."
color = "#102000" // rgb: 16, 32, 0
taste_description = "cherry soda" // FALSE ADVERTISING
@@ -473,7 +440,6 @@
/datum/reagent/consumable/space_up
name = "Space-Up"
- id = "space_up"
description = "Tastes like a hull breach in your mouth."
color = "#00FF00" // rgb: 0, 255, 0
taste_description = "cherry soda"
@@ -489,7 +455,6 @@
/datum/reagent/consumable/lemon_lime
name = "Lemon Lime"
description = "A tangy substance made of 0.5% natural citrus!"
- id = "lemon_lime"
color = "#8CFF00" // rgb: 135, 255, 0
taste_description = "tangy lime and lemon soda"
glass_icon_state = "glass_yellow"
@@ -503,7 +468,6 @@
/datum/reagent/consumable/pwr_game
name = "Pwr Game"
description = "The only drink with the PWR that true gamers crave."
- id = "pwr_game"
color = "#9385bf" // rgb: 58, 52, 75
taste_description = "sweet and salty tang"
glass_icon_state = "glass_red"
@@ -517,7 +481,6 @@
/datum/reagent/consumable/shamblers
name = "Shambler's Juice"
description = "~Shake me up some of that Shambler's Juice!~"
- id = "shamblers"
color = "#f00060" // rgb: 94, 0, 38
taste_description = "carbonated metallic soda"
glass_icon_state = "glass_red"
@@ -531,7 +494,6 @@
/datum/reagent/consumable/buzz_fuzz
name = "Buzz Fuzz"
description = "~A Hive of Flavour!~ NOTICE: Addicting."
- id = "buzz_fuzz"
addiction_threshold = 26 //A can and a sip
color = "#8CFF00" // rgb: 135, 255, 0
taste_description = "carbonated honey and pollen"
@@ -540,9 +502,9 @@
glass_desc = "Stinging with flavour."
/datum/reagent/consumable/buzz_fuzz/on_mob_life(mob/living/carbon/M)
- M.reagents.add_reagent("sugar",1)
+ M.reagents.add_reagent(/datum/reagent/consumable/sugar,1)
if(prob(5))
- M.reagents.add_reagent("honey",1)
+ M.reagents.add_reagent(/datum/reagent/consumable/honey,1)
..()
/datum/reagent/consumable/buzz_fuzz/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
@@ -575,7 +537,6 @@
/datum/reagent/consumable/grey_bull
name = "Grey Bull"
- id = "grey_bull"
description = "Grey Bull, it gives you gloves!"
color = "#EEFF00" // rgb: 238, 255, 0
quality = DRINK_VERYGOOD
@@ -586,10 +547,10 @@
/datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/L)
..()
- ADD_TRAIT(L, TRAIT_SHOCKIMMUNE, id)
+ ADD_TRAIT(L, TRAIT_SHOCKIMMUNE, type)
/datum/reagent/consumable/grey_bull/on_mob_end_metabolize(mob/living/L)
- REMOVE_TRAIT(L, TRAIT_SHOCKIMMUNE, id)
+ REMOVE_TRAIT(L, TRAIT_SHOCKIMMUNE, type)
..()
/datum/reagent/consumable/grey_bull/on_mob_life(mob/living/carbon/M)
@@ -602,7 +563,6 @@
/datum/reagent/consumable/sodawater
name = "Soda Water"
- id = "sodawater"
description = "A can of club soda. Why not make a scotch and soda?"
color = "#619494" // rgb: 97, 148, 148
taste_description = "carbonated water"
@@ -618,7 +578,6 @@
/datum/reagent/consumable/tonic
name = "Tonic Water"
- id = "tonic"
description = "It tastes strange but at least the quinine keeps the Space Malaria at bay."
color = "#0064C8" // rgb: 0, 100, 200
taste_description = "tart and fresh"
@@ -636,7 +595,6 @@
/datum/reagent/consumable/ice
name = "Ice"
- id = "ice"
description = "Frozen water, your dentist wouldn't like you chewing this."
reagent_state = SOLID
color = "#619494" // rgb: 97, 148, 148
@@ -651,7 +609,6 @@
/datum/reagent/consumable/soy_latte
name = "Soy Latte"
- id = "soy_latte"
description = "A nice and tasty beverage while you are reading your hippie books."
color = "#664300" // rgb: 102, 67, 0
quality = DRINK_NICE
@@ -673,7 +630,6 @@
/datum/reagent/consumable/cafe_latte
name = "Cafe Latte"
- id = "cafe_latte"
description = "A nice, strong and tasty beverage while you are reading."
color = "#664300" // rgb: 102, 67, 0
quality = DRINK_NICE
@@ -695,7 +651,6 @@
/datum/reagent/consumable/doctor_delight
name = "The Doctor's Delight"
- id = "doctorsdelight"
description = "A gulp a day keeps the Medibot away! A mixture of juices that heals most damage types fairly quickly at the cost of hunger."
color = "#FF8CFF" // rgb: 255, 140, 255
quality = DRINK_VERYGOOD
@@ -717,7 +672,6 @@
/datum/reagent/consumable/chocolatepudding
name = "Chocolate Pudding"
- id = "chocolatepudding"
description = "A great dessert for chocolate lovers."
color = "#800000"
quality = DRINK_VERYGOOD
@@ -729,7 +683,6 @@
/datum/reagent/consumable/vanillapudding
name = "Vanilla Pudding"
- id = "vanillapudding"
description = "A great dessert for vanilla lovers."
color = "#FAFAD2"
quality = DRINK_VERYGOOD
@@ -741,7 +694,6 @@
/datum/reagent/consumable/cherryshake
name = "Cherry Shake"
- id = "cherryshake"
description = "A cherry flavored milkshake."
color = "#FFB6C1"
quality = DRINK_VERYGOOD
@@ -753,7 +705,6 @@
/datum/reagent/consumable/bluecherryshake
name = "Blue Cherry Shake"
- id = "bluecherryshake"
description = "An exotic milkshake."
color = "#00F1FF"
quality = DRINK_VERYGOOD
@@ -765,7 +716,6 @@
/datum/reagent/consumable/pumpkin_latte
name = "Pumpkin Latte"
- id = "pumpkin_latte"
description = "A mix of pumpkin juice and coffee."
color = "#F4A460"
quality = DRINK_VERYGOOD
@@ -777,7 +727,6 @@
/datum/reagent/consumable/gibbfloats
name = "Gibb Floats"
- id = "gibbfloats"
description = "Ice cream on top of a Dr. Gibb glass."
color = "#B22222"
quality = DRINK_NICE
@@ -789,21 +738,18 @@
/datum/reagent/consumable/pumpkinjuice
name = "Pumpkin Juice"
- id = "pumpkinjuice"
description = "Juiced from real pumpkin."
color = "#FFA500"
taste_description = "pumpkin"
/datum/reagent/consumable/blumpkinjuice
name = "Blumpkin Juice"
- id = "blumpkinjuice"
description = "Juiced from real blumpkin."
color = "#00BFFF"
taste_description = "a mouthful of pool water"
/datum/reagent/consumable/triple_citrus
name = "Triple Citrus"
- id = "triple_citrus"
description = "A solution."
color = "#fff12b"
quality = DRINK_NICE
@@ -814,7 +760,6 @@
/datum/reagent/consumable/grape_soda
name = "Grape soda"
- id = "grapesoda"
description = "Beloved of children and teetotalers."
color = "#E6CDFF"
taste_description = "grape soda"
@@ -827,7 +772,6 @@
/datum/reagent/consumable/milk/chocolate_milk
name = "Chocolate Milk"
- id = "chocolate_milk"
description = "Milk for cool kids."
color = "#7D4E29"
quality = DRINK_NICE
@@ -835,7 +779,6 @@
/datum/reagent/consumable/menthol
name = "Menthol"
- id = "menthol"
description = "Alleviates coughing symptoms one might have."
color = "#80AF9C"
taste_description = "mint"
@@ -849,7 +792,6 @@
/datum/reagent/consumable/grenadine
name = "Grenadine"
- id = "grenadine"
description = "Not cherry flavored!"
color = "#EA1D26"
taste_description = "sweet pomegranates"
@@ -858,7 +800,6 @@
/datum/reagent/consumable/parsnipjuice
name = "Parsnip Juice"
- id = "parsnipjuice"
description = "Why..."
color = "#FFA500"
taste_description = "parsnip"
@@ -866,7 +807,6 @@
/datum/reagent/consumable/peachjuice //Intended to be extremely rare due to being the limiting ingredients in the blazaam drink
name = "Peach Juice"
- id = "peachjuice"
description = "Just peachy."
color = "#E78108"
taste_description = "peaches"
@@ -874,7 +814,6 @@
/datum/reagent/consumable/cream_soda
name = "Cream Soda"
- id = "cream_soda"
description = "A classic space-American vanilla flavored soft drink."
color = "#dcb137"
quality = DRINK_VERYGOOD
@@ -889,7 +828,6 @@
/datum/reagent/consumable/red_queen
name = "Red Queen"
- id = "red_queen"
description = "DRINK ME."
color = "#e6ddc3"
quality = DRINK_GOOD
@@ -917,7 +855,6 @@
/datum/reagent/consumable/pinkmilk
name = "Strawberry Milk"
- id = "pinkmilk"
description = "A drink of a bygone era of milk and artificial sweetener back on a rock."
color = "#f76aeb"//rgb(247, 106, 235)
glass_icon_state = "pinkmilk"
@@ -934,7 +871,6 @@
/datum/reagent/consumable/pinktea //Tiny Tim song
name = "Strawberry Tea"
- id = "pinktea"
description = "A timeless classic!"
color = "#f76aeb"//rgb(247, 106, 235)
glass_icon_state = "pinktea"
@@ -951,7 +887,6 @@
/datum/reagent/consumable/catnip_tea
name = "Catnip Tea"
- id = "catnip_tea"
description = "A sleepy and tasty catnip tea!"
color = "#101000" // rgb: 16, 16, 0
nutriment_factor = 0
@@ -971,7 +906,6 @@
/datum/reagent/consumable/monkey_energy
name = "Monkey Energy"
- id = "monkey_energy"
description = "The only drink that will make you unleash the ape."
color = "#f39b03" // rgb: 243, 155, 3
taste_description = "barbecue and nostalgia"
@@ -986,3 +920,12 @@
M.AdjustSleeping(-40, FALSE)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
..()
+
+/datum/reagent/consumable/bungojuice
+ name = "Bungo Juice"
+ color = "#F9E43D"
+ description = "Exotic! You feel like you are on vactation already."
+ taste_description = "succulent bungo"
+ glass_icon_state = "glass_yellow"
+ glass_name = "glass of bungo juice"
+ glass_desc = "Exotic! You feel like you are on vacation already."
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index e956fcac36..a2e651d791 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -1,6 +1,5 @@
/datum/reagent/drug
name = "Drug"
- id = "drug"
value = 12
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "bitterness"
@@ -8,11 +7,10 @@
/datum/reagent/drug/on_mob_end_metabolize(mob/living/M)
if(trippy)
- SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[id]_high")
+ SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[type]_high")
/datum/reagent/drug/space_drugs
name = "Space drugs"
- id = "space_drugs"
value = 6
description = "An illegal chemical compound used as drug."
color = "#60A584" // rgb: 96, 165, 132
@@ -31,7 +29,7 @@
/datum/reagent/drug/space_drugs/overdose_start(mob/living/M)
to_chat(M, "You start tripping hard!")
- SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name)
/datum/reagent/drug/space_drugs/overdose_process(mob/living/M)
if(M.hallucination < volume && prob(20))
@@ -40,7 +38,6 @@
/datum/reagent/drug/nicotine
name = "Nicotine"
- id = "nicotine"
value = 0
description = "Slightly reduces stun times. If overdosed it will deal toxin and oxygen damage."
reagent_state = LIQUID
@@ -64,7 +61,6 @@
/datum/reagent/drug/crank
name = "Crank"
- id = "crank"
description = "Reduces stun times by about 200%. If overdosed or addicted it will deal significant Toxin, Brute and Brain damage."
reagent_state = LIQUID
color = "#FA00C8"
@@ -112,7 +108,6 @@
/datum/reagent/drug/krokodil
name = "Krokodil"
- id = "krokodil"
description = "Cools and calms you down. If overdosed it will deal significant Brain and Toxin damage. If addicted it will begin to deal fatal amounts of Brute damage as the subject's skin falls off."
reagent_state = LIQUID
color = "#0064B4"
@@ -164,7 +159,6 @@
/datum/reagent/drug/methamphetamine
name = "Methamphetamine"
- id = "methamphetamine"
description = "Reduces stun times by about 300%, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage."
reagent_state = LIQUID
color = "#FAFAFA"
@@ -178,10 +172,10 @@
/datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L)
..()
- L.ignore_slowdown(id)
+ L.ignore_slowdown(type)
/datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L)
- L.unignore_slowdown(id)
+ L.unignore_slowdown(type)
..()
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M)
@@ -252,7 +246,6 @@
. = 1
/datum/reagent/drug/methamphetamine/changeling
- id = "changelingmeth"
name = "Changeling Adrenaline"
addiction_threshold = 35
overdose_threshold = 35
@@ -261,7 +254,6 @@
/datum/reagent/drug/bath_salts
name = "Bath Salts"
- id = "bath_salts"
description = "Makes you impervious to stuns and grants a stamina regeneration buff, but you will be a nearly uncontrollable tramp-bearded raving lunatic."
reagent_state = LIQUID
color = "#FAFAFA"
@@ -273,16 +265,16 @@
/datum/reagent/drug/bath_salts/on_mob_metabolize(mob/living/L)
..()
- ADD_TRAIT(L, TRAIT_STUNIMMUNE, id)
- ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, id)
+ ADD_TRAIT(L, TRAIT_STUNIMMUNE, type)
+ ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
if(iscarbon(L))
var/mob/living/carbon/C = L
rage = new()
C.gain_trauma(rage, TRAUMA_RESILIENCE_ABSOLUTE)
/datum/reagent/drug/bath_salts/on_mob_end_metabolize(mob/living/L)
- REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, id)
- REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, id)
+ REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, type)
+ REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
if(rage)
QDEL_NULL(rage)
..()
@@ -362,7 +354,6 @@
/datum/reagent/drug/aranesp
name = "Aranesp"
- id = "aranesp"
description = "Amps you up and gets you going, fixes all stamina damage you might have but can cause toxin and oxygen damage."
reagent_state = LIQUID
color = "#78FFF0"
@@ -382,7 +373,6 @@
/datum/reagent/drug/happiness
name = "Happiness"
- id = "happiness"
description = "Fills you with ecstasic numbness and causes minor brain damage. Highly addictive. If overdosed causes sudden mood swings."
reagent_state = LIQUID
color = "#FFF378"
@@ -392,11 +382,11 @@
/datum/reagent/drug/happiness/on_mob_add(mob/living/L)
..()
- ADD_TRAIT(L, TRAIT_FEARLESS, id)
+ ADD_TRAIT(L, TRAIT_FEARLESS, type)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "happiness_drug", /datum/mood_event/happiness_drug)
/datum/reagent/drug/happiness/on_mob_delete(mob/living/L)
- REMOVE_TRAIT(L, TRAIT_FEARLESS, id)
+ REMOVE_TRAIT(L, TRAIT_FEARLESS, type)
SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "happiness_drug")
..()
@@ -460,7 +450,6 @@
/datum/reagent/drug/skooma
name = "Skooma"
- id = "skooma"
description = "An ancient, highly-addictive drug of long-forgotten times. It greatly improves the user's speed and strength, but heavily impedes their intelligence and agility."
reagent_state = LIQUID
color = "#F3E0F9"
@@ -472,7 +461,7 @@
/datum/reagent/drug/skooma/on_mob_metabolize(mob/living/L)
. = ..()
- L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
+ L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
L.next_move_modifier *= 2
if(ishuman(L))
var/mob/living/carbon/human/H = L
@@ -483,7 +472,7 @@
/datum/reagent/drug/skooma/on_mob_end_metabolize(mob/living/L)
. = ..()
- L.remove_movespeed_modifier(id)
+ L.remove_movespeed_modifier(type)
L.next_move_modifier *= 0.5
if(ishuman(L))
var/mob/living/carbon/human/H = L
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index 8936866305..b6cb387b81 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -9,7 +9,6 @@
/datum/reagent/consumable
name = "Consumable"
- id = "consumable"
taste_description = "generic food"
taste_mult = 4
value = 0.1
@@ -19,7 +18,7 @@
/datum/reagent/consumable/on_mob_life(mob/living/carbon/M)
current_cycle++
M.nutrition += nutriment_factor
- holder.remove_reagent(src.id, metabolization_rate)
+ holder.remove_reagent(type, metabolization_rate)
/datum/reagent/consumable/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(method == INGEST)
@@ -39,7 +38,6 @@
/datum/reagent/consumable/nutriment
name = "Nutriment"
- id = "nutriment"
description = "All the vitamins, minerals, and carbohydrates the body needs in pure form."
reagent_state = SOLID
nutriment_factor = 15 * REAGENTS_METABOLISM
@@ -90,7 +88,6 @@
/datum/reagent/consumable/nutriment/vitamin
name = "Vitamin"
- id = "vitamin"
description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form."
value = 0.5
@@ -104,7 +101,6 @@
/datum/reagent/consumable/cooking_oil
name = "Cooking Oil"
- id = "cooking_oil"
description = "A variety of cooking oil derived from fat or plants. Used in food preparation and frying."
color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil)
taste_mult = 0.8
@@ -121,7 +117,7 @@
O.loc.visible_message("[O] rapidly fries as it's splashed with hot oil! Somehow.")
var/obj/item/reagent_containers/food/snacks/deepfryholder/F = new(O.drop_location(), O)
F.fry(volume)
- F.reagents.add_reagent("cooking_oil", reac_volume)
+ F.reagents.add_reagent(/datum/reagent/consumable/cooking_oil, reac_volume)
/datum/reagent/consumable/cooking_oil/reaction_mob(mob/living/M, method = TOUCH, reac_volume, show_message = 1, touch_protection = 0)
if(!istype(M))
@@ -150,7 +146,6 @@
/datum/reagent/consumable/sugar
name = "Sugar"
- id = "sugar"
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
reagent_state = SOLID
color = "#FFFFFF" // rgb: 255, 255, 255
@@ -173,7 +168,6 @@
/datum/reagent/consumable/virus_food
name = "Virus Food"
- id = "virusfood"
description = "A mixture of water and milk. Virus cells can use this mixture to reproduce."
nutriment_factor = 2 * REAGENTS_METABOLISM
color = "#899613" // rgb: 137, 150, 19
@@ -181,7 +175,6 @@
/datum/reagent/consumable/soysauce
name = "Soysauce"
- id = "soysauce"
description = "A salty sauce made from the soy plant."
nutriment_factor = 2 * REAGENTS_METABOLISM
color = "#792300" // rgb: 121, 35, 0
@@ -189,7 +182,6 @@
/datum/reagent/consumable/ketchup
name = "Ketchup"
- id = "ketchup"
description = "Ketchup, catsup, whatever. It's tomato paste."
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#731008" // rgb: 115, 16, 8
@@ -197,7 +189,6 @@
/datum/reagent/consumable/mustard
name = "Mustard"
- id = "mustard"
description = "Mustard, mostly used on hotdogs, corndogs and burgers."
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#DDED26" // rgb: 221, 237, 38
@@ -205,7 +196,6 @@
/datum/reagent/consumable/capsaicin
name = "Capsaicin Oil"
- id = "capsaicin"
description = "This is what makes chilis hot."
color = "#B31008" // rgb: 179, 16, 8
taste_description = "hot peppers"
@@ -216,8 +206,8 @@
switch(current_cycle)
if(1 to 15)
heating = 5 * TEMPERATURE_DAMAGE_COEFFICIENT
- if(holder.has_reagent("cryostylane"))
- holder.remove_reagent("cryostylane", 5)
+ if(holder.has_reagent(/datum/reagent/cryostylane))
+ holder.remove_reagent(/datum/reagent/cryostylane, 5)
if(isslime(M))
heating = rand(5,20)
if(15 to 25)
@@ -237,7 +227,6 @@
/datum/reagent/consumable/frostoil
name = "Frost Oil"
- id = "frostoil"
description = "A special oil that noticably chills the body. Extracted from Icepeppers and slimes."
color = "#8BA6E9" // rgb: 139, 166, 233
taste_description = "mint"
@@ -249,8 +238,8 @@
switch(current_cycle)
if(1 to 15)
cooling = -10 * TEMPERATURE_DAMAGE_COEFFICIENT
- if(holder.has_reagent("capsaicin"))
- holder.remove_reagent("capsaicin", 5)
+ if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
+ holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5)
if(isslime(M))
cooling = -rand(5,20)
if(15 to 25)
@@ -284,7 +273,6 @@
/datum/reagent/consumable/condensedcapsaicin
name = "Condensed Capsaicin"
- id = "condensedcapsaicin"
description = "A chemical agent used for self-defense and in police work."
color = "#B31008" // rgb: 179, 16, 8
taste_description = "scorching agony"
@@ -358,7 +346,6 @@
/datum/reagent/consumable/sodiumchloride
name = "Table Salt"
- id = "sodiumchloride"
description = "A salt made of sodium chloride. Commonly used to season food."
reagent_state = SOLID
color = "#FFFFFF" // rgb: 255,255,255
@@ -379,7 +366,6 @@
/datum/reagent/consumable/blackpepper
name = "Black Pepper"
- id = "blackpepper"
description = "A powder ground from peppercorns. *AAAACHOOO*"
reagent_state = SOLID
// no color (ie, black)
@@ -387,7 +373,6 @@
/datum/reagent/consumable/coco
name = "Coco Powder"
- id = "cocoa"
description = "A fatty, bitter paste made from coco beans."
reagent_state = SOLID
nutriment_factor = 5 * REAGENTS_METABOLISM
@@ -396,7 +381,6 @@
/datum/reagent/consumable/hot_coco
name = "Hot Chocolate"
- id = "hot_coco"
description = "Made with love! And coco beans."
nutriment_factor = 3 * REAGENTS_METABOLISM
color = "#403010" // rgb: 64, 48, 16
@@ -411,7 +395,6 @@
/datum/reagent/drug/mushroomhallucinogen
name = "Mushroom Hallucinogen"
- id = "mushroomhallucinogen"
description = "A strong hallucinogenic drug derived from certain species of mushroom."
color = "#E700E7" // rgb: 231, 0, 231
metabolization_rate = 0.2 * REAGENTS_METABOLISM
@@ -442,7 +425,6 @@
/datum/reagent/consumable/sprinkles
name = "Sprinkles"
- id = "sprinkles"
value = 3
description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops."
color = "#FF00FF" // rgb: 255, 0, 255
@@ -456,7 +438,6 @@
/datum/reagent/consumable/peanut_butter
name = "Peanut Butter"
- id = "peanut_butter"
description = "A popular food paste made from ground dry-roasted peanuts."
color = "#C29261"
value = 3
@@ -465,7 +446,6 @@
/datum/reagent/consumable/cornoil
name = "Corn Oil"
- id = "cornoil"
description = "An oil derived from various types of corn."
nutriment_factor = 20 * REAGENTS_METABOLISM
value = 4
@@ -486,7 +466,6 @@
/datum/reagent/consumable/enzyme
name = "Universal Enzyme"
- id = "enzyme"
value = 1
description = "A universal enzyme used in the preperation of certain chemicals and foods."
color = "#365E30" // rgb: 54, 94, 48
@@ -494,7 +473,6 @@
/datum/reagent/consumable/dry_ramen
name = "Dry Ramen"
- id = "dry_ramen"
description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water."
reagent_state = SOLID
color = "#302000" // rgb: 48, 32, 0
@@ -502,7 +480,6 @@
/datum/reagent/consumable/hot_ramen
name = "Hot Ramen"
- id = "hot_ramen"
description = "The noodles are boiled, the flavors are artificial, just like being back in school."
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#302000" // rgb: 48, 32, 0
@@ -514,7 +491,6 @@
/datum/reagent/consumable/hell_ramen
name = "Hell Ramen"
- id = "hell_ramen"
description = "The noodles are boiled, the flavors are artificial, just like being back in school."
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#302000" // rgb: 48, 32, 0
@@ -526,7 +502,6 @@
/datum/reagent/consumable/flour
name = "Flour"
- id = "flour"
value = 0.5
description = "This is what you rub all over yourself to pretend to be a ghost."
reagent_state = SOLID
@@ -538,11 +513,10 @@
var/obj/effect/decal/cleanable/flour/reagentdecal = new/obj/effect/decal/cleanable/flour(T)
reagentdecal = locate() in T //Might have merged with flour already there.
if(reagentdecal)
- reagentdecal.reagents.add_reagent("flour", reac_volume)
+ reagentdecal.reagents.add_reagent(/datum/reagent/consumable/flour, reac_volume)
/datum/reagent/consumable/cherryjelly
name = "Cherry Jelly"
- id = "cherryjelly"
description = "Totally the best. Only to be spread on foods with excellent lateral symmetry."
color = "#801E28" // rgb: 128, 30, 40
value = 1
@@ -550,7 +524,6 @@
/datum/reagent/consumable/bluecherryjelly
name = "Blue Cherry Jelly"
- id = "bluecherryjelly"
description = "Blue and tastier kind of cherry jelly."
color = "#00F0FF"
value = 12
@@ -558,7 +531,6 @@
/datum/reagent/consumable/rice
name = "Rice"
- id = "rice"
value = 0.5
description = "tiny nutritious grains"
reagent_state = SOLID
@@ -568,7 +540,6 @@
/datum/reagent/consumable/vanilla
name = "Vanilla Powder"
- id = "vanilla"
value = 1
description = "A fatty, bitter paste made from vanilla pods."
reagent_state = SOLID
@@ -578,7 +549,6 @@
/datum/reagent/consumable/eggyolk
name = "Egg Yolk"
- id = "eggyolk"
value = 1
description = "It's full of protein."
nutriment_factor = 3 * REAGENTS_METABOLISM
@@ -587,7 +557,6 @@
/datum/reagent/consumable/corn_starch
name = "Corn Starch"
- id = "corn_starch"
value = 2
description = "A slippery solution."
color = "#f7f6e4"
@@ -595,7 +564,6 @@
/datum/reagent/consumable/corn_syrup
name = "Corn Syrup"
- id = "corn_syrup"
value = 1
description = "Decays into sugar."
color = "#fff882"
@@ -603,12 +571,11 @@
taste_description = "sweet slime"
/datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/carbon/M)
- holder.add_reagent("sugar", 3)
+ holder.add_reagent(/datum/reagent/consumable/sugar, 3)
..()
/datum/reagent/consumable/honey
name = "honey"
- id = "honey"
description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties."
color = "#d3a308"
value = 15
@@ -617,7 +584,7 @@
taste_description = "sweetness"
/datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M)
- M.reagents.add_reagent("sugar",3)
+ M.reagents.add_reagent(/datum/reagent/consumable/sugar,3)
if(prob(55))
M.adjustBruteLoss(-1*REM, 0)
M.adjustFireLoss(-1*REM, 0)
@@ -635,7 +602,6 @@
/datum/reagent/consumable/mayonnaise
name = "Mayonnaise"
- id = "mayonnaise"
description = "An white and oily mixture of mixed egg yolks."
color = "#DFDFDF"
value = 5
@@ -643,7 +609,6 @@
/datum/reagent/consumable/tearjuice
name = "Tear Juice"
- id = "tearjuice"
description = "A blinding substance extracted from certain onions."
color = "#c0c9a0"
taste_description = "bitterness"
@@ -682,7 +647,6 @@
/datum/reagent/consumable/nutriment/stabilized
name = "Stabilized Nutriment"
- id = "stabilizednutriment"
description = "A bioengineered protien-nutrient structure designed to decompose in high saturation. In layman's terms, it won't get you fat."
reagent_state = SOLID
nutriment_factor = 15 * REAGENTS_METABOLISM
@@ -698,7 +662,6 @@
/datum/reagent/consumable/entpoly
name = "Entropic Polypnium"
- id = "entpoly"
description = "An ichor, derived from a certain mushroom, makes for a bad time."
color = "#1d043d"
taste_description = "bitter mushroom"
@@ -719,7 +682,6 @@
/datum/reagent/consumable/tinlux
name = "Tinea Luxor"
- id = "tinlux"
description = "A stimulating ichor which causes luminescent fungi to grow on the skin. "
color = "#b5a213"
taste_description = "tingling mushroom"
@@ -733,7 +695,6 @@
/datum/reagent/consumable/vitfro
name = "Vitrium Froth"
- id = "vitfro"
description = "A bubbly paste that heals wounds of the skin."
color = "#d3a308"
nutriment_factor = 3 * REAGENTS_METABOLISM
@@ -749,7 +710,6 @@
/datum/reagent/consumable/clownstears
name = "Clown's Tears"
- id = "clownstears"
description = "The sorrow and melancholy of a thousand bereaved clowns, forever denied their Honkmechs."
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#eef442" // rgb: 238, 244, 66
@@ -758,7 +718,6 @@
/datum/reagent/consumable/liquidelectricity
name = "Liquid Electricity"
- id = "liquidelectricity"
description = "The blood of Ethereals, and the stuff that keeps them going. Great for them, horrid for anyone else."
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#97ee63"
@@ -782,7 +741,6 @@
/datum/reagent/consumable/astrotame
name = "Astrotame"
- id = "astrotame"
description = "A space age artifical sweetener."
nutriment_factor = 0
metabolization_rate = 2 * REAGENTS_METABOLISM
@@ -801,7 +759,6 @@
/datum/reagent/consumable/caramel
name = "Caramel"
- id = "caramel"
description = "Who would have guessed that heated sugar could be so delicious?"
nutriment_factor = 10 * REAGENTS_METABOLISM
color = "#D98736"
@@ -811,7 +768,6 @@
/datum/reagent/consumable/secretsauce
name = "secret sauce"
- id = "secret_sauce"
description = "What could it be."
nutriment_factor = 2 * REAGENTS_METABOLISM
color = "#792300"
@@ -823,7 +779,6 @@
/datum/reagent/consumable/char
name = "Char"
- id = "char"
description = "Essence of the grill. Has strange properties when overdosed."
reagent_state = LIQUID
nutriment_factor = 5 * REAGENTS_METABOLISM
@@ -838,7 +793,6 @@
/datum/reagent/consumable/bbqsauce
name = "BBQ Sauce"
- id = "bbqsauce"
description = "Sweet, Smokey, Savory, and gets everywhere. Perfect for Grilling."
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#78280A" // rgb: 120 40, 10
diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents.dm
index 4489088adc..63f62406b5 100644
--- a/code/modules/reagents/chemistry/reagents/impure_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/impure_reagents.dm
@@ -8,7 +8,6 @@
/datum/reagent/impure/fermiTox
name = "Chemical Isomers"
- id = "fermiTox"
description = "Toxic chemical isomers made from impure reactions. At low volumes will cause light toxin damage, but as the volume increases, it deals larger amounts, damages the liver, then eventually the heart. This is default impure chem for all chems, and changes only if stated."
data = "merge"
color = "FFFFFF"
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index d8ff084227..d8fc47d1b8 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -7,17 +7,15 @@
/datum/reagent/medicine
name = "Medicine"
- id = "medicine"
value = 2
taste_description = "bitterness"
/datum/reagent/medicine/on_mob_life(mob/living/carbon/M)
current_cycle++
- holder.remove_reagent(src.id, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism
+ holder.remove_reagent(type, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism
/datum/reagent/medicine/leporazine
name = "Leporazine"
- id = "leporazine"
description = "Leporazine will effectively regulate a patient's body temperature, ensuring it never leaves safe levels."
pH = 8.4
color = "#82b8aa"
@@ -31,7 +29,6 @@
/datum/reagent/medicine/adminordrazine //An OP chemical for admins
name = "Adminordrazine"
- id = "adminordrazine"
description = "It's magic. We don't have to explain it."
color = "#ffffff"
can_synth = FALSE
@@ -79,13 +76,11 @@
/datum/reagent/medicine/adminordrazine/quantum_heal
name = "Quantum Medicine"
- id = "quantum_heal"
description = "Rare and experimental particles, that apparently swap the user's body with one from an alternate dimension where it's completely healthy."
taste_description = "science"
/datum/reagent/medicine/synaptizine
name = "Synaptizine"
- id = "synaptizine"
description = "Increases resistance to stuns as well as reducing drowsiness and hallucinations."
color = "#FF00FF"
pH = 4
@@ -95,8 +90,8 @@
M.AdjustStun(-20, 0)
M.AdjustKnockdown(-20, 0)
M.AdjustUnconscious(-20, 0)
- if(holder.has_reagent("mindbreaker"))
- holder.remove_reagent("mindbreaker", 5)
+ if(holder.has_reagent(/datum/reagent/toxin/mindbreaker))
+ holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5)
M.hallucination = max(0, M.hallucination - 10)
if(prob(30))
M.adjustToxLoss(1, 0)
@@ -105,17 +100,16 @@
/datum/reagent/medicine/synaphydramine
name = "Diphen-Synaptizine"
- id = "synaphydramine"
description = "Reduces drowsiness, hallucinations, and Histamine from body."
color = "#EC536D" // rgb: 236, 83, 109
pH = 5.2
/datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(M.drowsyness-5, 0)
- if(holder.has_reagent("mindbreaker"))
- holder.remove_reagent("mindbreaker", 5)
- if(holder.has_reagent("histamine"))
- holder.remove_reagent("histamine", 5)
+ if(holder.has_reagent(/datum/reagent/toxin/mindbreaker))
+ holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5)
+ if(holder.has_reagent(/datum/reagent/toxin/histamine))
+ holder.remove_reagent(/datum/reagent/toxin/histamine, 5)
M.hallucination = max(0, M.hallucination - 10)
if(prob(30))
M.adjustToxLoss(1, 0)
@@ -124,7 +118,6 @@
/datum/reagent/medicine/inacusiate
name = "Inacusiate"
- id = "inacusiate"
description = "Instantly restores all hearing to the patient, but does not cure deafness."
color = "#6600FF" // rgb: 100, 165, 255
pH = 2
@@ -136,7 +129,6 @@
/datum/reagent/medicine/cryoxadone
name = "Cryoxadone"
- id = "cryoxadone"
description = "A chemical mixture with almost magical healing powers. Its main limitation is that the patient's body temperature must be under 270K for it to metabolise correctly."
color = "#0000C8"
taste_description = "sludge"
@@ -157,7 +149,6 @@
/datum/reagent/medicine/clonexadone
name = "Clonexadone"
- id = "clonexadone"
description = "A chemical that derives from Cryoxadone. It specializes in healing clone damage, but nothing else. Requires very cold temperatures to properly metabolize, and metabolizes quicker than cryoxadone."
color = "#0000C8"
taste_description = "muscle"
@@ -174,7 +165,6 @@
/datum/reagent/medicine/pyroxadone
name = "Pyroxadone"
- id = "pyroxadone"
description = "A mixture of cryoxadone and slime jelly, that apparently inverses the requirement for its activation."
color = "#f7832a"
taste_description = "spicy jelly"
@@ -204,7 +194,6 @@
/datum/reagent/medicine/rezadone
name = "Rezadone"
- id = "rezadone"
description = "A powder derived from fish toxin, Rezadone can effectively treat genetic damage as well as restoring minor wounds. Overdose will cause intense nausea and minor toxin damage."
reagent_state = SOLID
color = "#669900" // rgb: 102, 153, 0
@@ -229,7 +218,6 @@
/datum/reagent/medicine/spaceacillin
name = "Spaceacillin"
- id = "spaceacillin"
description = "Spaceacillin will prevent a patient from conventionally spreading any diseases they are currently infected with."
color = "#f2f2f2"
metabolization_rate = 0.1 * REAGENTS_METABOLISM
@@ -238,7 +226,6 @@
//Goon Chems. Ported mainly from Goonstation. Easily mixable (or not so easily) and provide a variety of effects.
/datum/reagent/medicine/silver_sulfadiazine
name = "Silver Sulfadiazine"
- id = "silver_sulfadiazine"
description = "If used in touch-based applications, immediately restores burn wounds as well as restoring more over time. It is mildly poisonous taken orally or by injection. If overdosed, deals brute and minor liver damage."
reagent_state = LIQUID
pH = 7.2
@@ -277,7 +264,6 @@
/datum/reagent/medicine/oxandrolone
name = "Oxandrolone"
- id = "oxandrolone"
description = "Stimulates the healing of severe burns. Extremely rapidly heals severe burns and slowly heals minor ones. Overdose will worsen existing burns."
reagent_state = LIQUID
color = "#f7ffa5"
@@ -302,7 +288,6 @@
/datum/reagent/medicine/styptic_powder
name = "Styptic Powder"
- id = "styptic_powder"
description = "If used in touch-based applications, immediately restores bruising as well as restoring more over time. It is poisonous if taken orally or by injection. If overdosed, deals brute and minor liver damage."
reagent_state = LIQUID
color = "#FF9696"
@@ -342,7 +327,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/salglu_solution
name = "Saline-Glucose Solution"
- id = "salglu_solution"
description = "Has a 33% chance per metabolism cycle to heal brute and burn damage. Can be used as a temporary blood substitute."
reagent_state = LIQUID
color = "#DCDCDC"
@@ -374,12 +358,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/salglu_solution/overdose_process(mob/living/M)
if(prob(3))
to_chat(M, "You feel salty.")
- holder.add_reagent("sodiumchloride", 1)
- holder.remove_reagent("salglu_solution", 0.5)
+ holder.add_reagent(/datum/reagent/consumable/sodiumchloride, 1)
+ holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5)
else if(prob(3))
to_chat(M, "You feel sweet.")
- holder.add_reagent("sugar", 1)
- holder.remove_reagent("salglu_solution", 0.5)
+ holder.add_reagent(/datum/reagent/consumable/sugar, 1)
+ holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5)
if(prob(33))
M.adjustBruteLoss(0.5*REM, 0)
M.adjustFireLoss(0.5*REM, 0)
@@ -388,7 +372,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/mine_salve
name = "Miner's Salve"
- id = "mine_salve"
description = "A powerful painkiller. Restores bruising and burns in addition to making the patient believe they are fully healed."
reagent_state = LIQUID
color = "#6D6374"
@@ -428,7 +411,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/synthflesh
name = "Synthflesh"
- id = "synthflesh"
description = "Has a 100% chance of healing large amounts of brute and burn damage very quickly. One unit of the chemical will heal one point of damage. Touch application only."
reagent_state = LIQUID
color = "#FFEBEB"
@@ -461,7 +443,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/charcoal
name = "Charcoal"
- id = "charcoal"
description = "Heals toxin damage as well as slowly removing any other chemicals the patient has in their bloodstream."
reagent_state = LIQUID
color = "#000000"
@@ -473,14 +454,14 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/charcoal/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(-2*REM, 0)
. = 1
- for(var/datum/reagent/R in M.reagents.reagent_list)
+ for(var/A in M.reagents.reagent_list)
+ var/datum/reagent/R = A
if(R != src)
- M.reagents.remove_reagent(R.id,1)
+ M.reagents.remove_reagent(R.type,1)
..()
/datum/reagent/medicine/omnizine
name = "Omnizine"
- id = "omnizine"
description = "Slowly heals all damage types. Overdose will cause damage in all types instead."
reagent_state = LIQUID
color = "#DCDCDC"
@@ -507,7 +488,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/calomel
name = "Calomel"
- id = "calomel"
description = "Quickly purges the body of all chemicals. Toxin damage is dealt if the patient is in good condition."
reagent_state = LIQUID
color = "#19C832"
@@ -516,9 +496,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
pH = 1.5
/datum/reagent/medicine/calomel/on_mob_life(mob/living/carbon/M)
- for(var/datum/reagent/R in M.reagents.reagent_list)
+ for(var/A in M.reagents.reagent_list)
+ var/datum/reagent/R = A
if(R != src)
- M.reagents.remove_reagent(R.id,2.5)
+ M.reagents.remove_reagent(R.type,2.5)
if(M.health > 20)
M.adjustToxLoss(2.5*REM, 0)
. = 1
@@ -526,7 +507,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/potass_iodide
name = "Potassium Iodide"
- id = "potass_iodide"
description = "Efficiently restores low radiation damage."
reagent_state = LIQUID
color = "#14FF3C"
@@ -540,7 +520,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/prussian_blue
name = "Prussian Blue"
- id = "prussian_blue"
description = "Efficiently restores heavy radiation damage."
reagent_state = LIQUID
color = "#003153" // RGB 0, 49, 83
@@ -554,7 +533,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/pen_acid
name = "Pentetic Acid"
- id = "pen_acid"
description = "Reduces massive amounts of radiation and toxin damage while purging other chemicals from the body."
reagent_state = LIQUID
color = "#E6FFF0"
@@ -565,15 +543,15 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/pen_acid/on_mob_life(mob/living/carbon/M)
M.radiation -= max(M.radiation-RAD_MOB_SAFE, 0)/50
M.adjustToxLoss(-2*REM, 0, healtoxinlover)
- for(var/datum/reagent/R in M.reagents.reagent_list)
+ for(var/A in M.reagents.reagent_list)
+ var/datum/reagent/R = A
if(R != src)
- M.reagents.remove_reagent(R.id,2)
+ M.reagents.remove_reagent(R.type,2)
..()
. = 1
/datum/reagent/medicine/pen_acid/pen_jelly
name = "Pentetic Jelly"
- id = "pen_jelly"
description = "Reduces massive amounts of radiation and toxin damage while purging other chemicals from the body. Slimepeople friendly!"
color = "#91D865"
healtoxinlover = TRUE
@@ -581,7 +559,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/sal_acid
name = "Salicyclic Acid"
- id = "sal_acid"
description = "Stimulates the healing of severe bruises. Extremely rapidly heals severe bruising and slowly heals minor ones. Overdose will worsen existing bruising."
reagent_state = LIQUID
color = "#D2D2D2"
@@ -606,7 +583,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/salbutamol
name = "Salbutamol"
- id = "salbutamol"
description = "Rapidly restores oxygen deprivation as well as preventing more of it to an extent."
reagent_state = LIQUID
color = "#00FFFF"
@@ -622,7 +598,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/perfluorodecalin
name = "Perfluorodecalin"
- id = "perfluorodecalin"
description = "Extremely rapidly restores oxygen deprivation, but inhibits speech. May also heal small amounts of bruising and burns."
reagent_state = LIQUID
color = "#FF6464"
@@ -640,7 +615,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/ephedrine
name = "Ephedrine"
- id = "ephedrine"
description = "Increases stun resistance. Overdose deals toxin damage and inhibits breathing."
reagent_state = LIQUID
color = "#D2FFFA"
@@ -697,7 +671,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/diphenhydramine
name = "Diphenhydramine"
- id = "diphenhydramine"
description = "Rapidly purges the body of Histamine and reduces jitteriness. Slight chance of causing drowsiness."
reagent_state = LIQUID
color = "#64FFE6"
@@ -708,12 +681,11 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
if(prob(10))
M.drowsyness += 1
M.jitteriness -= 1
- M.reagents.remove_reagent("histamine",3)
+ M.reagents.remove_reagent(/datum/reagent/toxin/histamine,3)
..()
/datum/reagent/medicine/morphine
name = "Morphine"
- id = "morphine"
description = "A painkiller that allows the patient to move at full speed even in bulky objects. Causes drowsiness and eventually unconsciousness in high doses. Overdose will cause a variety of effects, ranging from minor to lethal."
reagent_state = LIQUID
color = "#A9FBFB"
@@ -724,10 +696,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/morphine/on_mob_metabolize(mob/living/L)
..()
- L.ignore_slowdown(id)
+ L.ignore_slowdown(type)
/datum/reagent/medicine/morphine/on_mob_end_metabolize(mob/living/L)
- L.unignore_slowdown(id)
+ L.unignore_slowdown(type)
..()
/datum/reagent/medicine/morphine/on_mob_life(mob/living/carbon/M)
@@ -783,7 +755,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/oculine
name = "Oculine"
- id = "oculine"
description = "Quickly restores eye damage, cures nearsightedness, and has a chance to restore vision to the blind."
reagent_state = LIQUID
color = "#FFFFFF"
@@ -814,7 +785,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/atropine
name = "Atropine"
- id = "atropine"
description = "If a patient is in critical condition, rapidly heals all damage types as well as regulating oxygen in the body. Excellent for stabilizing wounded patients."
reagent_state = LIQUID
color = "#000000"
@@ -844,7 +814,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/epinephrine
name = "Epinephrine"
- id = "epinephrine"
description = "Minor boost to stun resistance. Slowly heals damage if a patient is in critical condition, as well as regulating oxygen loss. Overdose causes weakness and toxin damage."
reagent_state = LIQUID
color = "#D2FFFA"
@@ -881,7 +850,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/strange_reagent
name = "Strange Reagent"
- id = "strange_reagent"
description = "A miracle drug capable of bringing the dead back to life. Only functions when applied by patch or spray, if the target has less than 100 brute and burn damage (independent of one another) and hasn't been husked. Causes slight damage to the living."
reagent_state = LIQUID
color = "#A0E85E"
@@ -933,7 +901,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/mannitol
name = "Mannitol"
- id = "mannitol"
description = "Efficiently restores brain damage."
color = "#DCDCFF"
pH = 10.4
@@ -946,7 +913,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/neurine
name = "Neurine"
- id = "neurine"
description = "Reacts with neural tissue, helping reform damaged connections. Can cure minor traumas."
color = "#EEFF8F"
@@ -966,15 +932,14 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/C)
- if(holder.has_reagent("neurotoxin"))
- holder.remove_reagent("neurotoxin", 5)
+ if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin))
+ holder.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 5)
if(prob(15))
C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC)
..()
/datum/reagent/medicine/mutadone
name = "Mutadone"
- id = "mutadone"
description = "Removes jitteriness and restores genetic defects."
color = "#5096C8"
taste_description = "acid"
@@ -989,7 +954,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/antihol
name = "Antihol"
- id = "antihol"
description = "Purges alcoholic substance from the patient's body and eliminates its side effects."
color = "#00B4C8"
taste_description = "raw egg"
@@ -1010,7 +974,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/stimulants
name = "Stimulants"
- id = "stimulants"
description = "Increases stun resistance and movement speed in addition to restoring minor damage and weakness. Overdose causes weakness and toxin damage."
color = "#78008C"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
@@ -1019,10 +982,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/L)
..()
- L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
+ L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
/datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/L)
- L.remove_movespeed_modifier(id)
+ L.remove_movespeed_modifier(type)
..()
/datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M)
@@ -1048,7 +1011,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/insulin
name = "Insulin"
- id = "insulin"
description = "Increases sugar depletion rates."
reagent_state = LIQUID
color = "#FFFFF0"
@@ -1058,13 +1020,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/insulin/on_mob_life(mob/living/carbon/M)
if(M.AdjustSleeping(-20, FALSE))
. = 1
- M.reagents.remove_reagent("sugar", 3)
+ M.reagents.remove_reagent(/datum/reagent/consumable/sugar, 3)
..()
//Trek Chems, used primarily by medibots. Only heals a specific damage type, but is very efficient.
/datum/reagent/medicine/bicaridine
name = "Bicaridine"
- id = "bicaridine"
description = "Restores bruising. Overdose causes it instead."
reagent_state = LIQUID
color = "#fc2626"
@@ -1083,7 +1044,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/dexalin
name = "Dexalin"
- id = "dexalin"
description = "Restores oxygen loss. Overdose causes it instead."
reagent_state = LIQUID
color = "#13d2f0"
@@ -1102,7 +1062,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/kelotane
name = "Kelotane"
- id = "kelotane"
description = "Restores fire damage. Overdose causes it instead."
reagent_state = LIQUID
color = "#ffc400"
@@ -1121,7 +1080,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/antitoxin
name = "Anti-Toxin"
- id = "antitoxin"
description = "Heals toxin damage and removes toxins in the bloodstream. Overdose causes toxin damage."
reagent_state = LIQUID
color = "#6aff00"
@@ -1132,7 +1090,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/antitoxin/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(-2*REM, 0)
for(var/datum/reagent/toxin/R in M.reagents.reagent_list)
- M.reagents.remove_reagent(R.id,1)
+ M.reagents.remove_reagent(R.type,1)
..()
. = 1
@@ -1143,7 +1101,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/inaprovaline
name = "Inaprovaline"
- id = "inaprovaline"
description = "Stabilizes the breathing of patients. Good for those in critical condition."
reagent_state = LIQUID
pH = 8.5
@@ -1156,7 +1113,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/tricordrazine
name = "Tricordrazine"
- id = "tricordrazine"
description = "Has a high chance to heal all types of damage. Overdose instead causes it."
reagent_state = LIQUID
color = "#e650c0"
@@ -1182,7 +1138,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/regen_jelly
name = "Regenerative Jelly"
- id = "regen_jelly"
description = "Gradually regenerates all types of damage, without harming slime anatomy."
reagent_state = LIQUID
color = "#91D865"
@@ -1198,7 +1153,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs
name = "Restorative Nanites"
- id = "syndicate_nanites"
description = "Miniature medical robots that swiftly restore bodily damage."
reagent_state = SOLID
color = "#555555"
@@ -1219,7 +1173,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/lesser_syndicate_nanites // the one in the injector
name = "Regenerative Nanites"
- id = "lesser_syndicate_nanites"
description = "Miniature medical robots that restore damage and get operatives back in the fight."
reagent_state = SOLID
color = "#555555"
@@ -1240,7 +1193,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/neo_jelly
name = "Neo Jelly"
- id = "neo_jelly"
description = "Gradually regenerates all types of damage, without harming slime anatomy.Can OD"
reagent_state = LIQUID
metabolization_rate = 1 * REAGENTS_METABOLISM
@@ -1266,7 +1218,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/earthsblood //Created by ambrosia gaia plants
name = "Earthsblood"
- id = "earthsblood"
description = "Ichor from an extremely powerful plant. Great for restoring wounds, but it's a little heavy on the brain."
color = rgb(255, 175, 0)
overdose_threshold = 25
@@ -1293,7 +1244,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/haloperidol
name = "Haloperidol"
- id = "haloperidol"
description = "Increases depletion rates for most stimulating/hallucinogenic drugs. Reduces druggy effects and jitteriness. Severe stamina regeneration penalty, causes drowsiness. Small chance of brain damage."
reagent_state = LIQUID
color = "#27870a"
@@ -1302,7 +1252,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/haloperidol/on_mob_life(mob/living/carbon/M)
for(var/datum/reagent/drug/R in M.reagents.reagent_list)
- M.reagents.remove_reagent(R.id,5)
+ M.reagents.remove_reagent(R.type,5)
M.drowsyness += 2
if(M.jitteriness >= 3)
M.jitteriness -= 3
@@ -1316,7 +1266,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/lavaland_extract
name = "Lavaland Extract"
- id = "lavaland_extract"
description = "An extract of lavaland atmospheric and mineral elements. Heals the user in small doses, but is extremely toxic otherwise."
color = "#a1a1a1"
overdose_threshold = 3 //To prevent people stacking massive amounts of a very strong healing reagent
@@ -1338,7 +1287,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
//used for changeling's adrenaline power
/datum/reagent/medicine/changelingadrenaline
name = "Changeling Adrenaline"
- id = "changelingadrenaline"
description = "Reduces the duration of unconciousness, knockdown and stuns. Restores stamina, but deals toxin damage when overdosed."
color = "#918e53"
overdose_threshold = 30
@@ -1359,17 +1307,16 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/changelinghaste
name = "Changeling Haste"
- id = "changelinghaste"
description = "Drastically increases movement speed, but deals toxin damage."
color = "#669153"
metabolization_rate = 1
/datum/reagent/medicine/changelinghaste/on_mob_metabolize(mob/living/L)
..()
- L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING))
+ L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING))
/datum/reagent/medicine/changelinghaste/on_mob_end_metabolize(mob/living/L)
- L.remove_movespeed_modifier(id)
+ L.remove_movespeed_modifier(type)
..()
/datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M)
@@ -1381,7 +1328,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
// Heart attack code will not do damage if corazone is present
// because it's SPACE MAGIC ASPIRIN
name = "Corazone"
- id = "corazone"
description = "A medication used to treat pain, fever, and inflammation, along with heart attacks."
color = "#F5F5F5"
self_consuming = TRUE
@@ -1399,20 +1345,18 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/muscle_stimulant
name = "Muscle Stimulant"
- id = "muscle_stimulant"
description = "A potent chemical that allows someone under its influence to be at full physical ability even when under massive amounts of pain."
/datum/reagent/medicine/muscle_stimulant/on_mob_metabolize(mob/living/M)
. = ..()
- M.ignore_slowdown(id)
+ M.ignore_slowdown(type)
/datum/reagent/medicine/muscle_stimulant/on_mob_end_metabolize(mob/living/M)
. = ..()
- M.unignore_slowdown(id)
+ M.unignore_slowdown(type)
/datum/reagent/medicine/modafinil
name = "Modafinil"
- id = "modafinil"
description = "Long-lasting sleep suppressant that very slightly reduces stun and knockdown times. Overdosing has horrendous side effects and deals lethal oxygen damage, will knock you unconscious if not dealt with."
reagent_state = LIQUID
color = "#BEF7D8" // palish blue white
@@ -1423,11 +1367,11 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
pH = 7.89
/datum/reagent/medicine/modafinil/on_mob_metabolize(mob/living/M)
- ADD_TRAIT(M, TRAIT_SLEEPIMMUNE, id)
+ ADD_TRAIT(M, TRAIT_SLEEPIMMUNE, type)
..()
/datum/reagent/medicine/modafinil/on_mob_end_metabolize(mob/living/M)
- REMOVE_TRAIT(M, TRAIT_SLEEPIMMUNE, id)
+ REMOVE_TRAIT(M, TRAIT_SLEEPIMMUNE, type)
..()
/datum/reagent/medicine/modafinil/on_mob_life(mob/living/carbon/M)
@@ -1480,7 +1424,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/psicodine
name = "Psicodine"
- id = "psicodine"
description = "Suppresses anxiety and other various forms of mental distress. Overdose causes hallucinations and minor toxin damage."
reagent_state = LIQUID
color = "#07E79E"
@@ -1490,10 +1433,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/psicodine/on_mob_add(mob/living/L)
..()
- ADD_TRAIT(L, TRAIT_FEARLESS, id)
+ ADD_TRAIT(L, TRAIT_FEARLESS, type)
/datum/reagent/medicine/psicodine/on_mob_delete(mob/living/L)
- REMOVE_TRAIT(L, TRAIT_FEARLESS, id)
+ REMOVE_TRAIT(L, TRAIT_FEARLESS, type)
..()
/datum/reagent/medicine/psicodine/on_mob_life(mob/living/carbon/M)
@@ -1515,7 +1458,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/silibinin
name = "Silibinin"
- id = "silibinin"
description = "A thistle derrived hepatoprotective flavolignan mixture that help reverse damage to the liver."
reagent_state = SOLID
color = "#FFFFD0"
@@ -1528,7 +1470,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/polypyr //This is intended to be an ingredient in advanced chems.
name = "Polypyrylium Oligomers"
- id = "polypyr"
description = "A�purple mixture of short polyelectrolyte chains not easily synthesized in the laboratory. It is valued as an intermediate in the synthesis of the cutting edge pharmaceuticals."
reagent_state = SOLID
color = "#9423FF"
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index bd6eb4244c..dbede29e5f 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -1,7 +1,6 @@
/datum/reagent/blood
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null,"quirks"=null)
name = "Blood"
- id = "blood"
value = 1
color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0
description = "Blood from some creature."
@@ -30,7 +29,7 @@
if(iscarbon(L))
var/mob/living/carbon/C = L
var/blood_id = C.get_blood_id()
- if((HAS_TRAIT(C, TRAIT_NOMARROW) || blood_id == "blood" || blood_id == "jellyblood") && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits))))
+ if((HAS_TRAIT(C, TRAIT_NOMARROW) || blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits))))
C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM * C.blood_ratio)
// we don't care about bloodtype here, we're just refilling the mob
@@ -41,7 +40,7 @@
if((HAS_TRAIT(C, TRAIT_NOMARROW)))
return //We dont want vampires getting toxed from blood
var/blood_id = C.get_blood_id()
- if((blood_id == "blood" || blood_id == "jellyblood"))
+ if((blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood))
if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) //we only care about bloodtype here because this is where the poisoning should be
C.adjustToxLoss(rand(2,8)*REM, TRUE, TRUE) //forced to ensure people don't use it to gain beneficial toxin as slime person
..()
@@ -62,7 +61,7 @@
if(data["blood_DNA"])
B.blood_DNA[data["blood_DNA"]] = data["blood_type"]
if(!B.reagents)
- B.reagents.add_reagent(id, reac_volume)
+ B.reagents.add_reagent(type, reac_volume)
B.update_icon()
/datum/reagent/blood/on_new(list/data)
@@ -132,14 +131,12 @@
/datum/reagent/blood/synthetics
data = list("donor"=null,"viruses"=null,"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Synthetic Blood"
- id = "syntheticblood"
taste_description = "oily"
color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48
/datum/reagent/blood/lizard
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_LIZARD, "blood_type"="L","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Lizard Blood"
- id = "lizardblood"
taste_description = "spicy"
color = BLOOD_COLOR_LIZARD // rgb: 11, 7, 48
pH = 6.85
@@ -147,7 +144,6 @@
/datum/reagent/blood/jellyblood
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Slime Jelly Blood"
- id = "jellyblood"
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."
color = BLOOD_COLOR_SLIME
taste_description = "slime"
@@ -157,7 +153,6 @@
/datum/reagent/blood/xenomorph
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Xenomorph Blood"
- id = "xenoblood"
taste_description = "acidic heresy"
color = BLOOD_COLOR_XENO // greenish yellow ooze
shot_glass_icon_state = "shotglassgreen"
@@ -166,7 +161,6 @@
/datum/reagent/blood/oil
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Hydraulic Blood"
- id = "oilblood"
taste_description = "burnt oil"
color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors.
pH = 9.75
@@ -174,7 +168,6 @@
/datum/reagent/blood/insect
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_BUG, "blood_type"="BUG","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Insectoid Blood"
- id = "bugblood"
taste_description = "waxy"
color = BLOOD_COLOR_BUG // Bug colored, I guess.
pH = 7.25
@@ -193,7 +186,6 @@
/datum/reagent/liquidgibs
name = "Liquid gibs"
- id = "liquidgibs"
color = BLOOD_COLOR_HUMAN
description = "You don't even want to think about what's in here."
taste_description = "gross iron"
@@ -203,7 +195,6 @@
/datum/reagent/liquidgibs/xeno
name = "Liquid xeno gibs"
- id = "liquidxenogibs"
color = BLOOD_COLOR_XENO
taste_description = "blended heresy"
shot_glass_icon_state = "shotglassgreen"
@@ -212,7 +203,6 @@
/datum/reagent/liquidgibs/slime
name = "Slime sludge"
- id = "liquidslimegibs"
color = BLOOD_COLOR_SLIME
taste_description = "slime"
shot_glass_icon_state = "shotglassgreen"
@@ -221,14 +211,12 @@
/datum/reagent/liquidgibs/synth
name = "Synthetic sludge"
- id = "liquidsyntheticgibs"
color = BLOOD_COLOR_SYNTHETIC
taste_description = "jellied plastic"
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
/datum/reagent/liquidgibs/oil
name = "Hydraulic sludge"
- id = "liquidoilgibs"
color = BLOOD_COLOR_OIL
taste_description = "chunky burnt oil"
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
@@ -237,7 +225,6 @@
/datum/reagent/vaccine
//data must contain virus type
name = "Vaccine"
- id = "vaccine"
color = "#C81040" // rgb: 200, 16, 64
taste_description = "slime"
@@ -255,7 +242,6 @@
/datum/reagent/water
name = "Water"
- id = "water"
description = "An ubiquitous chemical substance that is composed of hydrogen and oxygen."
color = "#AAAAAA77" // rgb: 170, 170, 170, 77 (alpha)
taste_description = "water"
@@ -327,7 +313,6 @@
/datum/reagent/water/holywater
name = "Holy Water"
- id = "holywater"
description = "Water blessed by some deity."
color = "#E0E8EF" // rgb: 224, 232, 239
glass_icon_state = "glass_clear"
@@ -337,7 +322,7 @@
/datum/reagent/water/holywater/on_mob_metabolize(mob/living/L)
. = ..()
- ADD_TRAIT(L, TRAIT_HOLY, id)
+ ADD_TRAIT(L, TRAIT_HOLY, type)
if(is_servant_of_ratvar(L))
to_chat(L, "A fog spreads through your mind, purging the Justiciar's influence!")
@@ -345,7 +330,7 @@
to_chat(L, "A fog spreads through your mind, weakening your connection to the veil and purging Nar-sie's influence")
/datum/reagent/water/holywater/on_mob_end_metabolize(mob/living/L)
- REMOVE_TRAIT(L, TRAIT_HOLY, id)
+ REMOVE_TRAIT(L, TRAIT_HOLY, type)
if(iscultist(L))
for(var/datum/action/innate/cult/blood_magic/BM in L.actions)
BM.holy_dispel = FALSE
@@ -392,9 +377,9 @@
remove_servant_of_ratvar(M)
M.jitteriness = 0
M.stuttering = 0
- holder.remove_reagent(id, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better??
+ holder.del_reagent(type) // maybe this is a little too perfect and a max() cap on the statuses would be better??
return
- holder.remove_reagent(id, 0.4) //fixed consumption to prevent balancing going out of whack
+ holder.remove_reagent(type, 0.4) //fixed consumption to prevent balancing going out of whack
/datum/reagent/water/holywater/reaction_turf(turf/T, reac_volume)
..()
@@ -407,14 +392,13 @@
/datum/reagent/fuel/unholywater //if you somehow managed to extract this from someone, dont splash it on yourself and have a smoke
name = "Unholy Water"
- id = "unholywater"
description = "Something that shouldn't exist on this plane of existence."
taste_description = "suffering"
pH = 6.5
/datum/reagent/fuel/unholywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(method == TOUCH || method == VAPOR)
- M.reagents.add_reagent(id,reac_volume/4)
+ M.reagents.add_reagent(type, reac_volume/4)
return
return ..()
@@ -437,12 +421,11 @@
M.adjustFireLoss(2, 0)
M.adjustOxyLoss(2, 0)
M.adjustBruteLoss(2, 0)
- holder.remove_reagent(id, 1)
+ holder.remove_reagent(type, 1)
return TRUE
/datum/reagent/hellwater //if someone has this in their system they've really pissed off an eldrich god
name = "Hell Water"
- id = "hell_water"
description = "YOUR FLESH! IT BURNS!"
taste_description = "burning"
@@ -452,12 +435,11 @@
M.adjustToxLoss(1, 0)
M.adjustFireLoss(1, 0) //Hence the other damages... ain't I a bastard?
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 150)
- holder.remove_reagent(id, 1)
+ holder.remove_reagent(type, 1)
pH = 0.1
/datum/reagent/fuel/holyoil //Its oil
name = "Zelus Oil"
- id = "holyoil"
description = "Oil blessed by a greater being."
taste_description = "metallic oil"
@@ -481,7 +463,7 @@
M.adjustToxLoss(3, 0)
M.adjustOxyLoss(2, 0)
M.adjustStaminaLoss(10, 0)
- holder.remove_reagent(id, 1)
+ holder.remove_reagent(type, 1)
return TRUE
//We only get 30u to start with...
@@ -496,13 +478,11 @@
/datum/reagent/medicine/omnizine/godblood
name = "Godblood"
- id = "godblood"
description = "Slowly heals all damage types. Has a rather high overdose threshold. Glows with mysterious power."
overdose_threshold = 150
/datum/reagent/lube
name = "Space Lube"
- id = "lube"
description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity."
color = "#009CA8" // rgb: 0, 156, 168
taste_description = "cherry" // by popular demand
@@ -517,13 +497,11 @@
///Stronger kind of lube. Applies TURF_WET_SUPERLUBE.
/datum/reagent/lube/superlube
name = "Super Duper Lube"
- id = "superlube"
description = "This \[REDACTED\] has been outlawed after the incident on \[DATA EXPUNGED\]."
lube_kind = TURF_WET_SUPERLUBE
/datum/reagent/spraytan
name = "Spray Tan"
- id = "spraytan"
description = "A substance applied to the skin to darken the skin."
color = "#FFC080" // rgb: 255, 196, 128 Bright orange
metabolization_rate = 10 * REAGENTS_METABOLISM // very fast, so it can be applied rapidly. But this changes on an overdose
@@ -620,7 +598,6 @@
/datum/reagent/mutationtoxin
name = "Stable Mutation Toxin"
- id = "stablemutationtoxin"
description = "A humanizing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
metabolization_rate = INFINITY //So it instantly removes all of itself
@@ -651,7 +628,6 @@
/datum/reagent/mutationtoxin/classic //The one from plasma on green slimes
name = "Mutation Toxin"
- id = "mutationtoxin"
description = "A corruptive toxin."
color = "#13BC5E" // rgb: 19, 188, 94
race = /datum/species/jelly/slime
@@ -659,14 +635,12 @@
/datum/reagent/mutationtoxin/felinid
name = "Felinid Mutation Toxin"
- id = "felinidmutationtoxin"
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/human/felinid
mutationtext = "The pain subsides. You feel... like a degenerate."
/datum/reagent/mutationtoxin/lizard
name = "Lizard Mutation Toxin"
- id = "lizardmutationtoxin"
description = "A lizarding toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/lizard
@@ -674,7 +648,6 @@
/datum/reagent/mutationtoxin/fly
name = "Fly Mutation Toxin"
- id = "flymutationtoxin"
description = "An insectifying toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/fly
@@ -682,7 +655,6 @@
/datum/reagent/mutationtoxin/insect
name = "Insect Mutation Toxin"
- id = "mothmutationtoxin"
description = "A glowing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/insect
@@ -690,7 +662,6 @@
/datum/reagent/mutationtoxin/pod
name = "Podperson Mutation Toxin"
- id = "podmutationtoxin"
description = "A vegetalizing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/pod
@@ -698,7 +669,6 @@
/datum/reagent/mutationtoxin/jelly
name = "Imperfect Mutation Toxin"
- id = "jellymutationtoxin"
description = "An jellyfying toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/jelly
@@ -706,7 +676,6 @@
/datum/reagent/mutationtoxin/golem
name = "Golem Mutation Toxin"
- id = "golemmutationtoxin"
description = "A crystal toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/golem/random
@@ -714,7 +683,6 @@
/datum/reagent/mutationtoxin/abductor
name = "Abductor Mutation Toxin"
- id = "abductormutationtoxin"
description = "An alien toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/abductor
@@ -722,7 +690,6 @@
/datum/reagent/mutationtoxin/android
name = "Android Mutation Toxin"
- id = "androidmutationtoxin"
description = "A robotic toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/android
@@ -731,7 +698,6 @@
//Citadel Races
/datum/reagent/mutationtoxin/mammal
name = "Mammal Mutation Toxin"
- id = "mammalmutationtoxin"
description = "A glowing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/mammal
@@ -739,7 +705,6 @@
/datum/reagent/mutationtoxin/insect
name = "Insect Mutation Toxin"
- id = "insectmutationtoxin"
description = "A glowing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/insect
@@ -747,7 +712,6 @@
/datum/reagent/mutationtoxin/xenoperson
name = "Xeno-Hybrid Mutation Toxin"
- id = "xenopersonmutationtoxin"
description = "A glowing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/xeno
@@ -756,7 +720,6 @@
//BLACKLISTED RACES
/datum/reagent/mutationtoxin/skeleton
name = "Skeleton Mutation Toxin"
- id = "skeletonmutationtoxin"
description = "A scary toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/skeleton
@@ -764,7 +727,6 @@
/datum/reagent/mutationtoxin/zombie
name = "Zombie Mutation Toxin"
- id = "zombiemutationtoxin"
description = "An undead toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/zombie //Not the infectious kind. The days of xenobio zombie outbreaks are long past.
@@ -772,7 +734,6 @@
/datum/reagent/mutationtoxin/ash
name = "Ash Mutation Toxin"
- id = "ashmutationtoxin"
description = "An ashen toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/lizard/ashwalker
@@ -782,7 +743,6 @@
//DANGEROUS RACES
/datum/reagent/mutationtoxin/shadow
name = "Shadow Mutation Toxin"
- id = "shadowmutationtoxin"
description = "A dark toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/shadow
@@ -790,7 +750,6 @@
/datum/reagent/mutationtoxin/plasma
name = "Plasma Mutation Toxin"
- id = "plasmamutationtoxin"
description = "A plasma-based toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
race = /datum/species/plasmaman
@@ -798,7 +757,6 @@
/datum/reagent/slime_toxin
name = "Slime Mutation Toxin"
- id = "slime_toxin"
description = "A toxin that turns organic material into slime."
color = "#5EFF3B" //RGB: 94, 255, 59
taste_description = "slime"
@@ -815,7 +773,7 @@
to_chat(H, "Your jelly shifts and morphs, turning you into another subspecies!")
var/species_type = pick(subtypesof(/datum/species/jelly))
H.set_species(species_type)
- H.reagents.del_reagent(id)
+ H.reagents.del_reagent(type)
switch(current_cycle)
if(1 to 6)
@@ -830,12 +788,11 @@
if(20 to INFINITY)
var/species_type = pick(subtypesof(/datum/species/jelly))
H.set_species(species_type)
- H.reagents.del_reagent(id)
+ H.reagents.del_reagent(type)
to_chat(H, "You've become \a jellyperson!")
/datum/reagent/mulligan
name = "Mulligan Toxin"
- id = "mulligan"
description = "This toxin will rapidly change the DNA of human beings. Commonly used by Syndicate spies and assassins in need of an emergency ID change."
color = "#5EFF3B" //RGB: 94, 255, 59
metabolization_rate = INFINITY
@@ -851,7 +808,6 @@
/datum/reagent/aslimetoxin
name = "Advanced Mutation Toxin"
- id = "amutationtoxin"
description = "An advanced corruptive toxin produced by slimes."
color = "#13BC5E" // rgb: 19, 188, 94
taste_description = "slime"
@@ -862,7 +818,6 @@
/datum/reagent/gluttonytoxin
name = "Gluttony's Blessing"
- id = "gluttonytoxin"
description = "An advanced corruptive toxin produced by something terrible."
color = "#5EFF3B" //RGB: 94, 255, 59
can_synth = FALSE
@@ -873,7 +828,6 @@
/datum/reagent/serotrotium
name = "Serotrotium"
- id = "serotrotium"
description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans."
color = "#202040" // rgb: 20, 20, 40
metabolization_rate = 0.25 * REAGENTS_METABOLISM
@@ -888,7 +842,6 @@
/datum/reagent/oxygen
name = "Oxygen"
- id = "oxygen"
description = "A colorless, odorless gas. Grows on trees but is still pretty valuable."
reagent_state = GAS
color = "#808080" // rgb: 128, 128, 128
@@ -909,7 +862,6 @@
/datum/reagent/copper
name = "Copper"
- id = "copper"
description = "A highly ductile metal. Things made out of copper aren't very durable, but it makes a decent material for electrical wiring."
reagent_state = SOLID
color = "#6E3B08" // rgb: 110, 59, 8
@@ -925,7 +877,6 @@
/datum/reagent/nitrogen
name = "Nitrogen"
- id = "nitrogen"
description = "A colorless, odorless, tasteless gas. A simple asphyxiant that can silently displace vital oxygen."
reagent_state = GAS
color = "#808080" // rgb: 128, 128, 128
@@ -946,7 +897,6 @@
/datum/reagent/hydrogen
name = "Hydrogen"
- id = "hydrogen"
description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas."
reagent_state = GAS
color = "#808080" // rgb: 128, 128, 128
@@ -955,7 +905,6 @@
/datum/reagent/potassium
name = "Potassium"
- id = "potassium"
description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water."
reagent_state = SOLID
color = "#A0A0A0" // rgb: 160, 160, 160
@@ -963,7 +912,6 @@
/datum/reagent/mercury
name = "Mercury"
- id = "mercury"
description = "A curious metal that's a liquid at room temperature. Neurodegenerative and very bad for the mind."
color = "#484848" // rgb: 72, 72, 72A
taste_mult = 0 // apparently tasteless.
@@ -978,7 +926,6 @@
/datum/reagent/sulfur
name = "Sulfur"
- id = "sulfur"
description = "A sickly yellow solid mostly known for its nasty smell. It's actually much more helpful than it looks in biochemisty."
reagent_state = SOLID
color = "#BF8C00" // rgb: 191, 140, 0
@@ -987,7 +934,6 @@
/datum/reagent/carbon
name = "Carbon"
- id = "carbon"
description = "A crumbly black solid that, while unexciting on an physical level, forms the base of all known life. Kind of a big deal."
reagent_state = SOLID
color = "#1C1300" // rgb: 30, 20, 0
@@ -1002,7 +948,6 @@
/datum/reagent/chlorine
name = "Chlorine"
- id = "chlorine"
description = "A pale yellow gas that's well known as an oxidizer. While it forms many harmless molecules in its elemental form it is far from harmless."
reagent_state = GAS
color = "#808080" // rgb: 128, 128, 128
@@ -1016,7 +961,6 @@
/datum/reagent/fluorine
name = "Fluorine"
- id = "fluorine"
description = "A comically-reactive chemical element. The universe does not want this stuff to exist in this form in the slightest."
reagent_state = GAS
color = "#808080" // rgb: 128, 128, 128
@@ -1030,7 +974,6 @@
/datum/reagent/sodium
name = "Sodium"
- id = "sodium"
description = "A soft silver metal that can easily be cut with a knife. It's not salt just yet, so refrain from putting in on your chips."
reagent_state = SOLID
color = "#808080" // rgb: 128, 128, 128
@@ -1039,7 +982,6 @@
/datum/reagent/phosphorus
name = "Phosphorus"
- id = "phosphorus"
description = "A ruddy red powder that burns readily. Though it comes in many colors, the general theme is always the same."
reagent_state = SOLID
color = "#832828" // rgb: 131, 40, 40
@@ -1048,7 +990,6 @@
/datum/reagent/lithium
name = "Lithium"
- id = "lithium"
description = "A silver metal, its claim to fame is its remarkably low density. Using it is a bit too effective in calming oneself down."
reagent_state = SOLID
color = "#808080" // rgb: 128, 128, 128
@@ -1064,7 +1005,6 @@
/datum/reagent/glycerol
name = "Glycerol"
- id = "glycerol"
description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity."
color = "#808080" // rgb: 128, 128, 128
taste_description = "sweetness"
@@ -1072,7 +1012,6 @@
/datum/reagent/radium
name = "Radium"
- id = "radium"
description = "Radium is an alkaline earth metal. It is extremely radioactive."
reagent_state = SOLID
color = "#C7C7C7" // rgb: 199,199,199
@@ -1089,11 +1028,10 @@
var/obj/effect/decal/cleanable/greenglow/GG = locate() in T.contents
if(!GG)
GG = new/obj/effect/decal/cleanable/greenglow(T)
- GG.reagents.add_reagent("radium", reac_volume)
+ GG.reagents.add_reagent(/datum/reagent/radium, reac_volume)
/datum/reagent/space_cleaner/sterilizine
name = "Sterilizine"
- id = "sterilizine"
description = "Sterilizes wounds in preparation for surgery."
color = "#e6f1f5" // rgb: 200, 165, 220
taste_description = "bitterness"
@@ -1109,7 +1047,6 @@
/datum/reagent/iron
name = "Iron"
- id = "iron"
description = "Pure iron is a metal."
reagent_state = SOLID
taste_description = "iron"
@@ -1127,12 +1064,12 @@
/datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(M.has_bane(BANE_IRON)) //If the target is weak to cold iron, then poison them.
if(holder && holder.chem_temp < 100) // COLD iron.
- M.reagents.add_reagent("toxin", reac_volume)
+ M.reagents.add_reagent(/datum/reagent/toxin, reac_volume)
..()
/datum/reagent/iron/overdose_start(mob/living/M)
to_chat(M, "You start feeling your guts twisting painfully!")
- SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name)
+ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name)
/datum/reagent/iron/overdose_process(mob/living/carbon/C)
if(prob(20))
@@ -1143,7 +1080,6 @@
/datum/reagent/gold
name = "Gold"
- id = "gold"
description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known."
reagent_state = SOLID
color = "#F7C430" // rgb: 247, 196, 48
@@ -1151,7 +1087,6 @@
/datum/reagent/silver
name = "Silver"
- id = "silver"
description = "A soft, white, lustrous transition metal, it has the highest electrical conductivity of any element and the highest thermal conductivity of any metal."
reagent_state = SOLID
color = "#D0D0D0" // rgb: 208, 208, 208
@@ -1159,12 +1094,11 @@
/datum/reagent/silver/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(M.has_bane(BANE_SILVER))
- M.reagents.add_reagent("toxin", reac_volume)
+ M.reagents.add_reagent(/datum/reagent/toxin, reac_volume)
..()
/datum/reagent/uranium
name ="Uranium"
- id = "uranium"
description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive."
reagent_state = SOLID
color = "#B8B8C0" // rgb: 184, 184, 192
@@ -1181,11 +1115,10 @@
var/obj/effect/decal/cleanable/greenglow/GG = locate() in T.contents
if(!GG)
GG = new/obj/effect/decal/cleanable/greenglow(T)
- GG.reagents.add_reagent("uranium", reac_volume)
+ GG.reagents.add_reagent(/datum/reagent/uranium, reac_volume)
/datum/reagent/bluespace
name = "Bluespace Dust"
- id = "bluespace"
description = "A dust composed of microscopic bluespace crystals, with minor space-warping properties."
reagent_state = SOLID
color = "#0000CC"
@@ -1210,7 +1143,6 @@
/datum/reagent/aluminium
name = "Aluminium"
- id = "aluminium"
description = "A silvery white and ductile member of the boron group of chemical elements."
reagent_state = SOLID
color = "#A8A8A8" // rgb: 168, 168, 168
@@ -1218,7 +1150,6 @@
/datum/reagent/silicon
name = "Silicon"
- id = "silicon"
description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon."
reagent_state = SOLID
color = "#A8A8A8" // rgb: 168, 168, 168
@@ -1227,7 +1158,6 @@
/datum/reagent/fuel
name = "Welding fuel"
- id = "welding_fuel"
description = "Required for welders. Flamable."
color = "#660000" // rgb: 102, 0, 0
taste_description = "gross metal"
@@ -1250,7 +1180,6 @@
/datum/reagent/space_cleaner
name = "Space cleaner"
- id = "cleaner"
description = "A compound used to clean things. Now with 50% more sodium hypochlorite!"
color = "#A5F0EE" // rgb: 165, 240, 238
taste_description = "sourness"
@@ -1317,7 +1246,6 @@
/datum/reagent/space_cleaner/ez_clean
name = "EZ Clean"
- id = "ez_clean"
description = "A powerful, acidic cleaner sold by Waffle Co. Affects organic matter while leaving other objects unaffected."
metabolization_rate = 1.5 * REAGENTS_METABOLISM
taste_description = "acid"
@@ -1337,7 +1265,6 @@
/datum/reagent/cryptobiolin
name = "Cryptobiolin"
- id = "cryptobiolin"
description = "Cryptobiolin causes confusion and dizziness."
color = "#7529b3" // rgb: 200, 165, 220
metabolization_rate = 1.5 * REAGENTS_METABOLISM
@@ -1353,7 +1280,6 @@
/datum/reagent/impedrezene
name = "Impedrezene"
- id = "impedrezene"
description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions."
color = "#587a31" // rgb: 200, 165, 220A
taste_description = "numbness"
@@ -1371,7 +1297,6 @@
/datum/reagent/nanomachines
name = "Nanomachines"
- id = "nanomachines"
description = "Microscopic construction robots."
color = "#535E66" // rgb: 83, 94, 102
can_synth = FALSE
@@ -1383,7 +1308,6 @@
/datum/reagent/xenomicrobes
name = "Xenomicrobes"
- id = "xenomicrobes"
description = "Microbes with an entirely alien cellular structure."
color = "#535E66" // rgb: 83, 94, 102
can_synth = FALSE
@@ -1395,7 +1319,6 @@
/datum/reagent/fungalspores
name = "Tubercle bacillus Cosmosis microbes"
- id = "fungalspores"
description = "Active fungal spores."
color = "#92D17D" // rgb: 146, 209, 125
can_synth = FALSE
@@ -1408,7 +1331,6 @@
/datum/reagent/fluorosurfactant//foam precursor
name = "Fluorosurfactant"
- id = "fluorosurfactant"
description = "A perfluoronated sulfonic acid that forms a foam when mixed with water."
color = "#9E6B38" // rgb: 158, 107, 56
taste_description = "metal"
@@ -1416,7 +1338,6 @@
/datum/reagent/foaming_agent// Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually.
name = "Foaming agent"
- id = "foaming_agent"
description = "An agent that yields metallic foam when mixed with light metal and a strong acid."
reagent_state = SOLID
color = "#664B63" // rgb: 102, 75, 99
@@ -1425,7 +1346,6 @@
/datum/reagent/smart_foaming_agent //Smart foaming agent. Functions similarly to metal foam, but conforms to walls.
name = "Smart foaming agent"
- id = "smart_foaming_agent"
description = "An agent that yields metallic foam which conforms to area boundaries when mixed with light metal and a strong acid."
reagent_state = SOLID
color = "#664B63" // rgb: 102, 75, 99
@@ -1434,7 +1354,6 @@
/datum/reagent/ammonia
name = "Ammonia"
- id = "ammonia"
description = "A caustic substance commonly used in fertilizer or household cleaners."
reagent_state = GAS
color = "#404030" // rgb: 64, 64, 48
@@ -1443,7 +1362,6 @@
/datum/reagent/diethylamine
name = "Diethylamine"
- id = "diethylamine"
description = "A secondary amine, mildly corrosive."
color = "#604030" // rgb: 96, 64, 48
taste_description = "iron"
@@ -1451,7 +1369,6 @@
/datum/reagent/carbondioxide
name = "Carbon Dioxide"
- id = "co2"
reagent_state = GAS
description = "A gas commonly produced by burning carbon fuels. You're constantly producing this in your lungs."
color = "#B0B0B0" // rgb : 192, 192, 192
@@ -1472,7 +1389,6 @@
/datum/reagent/nitrous_oxide
name = "Nitrous Oxide"
- id = "nitrous_oxide"
description = "A potent oxidizer used as fuel in rockets and as an anaesthetic during surgery."
reagent_state = LIQUID
metabolization_rate = 1.5 * REAGENTS_METABOLISM
@@ -1507,7 +1423,6 @@
/datum/reagent/stimulum
name = "Stimulum"
- id = "stimulum"
description = "An unstable experimental gas that greatly increases the energy of those that inhale it"
reagent_state = GAS
metabolization_rate = 1.5 * REAGENTS_METABOLISM
@@ -1516,23 +1431,22 @@
/datum/reagent/stimulum/on_mob_metabolize(mob/living/L)
..()
- ADD_TRAIT(L, TRAIT_STUNIMMUNE, id)
- ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, id)
+ ADD_TRAIT(L, TRAIT_STUNIMMUNE, type)
+ ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
/datum/reagent/stimulum/on_mob_end_metabolize(mob/living/L)
- REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, id)
- REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, id)
+ REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, type)
+ REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
..()
/datum/reagent/stimulum/on_mob_life(mob/living/carbon/M)
M.adjustStaminaLoss(-2*REM, 0)
current_cycle++
- holder.remove_reagent(id, 0.99) //Gives time for the next tick of life().
+ holder.remove_reagent(type, 0.99) //Gives time for the next tick of life().
. = TRUE //Update status effects.
/datum/reagent/nitryl
name = "Nitryl"
- id = "no2"
description = "A highly reactive gas that makes you feel faster"
reagent_state = GAS
metabolization_rate = REAGENTS_METABOLISM
@@ -1542,10 +1456,10 @@
/datum/reagent/nitryl/on_mob_metabolize(mob/living/L)
..()
- L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
+ L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
/datum/reagent/nitryl/on_mob_end_metabolize(mob/living/L)
- L.remove_movespeed_modifier(id)
+ L.remove_movespeed_modifier(type)
..()
/////////////////////////Coloured Crayon Powder////////////////////////////
@@ -1554,7 +1468,6 @@
/datum/reagent/colorful_reagent/crayonpowder
name = "Crayon Powder"
- id = "crayon powder"
var/colorname = "none"
description = "A powder made by grinding down crayons, good for colouring chemical reagents."
reagent_state = SOLID
@@ -1568,7 +1481,6 @@
/datum/reagent/colorful_reagent/crayonpowder/red
name = "Red Crayon Powder"
- id = "redcrayonpowder"
colorname = "red"
color = "#DA0000" // red
random_color_list = list("#DA0000")
@@ -1576,7 +1488,6 @@
/datum/reagent/colorful_reagent/crayonpowder/orange
name = "Orange Crayon Powder"
- id = "orangecrayonpowder"
colorname = "orange"
color = "#FF9300" // orange
random_color_list = list("#FF9300")
@@ -1584,7 +1495,6 @@
/datum/reagent/colorful_reagent/crayonpowder/yellow
name = "Yellow Crayon Powder"
- id = "yellowcrayonpowder"
colorname = "yellow"
color = "#FFF200" // yellow
random_color_list = list("#FFF200")
@@ -1592,7 +1502,6 @@
/datum/reagent/colorful_reagent/crayonpowder/green
name = "Green Crayon Powder"
- id = "greencrayonpowder"
colorname = "green"
color = "#A8E61D" // green
random_color_list = list("#A8E61D")
@@ -1600,7 +1509,6 @@
/datum/reagent/colorful_reagent/crayonpowder/blue
name = "Blue Crayon Powder"
- id = "bluecrayonpowder"
colorname = "blue"
color = "#00B7EF" // blue
random_color_list = list("#00B7EF")
@@ -1608,7 +1516,6 @@
/datum/reagent/colorful_reagent/crayonpowder/purple
name = "Purple Crayon Powder"
- id = "purplecrayonpowder"
colorname = "purple"
color = "#DA00FF" // purple
random_color_list = list("#DA00FF")
@@ -1616,21 +1523,18 @@
/datum/reagent/colorful_reagent/crayonpowder/invisible
name = "Invisible Crayon Powder"
- id = "invisiblecrayonpowder"
colorname = "invisible"
color = "#FFFFFF00" // white + no alpha
random_color_list = list(null) //because using the powder color turns things invisible
/datum/reagent/colorful_reagent/crayonpowder/black
name = "Black Crayon Powder"
- id = "blackcrayonpowder"
colorname = "black"
color = "#1C1C1C" // not quite black
random_color_list = list("#404040")
/datum/reagent/colorful_reagent/crayonpowder/white
name = "White Crayon Powder"
- id = "whitecrayonpowder"
colorname = "white"
color = "#FFFFFF" // white
random_color_list = list("#FFFFFF") //doesn't actually change appearance at all
@@ -1639,7 +1543,6 @@
/datum/reagent/plantnutriment
name = "Generic nutriment"
- id = "plantnutriment"
description = "Some kind of nutriment. You can't really tell what it is. You should probably report it, along with how you obtained it."
color = "#000000" // RBG: 0, 0, 0
var/tox_prob = 0
@@ -1654,7 +1557,6 @@
/datum/reagent/plantnutriment/eznutriment
name = "E-Z-Nutrient"
- id = "eznutriment"
description = "Cheap and extremely common type of plant nutriment."
color = "#376400" // RBG: 50, 100, 0
tox_prob = 10
@@ -1662,7 +1564,6 @@
/datum/reagent/plantnutriment/left4zednutriment
name = "Left 4 Zed"
- id = "left4zednutriment"
description = "Unstable nutriment that makes plants mutate more often than usual."
color = "#1A1E4D" // RBG: 26, 30, 77
tox_prob = 25
@@ -1670,7 +1571,6 @@
/datum/reagent/plantnutriment/robustharvestnutriment
name = "Robust Harvest"
- id = "robustharvestnutriment"
description = "Very potent nutriment that prevents plants from mutating."
color = "#9D9D00" // RBG: 157, 157, 0
tox_prob = 15
@@ -1680,7 +1580,6 @@
/datum/reagent/oil
name = "Oil"
- id = "oil"
description = "Burns in a small smoky fire, mostly used to get Ash."
reagent_state = LIQUID
color = "#292929"
@@ -1688,7 +1587,6 @@
/datum/reagent/stable_plasma
name = "Stable Plasma"
- id = "stable_plasma"
description = "Non-flammable plasma locked into a liquid form that cannot ignite or become gaseous/solid."
reagent_state = LIQUID
color = "#6b008f"
@@ -1702,7 +1600,6 @@
/datum/reagent/iodine
name = "Iodine"
- id = "iodine"
description = "Commonly added to table salt as a nutrient. On its own it tastes far less pleasing."
reagent_state = LIQUID
color = "#694600"
@@ -1711,7 +1608,6 @@
/datum/reagent/bromine
name = "Bromine"
- id = "bromine"
description = "A brownish liquid that's highly reactive. Useful for stopping free radicals, but not intended for human consumption."
reagent_state = LIQUID
color = "#b37740"
@@ -1720,7 +1616,6 @@
/datum/reagent/phenol
name = "Phenol"
- id = "phenol"
description = "An aromatic ring of carbon with a hydroxyl group. A useful precursor to some medicines, but has no healing properties on its own."
reagent_state = LIQUID
taste_description = "sweet and tarry" //Again, not a strong acid.
@@ -1729,7 +1624,6 @@
/datum/reagent/ash
name = "Ash"
- id = "ash"
description = "Supposedly phoenixes rise from these, but you've never seen it."
reagent_state = LIQUID
color = "#665c56"
@@ -1738,7 +1632,6 @@
/datum/reagent/acetone
name = "Acetone"
- id = "acetone"
description = "A slick, slightly carcinogenic liquid. Has a multitude of mundane uses in everyday life."
reagent_state = LIQUID
taste_description = "solvent"//It's neutral though..?
@@ -1746,7 +1639,6 @@
/datum/reagent/colorful_reagent
name = "Colorful Reagent"
- id = "colorful_reagent"
description = "Thoroughly sample the rainbow."
reagent_state = LIQUID
color = "#FFFF00"
@@ -1776,7 +1668,6 @@
/datum/reagent/hair_dye
name = "Quantum Hair Dye"
- id = "hair_dye"
description = "Has a high chance of making you look like a mad scientist."
reagent_state = LIQUID
color = "#ff00dd"
@@ -1793,7 +1684,6 @@
/datum/reagent/barbers_aid
name = "Barber's Aid"
- id = "barbers_aid"
description = "A solution to hair loss across the world."
reagent_state = LIQUID
color = "#fac34b"
@@ -1811,7 +1701,6 @@
/datum/reagent/concentrated_barbers_aid
name = "Concentrated Barber's Aid"
- id = "concentrated_barbers_aid"
description = "A concentrated solution to hair loss across the world."
reagent_state = LIQUID
color = "#ffaf00"
@@ -1827,7 +1716,6 @@
/datum/reagent/saltpetre
name = "Saltpetre"
- id = "saltpetre"
description = "Volatile. Controversial. Third Thing."
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
@@ -1836,7 +1724,6 @@
/datum/reagent/lye
name = "Lye"
- id = "lye"
description = "Also known as sodium hydroxide. As a profession making this is somewhat underwhelming."
reagent_state = LIQUID
color = "#FFFFD6" // very very light yellow
@@ -1845,7 +1732,6 @@
/datum/reagent/drying_agent
name = "Drying agent"
- id = "drying_agent"
description = "A desiccant. Can be used to dry things."
reagent_state = LIQUID
color = "#A70FFF"
@@ -1865,7 +1751,6 @@
// Liquid Carpets
/datum/reagent/carpet
name = "Liquid Carpet"
- id = "carpet"
description = "For those that need a more creative way to roll out a carpet."
reagent_state = LIQUID
color = "#b51d05"
@@ -1880,70 +1765,59 @@
/datum/reagent/carpet/black
name = "Liquid Black Carpet"
- id = "blackcarpet"
color = "#363636"
carpet_type = /turf/open/floor/carpet/black
/datum/reagent/carpet/blackred
name = "Liquid Red Black Carpet"
- id = "blackredcarpet"
color = "#342125"
carpet_type = /turf/open/floor/carpet/blackred
/datum/reagent/carpet/monochrome
name = "Liquid Monochrome Carpet"
- id = "monochromecarpet"
color = "#b4b4b4"
carpet_type = /turf/open/floor/carpet/monochrome
/datum/reagent/carpet/blue
name = "Liquid Blue Carpet"
- id = "bluecarpet"
color = "#1256ff"
carpet_type = /turf/open/floor/carpet/blue
/datum/reagent/carpet/cyan
name = "Liquid Cyan Carpet"
- id = "cyancarpet"
color = "#3acfb9"
carpet_type = /turf/open/floor/carpet/cyan
/datum/reagent/carpet/green
name = "Liquid Green Carpet"
- id = "greencarpet"
color = "#619b62"
carpet_type = /turf/open/floor/carpet/green
/datum/reagent/carpet/orange
name = "Liquid Orange Carpet"
- id = "orangecarpet"
color = "#cc7900"
carpet_type = /turf/open/floor/carpet/orange
/datum/reagent/carpet/purple
name = "Liquid Purple Carpet"
- id = "purplecarpet"
color = "#6d3392"
carpet_type = /turf/open/floor/carpet/purple
/datum/reagent/carpet/red
name = "Liquid Red Carpet"
- id = "redcarpet"
color = "#871515"
carpet_type = /turf/open/floor/carpet/red
/datum/reagent/carpet/royalblack
name = "Liquid Royal Black Carpet"
- id = "royalblackcarpet"
color = "#483d05"
carpet_type = /turf/open/floor/carpet/royalblack
/datum/reagent/carpet/royalblue
name = "Liquid Royal Blue Carpet"
- id = "royalbluecarpet"
color = "#24227e"
carpet_type = /turf/open/floor/carpet/royalblue
@@ -1952,51 +1826,43 @@
/datum/reagent/toxin/mutagen/mutagenvirusfood
name = "mutagenic agar"
- id = "mutagenvirusfood"
color = "#A3C00F" // rgb: 163,192,15
taste_description = "sourness"
/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar
name = "sucrose agar"
- id = "sugarvirusfood"
color = "#41B0C0" // rgb: 65,176,192
taste_description = "sweetness"
/datum/reagent/medicine/synaptizine/synaptizinevirusfood
name = "virus rations"
- id = "synaptizinevirusfood"
color = "#D18AA5" // rgb: 209,138,165
taste_description = "bitterness"
/datum/reagent/toxin/plasma/plasmavirusfood
name = "virus plasma"
- id = "plasmavirusfood"
color = "#A69DA9" // rgb: 166,157,169
taste_description = "bitterness"
taste_mult = 1.5
/datum/reagent/toxin/plasma/plasmavirusfood/weak
name = "weakened virus plasma"
- id = "weakplasmavirusfood"
color = "#CEC3C6" // rgb: 206,195,198
taste_description = "bitterness"
taste_mult = 1.5
/datum/reagent/uranium/uraniumvirusfood
name = "decaying uranium gel"
- id = "uraniumvirusfood"
color = "#67ADBA" // rgb: 103,173,186
taste_description = "the inside of a reactor"
/datum/reagent/uranium/uraniumvirusfood/unstable
name = "unstable uranium gel"
- id = "uraniumplasmavirusfood_unstable"
color = "#2FF2CB" // rgb: 47,242,203
taste_description = "the inside of a reactor"
/datum/reagent/uranium/uraniumvirusfood/stable
name = "stable uranium gel"
- id = "uraniumplasmavirusfood_stable"
color = "#04506C" // rgb: 4,80,108
taste_description = "the inside of a reactor"
@@ -2004,7 +1870,6 @@
/datum/reagent/royal_bee_jelly
name = "royal bee jelly"
- id = "royal_bee_jelly"
description = "Royal Bee Jelly, if injected into a Queen Space Bee said bee will split into two bees."
color = "#00ff80"
taste_description = "strange honey"
@@ -2020,7 +1885,6 @@
/datum/reagent/romerol
name = "Romerol"
// the REAL zombie powder
- id = "romerol"
description = "Romerol is a highly experimental bioterror agent \
which causes dormant nodules to be etched into the grey matter of \
the subject. These nodules only become active upon death of the \
@@ -2041,7 +1905,6 @@
/datum/reagent/magillitis
name = "Magillitis"
- id = "magillitis"
description = "An experimental serum which causes rapid muscular growth in Hominidae. Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas."
reagent_state = LIQUID
color = "#00f041"
@@ -2053,7 +1916,6 @@
/datum/reagent/growthserum
name = "Growth Serum"
- id = "growthserum"
description = "A commercial chemical designed to help older men in the bedroom."//not really it just makes you a giant
color = "#ff0000"//strong red. rgb 255, 0, 0
var/current_size = 1
@@ -2085,7 +1947,6 @@
/datum/reagent/plastic_polymers
name = "plastic polymers"
- id = "plastic_polymers"
description = "the petroleum based components of plastic."
color = "#f7eded"
taste_description = "plastic"
@@ -2093,7 +1954,6 @@
/datum/reagent/glitter
name = "generic glitter"
- id = "glitter"
description = "if you can see this description, contact a coder."
color = "#FFFFFF" //pure white
taste_description = "plastic"
@@ -2107,27 +1967,23 @@
/datum/reagent/glitter/pink
name = "pink glitter"
- id = "pink_glitter"
description = "pink sparkles that get everywhere"
color = "#ff8080" //A light pink color
glitter_type = /obj/effect/decal/cleanable/glitter/pink
/datum/reagent/glitter/white
name = "white glitter"
- id = "white_glitter"
description = "white sparkles that get everywhere"
glitter_type = /obj/effect/decal/cleanable/glitter/white
/datum/reagent/glitter/blue
name = "blue glitter"
- id = "blue_glitter"
description = "blue sparkles that get everywhere"
color = "#4040FF" //A blueish color
glitter_type = /obj/effect/decal/cleanable/glitter/blue
/datum/reagent/pax
name = "pax"
- id = "pax"
description = "A colorless liquid that suppresses violence on the subjects."
color = "#AAAAAA55"
taste_description = "water"
@@ -2136,15 +1992,14 @@
/datum/reagent/pax/on_mob_metabolize(mob/living/L)
..()
- ADD_TRAIT(L, TRAIT_PACIFISM, id)
+ ADD_TRAIT(L, TRAIT_PACIFISM, type)
/datum/reagent/pax/on_mob_end_metabolize(mob/living/L)
- REMOVE_TRAIT(L, TRAIT_PACIFISM, id)
+ REMOVE_TRAIT(L, TRAIT_PACIFISM, type)
..()
/datum/reagent/bz_metabolites
name = "BZ metabolites"
- id = "bz_metabolites"
description = "A harmless metabolite of BZ gas"
color = "#FAFF00"
taste_description = "acrid cinnamon"
@@ -2152,11 +2007,11 @@
/datum/reagent/bz_metabolites/on_mob_metabolize(mob/living/L)
..()
- ADD_TRAIT(L, CHANGELING_HIVEMIND_MUTE, id)
+ ADD_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type)
/datum/reagent/bz_metabolites/on_mob_end_metabolize(mob/living/L)
..()
- REMOVE_TRAIT(L, CHANGELING_HIVEMIND_MUTE, id)
+ REMOVE_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type)
/datum/reagent/bz_metabolites/on_mob_life(mob/living/L)
if(L.mind)
@@ -2167,13 +2022,11 @@
/datum/reagent/pax/peaceborg
name = "synth-pax"
- id = "synthpax"
description = "A colorless liquid that suppresses violence on the subjects. Cheaper to synthetize, but wears out faster than normal Pax."
metabolization_rate = 1.5 * REAGENTS_METABOLISM
/datum/reagent/peaceborg_confuse
name = "Dizzying Solution"
- id = "dizzysolution"
description = "Makes the target off balance and dizzy"
metabolization_rate = 1.5 * REAGENTS_METABOLISM
taste_description = "dizziness"
@@ -2189,7 +2042,6 @@
/datum/reagent/peaceborg_tire
name = "Tiring Solution"
- id = "tiresolution"
description = "An extremely weak stamina-toxin that tires out the target. Completely harmless."
metabolization_rate = 1.5 * REAGENTS_METABOLISM
taste_description = "tiredness"
@@ -2204,7 +2056,6 @@
/datum/reagent/tranquility
name = "Tranquility"
- id = "tranquility"
description = "A highly mutative liquid of unknown origin."
color = "#9A6750" //RGB: 154, 103, 80
taste_description = "inner peace"
@@ -2216,7 +2067,6 @@
/datum/reagent/moonsugar
name = "Moonsugar"
- id = "moonsugar"
description = "The primary precursor for an ancient feline delicacy known as skooma. While it has no notable effects on it's own, mixing it with morphine in a chilled container may yield interesting results."
color = "#FAEAFF"
taste_description = "synthetic catnip"
@@ -2229,7 +2079,6 @@
/datum/reagent/changeling_string
name = "UNKNOWN"
- id = "changeling_sting_real"
description = "404: Chemical not found."
metabolization_rate = REAGENTS_METABOLISM
color = "#0000FF"
@@ -2263,14 +2112,12 @@
/datum/reagent/mustardgrind
name = "Mustardgrind"
- id = "mustardgrind"
description = "A powerd that is mixed with water and enzymes to make mustard."
color = "#BCC740" //RGB: 188, 199, 64
taste_description = "plant dust"
/datum/reagent/pax/catnip
name = "catnip"
- id = "catnip"
taste_description = "grass"
description = "A colorless liquid that makes people more peaceful and felines more happy."
metabolization_rate = 1.75 * REAGENTS_METABOLISM
diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
index 36621aa662..9eb033824d 100644
--- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
@@ -1,7 +1,6 @@
/datum/reagent/thermite
name = "Thermite"
- id = "thermite"
description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls."
reagent_state = SOLID
color = "#550000"
@@ -18,7 +17,6 @@
/datum/reagent/nitroglycerin
name = "Nitroglycerin"
- id = "nitroglycerin"
value = 5
description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol."
color = "#808080" // rgb: 128, 128, 128
@@ -26,7 +24,6 @@
/datum/reagent/stabilizing_agent
name = "Stabilizing Agent"
- id = "stabilizing_agent"
description = "Keeps unstable chemicals stable. This does not work on everything."
reagent_state = LIQUID
color = "#FFFF00"
@@ -35,7 +32,6 @@
/datum/reagent/clf3
name = "Chlorine Trifluoride"
- id = "clf3"
description = "Makes a temporary 3x3 fireball when it comes into existence, so be careful when mixing. ClF3 applied to a surface burns things that wouldn't otherwise burn, sometimes through the very floors of the station and exposing it to the vacuum of space."
reagent_state = LIQUID
color = "#FFC8C8"
@@ -79,7 +75,6 @@
/datum/reagent/sorium
name = "Sorium"
- id = "sorium"
description = "Sends everything flying from the detonation point."
reagent_state = LIQUID
color = "#5A64C8"
@@ -87,7 +82,6 @@
/datum/reagent/liquid_dark_matter
name = "Liquid Dark Matter"
- id = "liquid_dark_matter"
description = "Sucks everything into the detonation point."
reagent_state = LIQUID
color = "#210021"
@@ -96,7 +90,6 @@
/datum/reagent/blackpowder
name = "Black Powder"
- id = "blackpowder"
description = "Explodes. Violently."
reagent_state = LIQUID
color = "#000000"
@@ -118,7 +111,6 @@
/datum/reagent/flash_powder
name = "Flash Powder"
- id = "flash_powder"
description = "Makes a very bright flash."
reagent_state = LIQUID
color = "#C8C8C8"
@@ -126,7 +118,6 @@
/datum/reagent/smoke_powder
name = "Smoke Powder"
- id = "smoke_powder"
description = "Makes a large cloud of smoke that can carry reagents."
reagent_state = LIQUID
color = "#C8C8C8"
@@ -134,7 +125,6 @@
/datum/reagent/sonic_powder
name = "Sonic Powder"
- id = "sonic_powder"
description = "Makes a deafening noise."
reagent_state = LIQUID
color = "#C8C8C8"
@@ -142,7 +132,6 @@
/datum/reagent/phlogiston
name = "Phlogiston"
- id = "phlogiston"
description = "Catches you on fire and makes you ignite."
reagent_state = LIQUID
color = "#FA00AF"
@@ -164,7 +153,6 @@
/datum/reagent/napalm
name = "Napalm"
- id = "napalm"
description = "Very flammable."
reagent_state = LIQUID
color = "#FA00AF"
@@ -182,7 +170,6 @@
/datum/reagent/cryostylane
name = "Cryostylane"
- id = "cryostylane"
description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Cryostylane slowly cools all other reagents in the container 0K."
color = "#0000DC"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
@@ -190,8 +177,8 @@
/datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube
- if(M.reagents.has_reagent("oxygen"))
- M.reagents.remove_reagent("oxygen", 0.5)
+ if(M.reagents.has_reagent(/datum/reagent/oxygen))
+ M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5)
M.adjust_bodytemperature(-15)
..()
@@ -202,21 +189,19 @@
/datum/reagent/pyrosium
name = "Pyrosium"
- id = "pyrosium"
description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Pyrosium slowly heats all other reagents in the container."
color = "#64FAC8"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "bitterness"
/datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M)
- if(M.reagents.has_reagent("oxygen"))
- M.reagents.remove_reagent("oxygen", 0.5)
+ if(M.reagents.has_reagent(/datum/reagent/oxygen))
+ M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5)
M.adjust_bodytemperature(15)
..()
/datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective.
name = "Teslium"
- id = "teslium"
description = "An unstable, electrically-charged metallic slurry. Periodically electrocutes its victim, and makes electrocutions against them more deadly. Excessively heating teslium results in dangerous destabilization. Do not allow to come into contact with water."
reagent_state = LIQUID
color = "#20324D" //RGB: 32, 50, 77
@@ -234,7 +219,6 @@
/datum/reagent/teslium/energized_jelly
name = "Energized Jelly"
- id = "energized_jelly"
description = "Electrically-charged jelly. Boosts jellypeople's nervous system, but only shocks other lifeforms."
reagent_state = LIQUID
color = "#CAFF43"
@@ -255,7 +239,6 @@
/datum/reagent/firefighting_foam
name = "Firefighting Foam"
- id = "firefighting_foam"
description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on NT vessels."
reagent_state = LIQUID
color = "#A6FAFF55"
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index f97204b45e..ad3a2c90a4 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -3,7 +3,6 @@
/datum/reagent/toxin
name = "Toxin"
- id = "toxin"
description = "A toxic chemical."
color = "#CF3600" // rgb: 207, 54, 0
taste_description = "bitterness"
@@ -18,7 +17,6 @@
/datum/reagent/toxin/amatoxin
name = "Amatoxin"
- id = "amatoxin"
description = "A powerful poison derived from certain species of mushroom."
color = "#792300" // rgb: 121, 35, 0
toxpwr = 2.5
@@ -27,7 +25,6 @@
/datum/reagent/toxin/mutagen
name = "Unstable mutagen"
- id = "mutagen"
description = "Might cause unpredictable mutations. Keep away from children."
color = "#00FF00"
toxpwr = 0
@@ -56,7 +53,6 @@
/datum/reagent/toxin/plasma
name = "Plasma"
- id = "plasma"
description = "Plasma in its liquid form."
taste_description = "bitterness"
specific_heat = SPECIFIC_HEAT_PLASMA
@@ -66,8 +62,8 @@
pH = 4
/datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C)
- if(holder.has_reagent("epinephrine"))
- holder.remove_reagent("epinephrine", 2*REM)
+ if(holder.has_reagent(/datum/reagent/medicine/epinephrine))
+ holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2*REM)
C.adjustPlasma(20)
return ..()
@@ -91,7 +87,6 @@
/datum/reagent/toxin/lexorin
name = "Lexorin"
- id = "lexorin"
description = "A powerful poison used to stop respiration."
color = "#7DC3A0"
toxpwr = 0
@@ -113,7 +108,6 @@
/datum/reagent/toxin/slimejelly
name = "Slime Jelly"
- id = "slimejelly"
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."
color = "#801E28" // rgb: 128, 30, 40
toxpwr = 0
@@ -133,7 +127,6 @@
/datum/reagent/toxin/minttoxin
name = "Mint Toxin"
- id = "minttoxin"
description = "Useful for dealing with undesirable customers."
color = "#CF3600" // rgb: 207, 54, 0
toxpwr = 0
@@ -147,7 +140,6 @@
/datum/reagent/toxin/carpotoxin
name = "Carpotoxin"
- id = "carpotoxin"
description = "A deadly neurotoxin produced by the dreaded spess carp."
color = "#003333" // rgb: 0, 51, 51
toxpwr = 2
@@ -156,7 +148,6 @@
/datum/reagent/toxin/zombiepowder
name = "Zombie Powder"
- id = "zombiepowder"
description = "A strong neurotoxin that puts the subject into a death-like state."
reagent_state = SOLID
color = "#669900" // rgb: 102, 153, 0
@@ -166,10 +157,10 @@
/datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/L)
..()
- L.fakedeath(id)
+ L.fakedeath(type)
/datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/L)
- L.cure_fakedeath(id)
+ L.cure_fakedeath(type)
..()
/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M)
@@ -179,7 +170,6 @@
/datum/reagent/toxin/ghoulpowder
name = "Ghoul Powder"
- id = "ghoulpowder"
description = "A strong neurotoxin that slows metabolism to a death-like state, while keeping the patient fully active. Causes toxin buildup if used too long."
reagent_state = SOLID
color = "#664700" // rgb: 102, 71, 0
@@ -189,10 +179,10 @@
/datum/reagent/toxin/ghoulpowder/on_mob_metabolize(mob/living/L)
..()
- ADD_TRAIT(L, TRAIT_FAKEDEATH, id)
+ ADD_TRAIT(L, TRAIT_FAKEDEATH, type)
/datum/reagent/toxin/ghoulpowder/on_mob_end_metabolize(mob/living/L)
- REMOVE_TRAIT(L, TRAIT_FAKEDEATH, id)
+ REMOVE_TRAIT(L, TRAIT_FAKEDEATH, type)
..()
/datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/M)
@@ -202,7 +192,6 @@
/datum/reagent/toxin/mindbreaker
name = "Mindbreaker Toxin"
- id = "mindbreaker"
description = "A powerful hallucinogen. Not a thing to be messed with. For some mental patients. it counteracts their symptoms and anchors them to reality."
color = "#B31008" // rgb: 139, 166, 233
toxpwr = 0
@@ -215,7 +204,6 @@
/datum/reagent/toxin/plantbgone
name = "Plant-B-Gone"
- id = "plantbgone"
description = "A harmful toxic mixture to kill plantlife. Do not ingest!"
color = "#49002E" // rgb: 73, 0, 46
toxpwr = 1
@@ -242,14 +230,12 @@
/datum/reagent/toxin/plantbgone/weedkiller
name = "Weed Killer"
- id = "weedkiller"
description = "A harmful toxic mixture to kill weeds. Do not ingest!"
color = "#4B004B" // rgb: 75, 0, 75
pH = 3
/datum/reagent/toxin/pestkiller
name = "Pest Killer"
- id = "pestkiller"
description = "A harmful toxic mixture to kill pests. Do not ingest!"
color = "#4B004B" // rgb: 75, 0, 75
toxpwr = 1
@@ -263,7 +249,6 @@
/datum/reagent/toxin/spore
name = "Spore Toxin"
- id = "spore"
description = "A natural toxin produced by blob spores that inhibits vision when ingested."
color = "#9ACD32"
toxpwr = 1
@@ -277,7 +262,6 @@
/datum/reagent/toxin/spore_burning
name = "Burning Spore Toxin"
- id = "spore_burning"
description = "A natural toxin produced by blob spores that induces combustion in its victim."
color = "#9ACD32"
toxpwr = 0.5
@@ -291,7 +275,6 @@
/datum/reagent/toxin/chloralhydrate
name = "Chloral Hydrate"
- id = "chloralhydrate"
description = "A powerful sedative that induces confusion and drowsiness before putting its target to sleep."
reagent_state = SOLID
color = "#000067" // rgb: 0, 0, 103
@@ -315,7 +298,6 @@
/datum/reagent/toxin/fakebeer //disguised as normal beer for use by emagged brobots
name = "Beer"
- id = "fakebeer"
description = "A specially-engineered sedative disguised as beer. It induces instant sleep in its target."
color = "#664300" // rgb: 102, 67, 0
metabolization_rate = 1.5 * REAGENTS_METABOLISM
@@ -336,7 +318,6 @@
/datum/reagent/toxin/coffeepowder
name = "Coffee Grounds"
- id = "coffeepowder"
description = "Finely ground coffee beans, used to make coffee."
reagent_state = SOLID
color = "#5B2E0D" // rgb: 91, 46, 13
@@ -345,7 +326,6 @@
/datum/reagent/toxin/teapowder
name = "Ground Tea Leaves"
- id = "teapowder"
description = "Finely shredded tea leaves, used for making tea."
reagent_state = SOLID
color = "#7F8400" // rgb: 127, 132, 0
@@ -354,7 +334,6 @@
/datum/reagent/toxin/mutetoxin //the new zombie powder.
name = "Mute Toxin"
- id = "mutetoxin"
description = "A nonlethal poison that inhibits speech in its victim."
color = "#F0F8FF" // rgb: 240, 248, 255
toxpwr = 0
@@ -367,7 +346,6 @@
/datum/reagent/toxin/staminatoxin
name = "Tirizene"
- id = "tirizene"
description = "A nonlethal poison that causes extreme fatigue and weakness in its victim."
color = "#6E2828"
data = 15
@@ -381,7 +359,6 @@
/datum/reagent/toxin/polonium
name = "Polonium"
- id = "polonium"
description = "An extremely radioactive material in liquid form. Ingestion results in fatal irradiation."
reagent_state = LIQUID
color = "#787878"
@@ -394,7 +371,6 @@
/datum/reagent/toxin/histamine
name = "Histamine"
- id = "histamine"
description = "Histamine's effects become more dangerous depending on the dosage amount. They range from mildly annoying to incredibly lethal."
reagent_state = LIQUID
color = "#FA6464"
@@ -428,7 +404,6 @@
/datum/reagent/toxin/formaldehyde
name = "Formaldehyde"
- id = "formaldehyde"
description = "Formaldehyde, on its own, is a fairly weak toxin. It contains trace amounts of Histamine, very rarely making it decay into Histamine."
reagent_state = LIQUID
color = "#B4004B"
@@ -437,14 +412,13 @@
/datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/M)
if(prob(5))
- holder.add_reagent("histamine", pick(5,15))
- holder.remove_reagent("formaldehyde", 1.2)
+ holder.add_reagent(/datum/reagent/toxin/histamine, pick(5,15))
+ holder.remove_reagent(type, 1.2)
else
return ..()
/datum/reagent/toxin/venom
name = "Venom"
- id = "venom"
description = "An exotic poison extracted from highly toxic fauna. Causes scaling amounts of toxin damage and bruising depending and dosage. Often decays into Histamine."
reagent_state = LIQUID
color = "#F0FFF0"
@@ -456,14 +430,13 @@
M.adjustBruteLoss((0.3*volume)*REM, 0)
. = 1
if(prob(15))
- M.reagents.add_reagent("histamine", pick(5,10))
- M.reagents.remove_reagent("venom", 1.1)
+ M.reagents.add_reagent(/datum/reagent/toxin/histamine, pick(5,10))
+ M.reagents.remove_reagent(type, 1.1)
else
..()
/datum/reagent/toxin/fentanyl
name = "Fentanyl"
- id = "fentanyl"
description = "Fentanyl will inhibit brain function and cause toxin damage before eventually knocking out its victim."
reagent_state = LIQUID
color = "#64916E"
@@ -481,7 +454,6 @@
/datum/reagent/toxin/cyanide
name = "Cyanide"
- id = "cyanide"
description = "An infamous poison known for its use in assassination. Causes small amounts of toxin damage with a small chance of oxygen damage or a stun."
reagent_state = LIQUID
color = "#00B4FF"
@@ -499,7 +471,6 @@
/datum/reagent/toxin/bad_food
name = "Bad Food"
- id = "bad_food"
description = "The result of some abomination of cookery, food so bad it's toxic."
reagent_state = LIQUID
color = "#d6d6d8"
@@ -509,7 +480,6 @@
/datum/reagent/toxin/itching_powder
name = "Itching Powder"
- id = "itching_powder"
description = "A powder that induces itching upon contact with the skin. Causes the victim to scratch at their itches and has a very low chance to decay into Histamine."
reagent_state = LIQUID
color = "#C8C8C8"
@@ -518,7 +488,7 @@
/datum/reagent/toxin/itching_powder/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(method == TOUCH || method == VAPOR)
- M.reagents.add_reagent("itching_powder", reac_volume)
+ M.reagents.add_reagent(/datum/reagent/toxin/itching_powder, reac_volume)
/datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M)
if(prob(15))
@@ -534,14 +504,13 @@
M.adjustBruteLoss(0.2*REM, 0)
. = 1
if(prob(3))
- M.reagents.add_reagent("histamine",rand(1,3))
- M.reagents.remove_reagent("itching_powder",1.2)
+ M.reagents.add_reagent(/datum/reagent/toxin/histamine,rand(1,3))
+ M.reagents.remove_reagent(type,1.2)
return
..()
/datum/reagent/toxin/initropidril
name = "Initropidril"
- id = "initropidril"
description = "A powerful poison with insidious effects. It can cause stuns, lethal breathing failure, and cardiac arrest."
reagent_state = LIQUID
color = "#7F10C0"
@@ -572,7 +541,6 @@
/datum/reagent/toxin/pancuronium
name = "Pancuronium"
- id = "pancuronium"
description = "An undetectable toxin that swiftly incapacitates its victim. May also cause breathing failure."
reagent_state = LIQUID
color = "#195096"
@@ -590,7 +558,6 @@
/datum/reagent/toxin/sodium_thiopental
name = "Sodium Thiopental"
- id = "sodium_thiopental"
description = "Sodium Thiopental induces heavy weakness in its target as well as unconsciousness."
reagent_state = LIQUID
color = "#6496FA"
@@ -606,7 +573,6 @@
/datum/reagent/toxin/sulfonal
name = "Sulfonal"
- id = "sulfonal"
description = "A stealthy poison that deals minor toxin damage and eventually puts the target to sleep."
reagent_state = LIQUID
color = "#7DC3A0"
@@ -620,7 +586,6 @@
/datum/reagent/toxin/amanitin
name = "Amanitin"
- id = "amanitin"
description = "A very powerful delayed toxin. Upon full metabolization, a massive amount of toxin damage will be dealt depending on how long it has been in the victim's bloodstream."
reagent_state = LIQUID
color = "#FFFFFF"
@@ -635,7 +600,6 @@
/datum/reagent/toxin/lipolicide
name = "Lipolicide"
- id = "lipolicide"
description = "A powerful toxin that will destroy fat cells, massively reducing body weight in a short time. Deadly to those without nutriment in their body."
taste_description = "mothballs"
reagent_state = LIQUID
@@ -652,7 +616,6 @@
/datum/reagent/toxin/coniine
name = "Coniine"
- id = "coniine"
description = "Coniine metabolizes extremely slowly, but deals high amounts of toxin damage and stops breathing."
reagent_state = LIQUID
color = "#7DC3A0"
@@ -665,7 +628,6 @@
/datum/reagent/toxin/spewium
name = "Spewium"
- id = "spewium"
description = "A powerful emetic, causes uncontrollable vomiting. May result in vomiting organs at high doses."
reagent_state = LIQUID
color = "#2f6617" //A sickly green color
@@ -680,7 +642,7 @@
C.vomit(10, prob(10), prob(50), rand(0,4), TRUE, prob(30))
for(var/datum/reagent/toxin/R in C.reagents.reagent_list)
if(R != src)
- C.reagents.remove_reagent(R.id,1)
+ C.reagents.remove_reagent(R.type,1)
/datum/reagent/toxin/spewium/overdose_process(mob/living/carbon/C)
. = ..()
@@ -691,7 +653,6 @@
/datum/reagent/toxin/curare
name = "Curare"
- id = "curare"
description = "Causes slight toxin damage followed by chain-stunning and oxygen damage."
reagent_state = LIQUID
color = "#191919"
@@ -707,7 +668,6 @@
/datum/reagent/toxin/heparin //Based on a real-life anticoagulant. I'm not a doctor, so this won't be realistic.
name = "Heparin"
- id = "heparin"
description = "A powerful anticoagulant. Victims will bleed uncontrollably and suffer scaling bruising."
reagent_state = LIQUID
color = "#C8C8C8" //RGB: 200, 200, 200
@@ -725,7 +685,6 @@
/datum/reagent/toxin/rotatium //Rotatium. Fucks up your rotation and is hilarious
name = "Rotatium"
- id = "rotatium"
description = "A constantly swirling, oddly colourful fluid. Causes the consumer's sense of direction and hand-eye coordination to become wild."
reagent_state = LIQUID
color = "#AC88CA" //RGB: 172, 136, 202
@@ -752,7 +711,6 @@
/datum/reagent/toxin/skewium
name = "Skewium"
- id = "skewium"
description = "A strange, dull coloured liquid that appears to warp back and forth inside its container. Causes any consumer to experience a visual phenomena similar to said warping."
reagent_state = LIQUID
color = "#ADBDCD"
@@ -790,7 +748,6 @@
/datum/reagent/toxin/anacea
name = "Anacea"
- id = "anacea"
description = "A toxin that quickly purges medicines and metabolizes very slowly."
reagent_state = LIQUID
color = "#3C5133"
@@ -799,10 +756,10 @@
/datum/reagent/toxin/anacea/on_mob_life(mob/living/carbon/M)
var/remove_amt = 5
- if(holder.has_reagent("calomel") || holder.has_reagent("pen_acid") || holder.has_reagent("pen_jelly"))
+ if(holder.has_reagent(/datum/reagent/medicine/calomel) || holder.has_reagent(/datum/reagent/medicine/pen_acid) || holder.has_reagent(/datum/reagent/medicine/pen_acid/pen_jelly))
remove_amt = 0.5
for(var/datum/reagent/medicine/R in M.reagents.reagent_list)
- M.reagents.remove_reagent(R.id,remove_amt)
+ M.reagents.remove_reagent(R.type,remove_amt)
return ..()
//ACID
@@ -810,7 +767,6 @@
/datum/reagent/toxin/acid
name = "Sulphuric acid"
- id = "sacid"
description = "A strong mineral acid with the molecular formula H2SO4."
color = "#00FF32"
toxpwr = 1
@@ -845,7 +801,6 @@
/datum/reagent/toxin/acid/fluacid
name = "Fluorosulfuric acid"
- id = "facid"
description = "Fluorosulfuric acid is an extremely corrosive chemical substance."
color = "#5050FF"
toxpwr = 2
@@ -858,7 +813,6 @@
/datum/reagent/toxin/delayed
name = "Toxin Microcapsules"
- id = "delayed_toxin"
description = "Causes heavy toxin damage after a brief time of inactivity."
reagent_state = LIQUID
metabolization_rate = 0 //stays in the system until active.
@@ -869,7 +823,7 @@
/datum/reagent/toxin/delayed/on_mob_life(mob/living/carbon/M)
if(current_cycle > delay)
- holder.remove_reagent(id, actual_metaboliztion_rate * M.metabolism_efficiency)
+ holder.remove_reagent(type, actual_metaboliztion_rate * M.metabolism_efficiency)
M.adjustToxLoss(actual_toxpwr*REM, 0)
if(prob(10))
M.Knockdown(20, 0)
@@ -878,21 +832,19 @@
/datum/reagent/toxin/mimesbane
name = "Mime's Bane"
- id = "mimesbane"
description = "A nonlethal neurotoxin that interferes with the victim's ability to gesture."
color = "#F0F8FF" // rgb: 240, 248, 255
toxpwr = 0
taste_description = "stillness"
/datum/reagent/toxin/mimesbane/on_mob_metabolize(mob/living/L)
- ADD_TRAIT(L, TRAIT_EMOTEMUTE, id)
+ ADD_TRAIT(L, TRAIT_EMOTEMUTE, type)
/datum/reagent/toxin/mimesbane/on_mob_end_metabolize(mob/living/L)
- REMOVE_TRAIT(L, TRAIT_EMOTEMUTE, id)
+ REMOVE_TRAIT(L, TRAIT_EMOTEMUTE, type)
/datum/reagent/toxin/bonehurtingjuice //oof ouch
name = "Bone Hurting Juice"
- id = "bonehurtingjuice"
description = "A strange substance that looks a lot like water. Drinking it is oddly tempting. Oof ouch."
color = "#AAAAAA77" //RGBA: 170, 170, 170, 77
toxpwr = 0
@@ -953,7 +905,6 @@
/datum/reagent/toxin/brainhurtingjuice //oof ouch
name = "Brain Hurting Juice"
- id = "brainhurtingjuice"
color = "#AAAAAA77" //RGBA: 170, 170, 170, 77
toxpwr = 0
taste_description = "brain hurting"
@@ -970,7 +921,6 @@
/datum/reagent/toxin/bungotoxin
name = "Bungotoxin"
- id = "bungotoxin"
description = "A horrible cardiotoxin that protects the humble bungo pit."
//silent_toxin = TRUE //I guess we don't really have the entire tox system ported.
color = "#EBFF8E"
diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm
index 27b1fe12ee..468d29c052 100644
--- a/code/modules/reagents/chemistry/recipes/drugs.dm
+++ b/code/modules/reagents/chemistry/recipes/drugs.dm
@@ -1,64 +1,64 @@
/datum/chemical_reaction/space_drugs
name = "Space Drugs"
- id = "space_drugs"
- results = list("space_drugs" = 3)
- required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1)
+ id = /datum/reagent/drug/space_drugs
+ results = list(/datum/reagent/drug/space_drugs = 3)
+ required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/lithium = 1)
/datum/chemical_reaction/crank
name = "Crank"
- id = "crank"
- results = list("crank" = 5)
- required_reagents = list("diphenhydramine" = 1, "ammonia" = 1, "lithium" = 1, "sacid" = 1, "welding_fuel" = 1)
+ id = /datum/reagent/drug/crank
+ results = list(/datum/reagent/drug/crank = 5)
+ required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/ammonia = 1, /datum/reagent/lithium = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/fuel = 1)
mix_message = "The mixture violently reacts, leaving behind a few crystalline shards."
required_temp = 390
/datum/chemical_reaction/krokodil
name = "Krokodil"
- id = "krokodil"
- results = list("krokodil" = 6)
- required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, "welding_fuel" = 1)
+ id = /datum/reagent/drug/krokodil
+ results = list(/datum/reagent/drug/krokodil = 6)
+ required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/medicine/morphine = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/potassium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/fuel = 1)
mix_message = "The mixture dries into a pale blue powder."
required_temp = 380
/datum/chemical_reaction/methamphetamine
name = "methamphetamine"
- id = "methamphetamine"
- results = list("methamphetamine" = 4)
- required_reagents = list("ephedrine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1)
+ id = /datum/reagent/drug/methamphetamine
+ results = list(/datum/reagent/drug/methamphetamine = 4)
+ required_reagents = list(/datum/reagent/medicine/ephedrine = 1, /datum/reagent/iodine = 1, /datum/reagent/phosphorus = 1, /datum/reagent/hydrogen = 1)
required_temp = 374
/datum/chemical_reaction/bath_salts
name = "bath_salts"
- id = "bath_salts"
- results = list("bath_salts" = 7)
- required_reagents = list("bad_food" = 1, "saltpetre" = 1, "nutriment" = 1, "cleaner" = 1, "enzyme" = 1, "tea" = 1, "mercury" = 1)
+ id = /datum/reagent/drug/bath_salts
+ results = list(/datum/reagent/drug/bath_salts = 7)
+ required_reagents = list(/datum/reagent/toxin/bad_food = 1, /datum/reagent/saltpetre = 1, /datum/reagent/consumable/nutriment = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/consumable/enzyme = 1, /datum/reagent/consumable/tea = 1, /datum/reagent/mercury = 1)
required_temp = 374
/datum/chemical_reaction/aranesp
name = "aranesp"
- id = "aranesp"
- results = list("aranesp" = 3)
- required_reagents = list("epinephrine" = 1, "atropine" = 1, "morphine" = 1)
+ id = /datum/reagent/drug/aranesp
+ results = list(/datum/reagent/drug/aranesp = 3)
+ required_reagents = list(/datum/reagent/medicine/epinephrine = 1, /datum/reagent/medicine/atropine = 1, /datum/reagent/medicine/morphine = 1)
/datum/chemical_reaction/happiness
name = "Happiness"
- id = "happiness"
- results = list("happiness" = 4)
- required_reagents = list("nitrous_oxide" = 2, "epinephrine" = 1, "ethanol" = 1)
- required_catalysts = list("plasma" = 5)
+ id = /datum/reagent/drug/happiness
+ results = list(/datum/reagent/drug/happiness = 4)
+ required_reagents = list(/datum/reagent/nitrous_oxide = 2, /datum/reagent/medicine/epinephrine = 1, /datum/reagent/consumable/ethanol = 1)
+ required_catalysts = list(/datum/reagent/toxin/plasma = 5)
/datum/chemical_reaction/skooma
name = "skooma"
- id = "skooma"
- results = list("skooma" = 2, "moonshine" = 4, "sugar" = 4)
+ id = /datum/reagent/drug/skooma
+ results = list(/datum/reagent/drug/skooma = 2, /datum/reagent/consumable/ethanol/moonshine = 4, /datum/reagent/consumable/sugar = 4)
required_temp = 280
is_cold_recipe = TRUE
- required_reagents = list("moonsugar" = 10, "morphine" = 5)
+ required_reagents = list(/datum/reagent/moonsugar = 10, /datum/reagent/medicine/morphine = 5)
/datum/chemical_reaction/skoomarevert
name = "skoomarevert"
id = "skoomarevert"
- results = list("moonsugar" = 1, "morphine" = 2.5)
+ results = list(/datum/reagent/moonsugar = 1, /datum/reagent/medicine/morphine = 2.5)
required_temp = 315 //a little above normal body temperature
- required_reagents = list("skooma" = 1)
+ required_reagents = list(/datum/reagent/drug/skooma = 1)
diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm
index 607e0b5a4e..a07e7697bc 100644
--- a/code/modules/reagents/chemistry/recipes/medicine.dm
+++ b/code/modules/reagents/chemistry/recipes/medicine.dm
@@ -1,79 +1,79 @@
/datum/chemical_reaction/leporazine
name = "Leporazine"
- id = "leporazine"
- results = list("leporazine" = 2)
- required_reagents = list("silicon" = 1, "copper" = 1)
- required_catalysts = list("plasma" = 5)
+ id = /datum/reagent/medicine/leporazine
+ results = list(/datum/reagent/medicine/leporazine = 2)
+ required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/copper = 1)
+ required_catalysts = list(/datum/reagent/toxin/plasma = 5)
/datum/chemical_reaction/rezadone
name = "Rezadone"
- id = "rezadone"
- results = list("rezadone" = 3)
- required_reagents = list("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1)
+ id = /datum/reagent/medicine/rezadone
+ results = list(/datum/reagent/medicine/rezadone = 3)
+ required_reagents = list(/datum/reagent/toxin/carpotoxin = 1, /datum/reagent/cryptobiolin = 1, /datum/reagent/copper = 1)
/datum/chemical_reaction/spaceacillin
name = "Spaceacillin"
- id = "spaceacillin"
- results = list("spaceacillin" = 2)
- required_reagents = list("cryptobiolin" = 1, "epinephrine" = 1)
+ id = /datum/reagent/medicine/spaceacillin
+ results = list(/datum/reagent/medicine/spaceacillin = 2)
+ required_reagents = list(/datum/reagent/cryptobiolin = 1, /datum/reagent/medicine/epinephrine = 1)
/datum/chemical_reaction/inacusiate
name = "inacusiate"
- id = "inacusiate"
- results = list("inacusiate" = 2)
- required_reagents = list("water" = 1, "carbon" = 1, "charcoal" = 1)
+ id = /datum/reagent/medicine/inacusiate
+ results = list(/datum/reagent/medicine/inacusiate = 2)
+ required_reagents = list(/datum/reagent/water = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/charcoal = 1)
/datum/chemical_reaction/synaptizine
name = "Synaptizine"
- id = "synaptizine"
- results = list("synaptizine" = 3)
- required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1)
+ id = /datum/reagent/medicine/synaptizine
+ results = list(/datum/reagent/medicine/synaptizine = 3)
+ required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/lithium = 1, /datum/reagent/water = 1)
/datum/chemical_reaction/charcoal
name = "Charcoal"
- id = "charcoal"
- results = list("charcoal" = 2)
- required_reagents = list("ash" = 1, "sodiumchloride" = 1)
+ id = /datum/reagent/medicine/charcoal
+ results = list(/datum/reagent/medicine/charcoal = 2)
+ required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/sodiumchloride = 1)
mix_message = "The mixture yields a fine black powder."
required_temp = 380
/datum/chemical_reaction/silver_sulfadiazine
name = "Silver Sulfadiazine"
- id = "silver_sulfadiazine"
- results = list("silver_sulfadiazine" = 5)
- required_reagents = list("ammonia" = 1, "silver" = 1, "sulfur" = 1, "oxygen" = 1, "chlorine" = 1)
+ id = /datum/reagent/medicine/silver_sulfadiazine
+ results = list(/datum/reagent/medicine/silver_sulfadiazine = 5)
+ required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/silver = 1, /datum/reagent/sulfur = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1)
/datum/chemical_reaction/salglu_solution
name = "Saline-Glucose Solution"
- id = "salglu_solution"
- results = list("salglu_solution" = 3)
- required_reagents = list("sodiumchloride" = 1, "water" = 1, "sugar" = 1)
+ id = /datum/reagent/medicine/salglu_solution
+ results = list(/datum/reagent/medicine/salglu_solution = 3)
+ required_reagents = list(/datum/reagent/consumable/sodiumchloride = 1, /datum/reagent/water = 1, /datum/reagent/consumable/sugar = 1)
/datum/chemical_reaction/mine_salve
name = "Miner's Salve"
- id = "mine_salve"
- results = list("mine_salve" = 3)
- required_reagents = list("oil" = 1, "water" = 1, "iron" = 1)
+ id = /datum/reagent/medicine/mine_salve
+ results = list(/datum/reagent/medicine/mine_salve = 3)
+ required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/water = 1, /datum/reagent/iron = 1)
/datum/chemical_reaction/mine_salve2
name = "Miner's Salve"
- id = "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
+ id = "mine_salve_2"
+ results = list(/datum/reagent/medicine/mine_salve = 15)
+ required_reagents = list(/datum/reagent/toxin/plasma = 5, /datum/reagent/iron = 5, /datum/reagent/consumable/sugar = 1) // A sheet of plasma, a twinkie and a sheet of metal makes four of these
/datum/chemical_reaction/synthflesh
name = "Synthflesh"
- id = "synthflesh"
- results = list("synthflesh" = 3)
- required_reagents = list("blood" = 1, "carbon" = 1, "styptic_powder" = 1)
+ id = /datum/reagent/medicine/synthflesh
+ results = list(/datum/reagent/medicine/synthflesh = 3)
+ required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/styptic_powder = 1)
/datum/chemical_reaction/synthtissue
name = "Synthtissue"
- id = "synthtissue"
- results = list("synthtissue" = 5)
- required_reagents = list("synthflesh" = 1)
- required_catalysts = list("sugar" = 0.1)
+ id = /datum/reagent/synthtissue
+ results = list(/datum/reagent/synthtissue = 5)
+ required_reagents = list(/datum/reagent/medicine/synthflesh = 1)
+ required_catalysts = list(/datum/reagent/consumable/sugar = 0.1)
//FermiChem vars:
OptimalTempMin = 305 // Lower area of bell curve for determining heat based rate reactions
OptimalTempMax = 315 // Upper end for above
@@ -91,13 +91,13 @@
PurityMin = 0
/datum/chemical_reaction/synthtissue/FermiCreate(datum/reagents/holder, added_volume, added_purity)
- var/datum/reagent/synthtissue/St = holder.has_reagent("synthtissue")
- var/datum/reagent/N = holder.has_reagent("sugar")
+ var/datum/reagent/synthtissue/St = holder.has_reagent(/datum/reagent/synthtissue)
+ var/datum/reagent/N = holder.has_reagent(/datum/reagent/consumable/sugar)
if(!St)
return
if(holder.chem_temp > 320)
var/temp_ratio = 1-(330 - holder.chem_temp)/10
- holder.remove_reagent(src.id, added_volume*temp_ratio)
+ holder.remove_reagent(id, added_volume*temp_ratio)
if(St.purity < 1)
St.volume *= St.purity
St.purity = 1
@@ -108,209 +108,209 @@
/datum/chemical_reaction/styptic_powder
name = "Styptic Powder"
- id = "styptic_powder"
- results = list("styptic_powder" = 4)
- required_reagents = list("aluminium" = 1, "hydrogen" = 1, "oxygen" = 1, "sacid" = 1)
+ id = /datum/reagent/medicine/styptic_powder
+ results = list(/datum/reagent/medicine/styptic_powder = 4)
+ required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid = 1)
mix_message = "The solution yields an astringent powder."
/datum/chemical_reaction/calomel
name = "Calomel"
- id = "calomel"
- results = list("calomel" = 2)
- required_reagents = list("mercury" = 1, "chlorine" = 1)
+ id = /datum/reagent/medicine/calomel
+ results = list(/datum/reagent/medicine/calomel = 2)
+ required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/chlorine = 1)
required_temp = 374
/datum/chemical_reaction/potass_iodide
name = "Potassium Iodide"
- id = "potass_iodide"
- results = list("potass_iodide" = 2)
- required_reagents = list("potassium" = 1, "iodine" = 1)
+ id = /datum/reagent/medicine/potass_iodide
+ results = list(/datum/reagent/medicine/potass_iodide = 2)
+ required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/iodine = 1)
/datum/chemical_reaction/pen_acid
name = "Pentetic Acid"
- id = "pen_acid"
- results = list("pen_acid" = 6)
- required_reagents = list("welding_fuel" = 1, "chlorine" = 1, "ammonia" = 1, "formaldehyde" = 1, "sodium" = 1, "cyanide" = 1)
+ id = /datum/reagent/medicine/pen_acid
+ results = list(/datum/reagent/medicine/pen_acid = 6)
+ required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/chlorine = 1, /datum/reagent/ammonia = 1, /datum/reagent/toxin/formaldehyde = 1, /datum/reagent/sodium = 1, /datum/reagent/toxin/cyanide = 1)
/datum/chemical_reaction/pen_jelly
name = "Pentetic Jelly"
- id = "pen_jelly"
- results = list("pen_jelly" = 2)
- required_reagents = list("pen_acid" = 1, "slimejelly" = 1)
+ id = /datum/reagent/medicine/pen_acid/pen_jelly
+ results = list(/datum/reagent/medicine/pen_acid/pen_jelly = 2)
+ required_reagents = list(/datum/reagent/medicine/pen_acid = 1, /datum/reagent/toxin/slimejelly = 1)
/datum/chemical_reaction/sal_acid
name = "Salicyclic Acid"
- id = "sal_acid"
- results = list("sal_acid" = 5)
- required_reagents = list("sodium" = 1, "phenol" = 1, "carbon" = 1, "oxygen" = 1, "sacid" = 1)
+ id = /datum/reagent/medicine/sal_acid
+ results = list(/datum/reagent/medicine/sal_acid = 5)
+ required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/phenol = 1, /datum/reagent/carbon = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid = 1)
/datum/chemical_reaction/oxandrolone
name = "Oxandrolone"
- id = "oxandrolone"
- results = list("oxandrolone" = 6)
- required_reagents = list("carbon" = 3, "phenol" = 1, "hydrogen" = 1, "oxygen" = 1)
+ id = /datum/reagent/medicine/oxandrolone
+ results = list(/datum/reagent/medicine/oxandrolone = 6)
+ required_reagents = list(/datum/reagent/carbon = 3, /datum/reagent/phenol = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1)
/datum/chemical_reaction/salbutamol
name = "Salbutamol"
- id = "salbutamol"
- results = list("salbutamol" = 5)
- required_reagents = list("sal_acid" = 1, "lithium" = 1, "aluminium" = 1, "bromine" = 1, "ammonia" = 1)
+ id = /datum/reagent/medicine/salbutamol
+ results = list(/datum/reagent/medicine/salbutamol = 5)
+ required_reagents = list(/datum/reagent/medicine/sal_acid = 1, /datum/reagent/lithium = 1, /datum/reagent/aluminium = 1, /datum/reagent/bromine = 1, /datum/reagent/ammonia = 1)
/datum/chemical_reaction/perfluorodecalin
name = "Perfluorodecalin"
- id = "perfluorodecalin"
- results = list("perfluorodecalin" = 3)
- required_reagents = list("hydrogen" = 1, "fluorine" = 1, "oil" = 1)
+ id = /datum/reagent/medicine/perfluorodecalin
+ results = list(/datum/reagent/medicine/perfluorodecalin = 3)
+ required_reagents = list(/datum/reagent/hydrogen = 1, /datum/reagent/fluorine = 1, /datum/reagent/oil = 1)
required_temp = 370
mix_message = "The mixture rapidly turns into a dense pink liquid."
/datum/chemical_reaction/ephedrine
name = "Ephedrine"
- id = "ephedrine"
- results = list("ephedrine" = 4)
- required_reagents = list("sugar" = 1, "oil" = 1, "hydrogen" = 1, "diethylamine" = 1)
+ id = /datum/reagent/medicine/ephedrine
+ results = list(/datum/reagent/medicine/ephedrine = 4)
+ required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/oil = 1, /datum/reagent/hydrogen = 1, /datum/reagent/diethylamine = 1)
mix_message = "The solution fizzes and gives off toxic fumes."
/datum/chemical_reaction/diphenhydramine
name = "Diphenhydramine"
- id = "diphenhydramine"
- results = list("diphenhydramine" = 4)
- required_reagents = list("oil" = 1, "carbon" = 1, "bromine" = 1, "diethylamine" = 1, "ethanol" = 1)
+ id = /datum/reagent/medicine/diphenhydramine
+ results = list(/datum/reagent/medicine/diphenhydramine = 4)
+ required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/carbon = 1, /datum/reagent/bromine = 1, /datum/reagent/diethylamine = 1, /datum/reagent/consumable/ethanol = 1)
mix_message = "The mixture dries into a pale blue powder."
/datum/chemical_reaction/oculine
name = "Oculine"
- id = "oculine"
- results = list("oculine" = 3)
- required_reagents = list("charcoal" = 1, "carbon" = 1, "hydrogen" = 1)
+ id = /datum/reagent/medicine/oculine
+ results = list(/datum/reagent/medicine/oculine = 3)
+ required_reagents = list(/datum/reagent/medicine/charcoal = 1, /datum/reagent/carbon = 1, /datum/reagent/hydrogen = 1)
mix_message = "The mixture sputters loudly and becomes a pale pink color."
/datum/chemical_reaction/atropine
name = "Atropine"
- id = "atropine"
- results = list("atropine" = 5)
- required_reagents = list("ethanol" = 1, "acetone" = 1, "diethylamine" = 1, "phenol" = 1, "sacid" = 1)
+ id = /datum/reagent/medicine/atropine
+ results = list(/datum/reagent/medicine/atropine = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/phenol = 1, /datum/reagent/toxin/acid = 1)
/datum/chemical_reaction/epinephrine
name = "Epinephrine"
- id = "epinephrine"
- results = list("epinephrine" = 6)
- required_reagents = list("phenol" = 1, "acetone" = 1, "diethylamine" = 1, "oxygen" = 1, "chlorine" = 1, "hydrogen" = 1)
+ id = /datum/reagent/medicine/epinephrine
+ results = list(/datum/reagent/medicine/epinephrine = 6)
+ required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1, /datum/reagent/hydrogen = 1)
/datum/chemical_reaction/strange_reagent
name = "Strange Reagent"
- id = "strange_reagent"
- results = list("strange_reagent" = 3)
- required_reagents = list("omnizine" = 1, "holywater" = 1, "mutagen" = 1)
+ id = /datum/reagent/medicine/strange_reagent
+ results = list(/datum/reagent/medicine/strange_reagent = 3)
+ required_reagents = list(/datum/reagent/medicine/omnizine = 1, /datum/reagent/water/holywater = 1, /datum/reagent/toxin/mutagen = 1)
/datum/chemical_reaction/mannitol
name = "Mannitol"
- id = "mannitol"
- results = list("mannitol" = 3)
- required_reagents = list("sugar" = 1, "hydrogen" = 1, "water" = 1)
+ id = /datum/reagent/medicine/mannitol
+ results = list(/datum/reagent/medicine/mannitol = 3)
+ required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/hydrogen = 1, /datum/reagent/water = 1)
mix_message = "The solution slightly bubbles, becoming thicker."
/datum/chemical_reaction/mutadone
name = "Mutadone"
- id = "mutadone"
- results = list("mutadone" = 3)
- required_reagents = list("mutagen" = 1, "acetone" = 1, "bromine" = 1)
+ id = /datum/reagent/medicine/mutadone
+ results = list(/datum/reagent/medicine/mutadone = 3)
+ required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/acetone = 1, /datum/reagent/bromine = 1)
/datum/chemical_reaction/neurine
name = "Neurine"
- id = "neurine"
- results = list("neurine" = 3)
- required_reagents = list("mannitol" = 1, "acetone" = 1, "oxygen" = 1)
+ id = /datum/reagent/medicine/neurine
+ results = list(/datum/reagent/medicine/neurine = 3)
+ required_reagents = list(/datum/reagent/medicine/mannitol = 1, /datum/reagent/acetone = 1, /datum/reagent/oxygen = 1)
/datum/chemical_reaction/antihol
name = "antihol"
- id = "antihol"
- results = list("antihol" = 3)
- required_reagents = list("ethanol" = 1, "charcoal" = 1, "copper" = 1)
+ id = /datum/reagent/medicine/antihol
+ results = list(/datum/reagent/medicine/antihol = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/copper = 1)
/datum/chemical_reaction/cryoxadone
name = "Cryoxadone"
- id = "cryoxadone"
- results = list("cryoxadone" = 3)
- required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1)
+ id = /datum/reagent/medicine/cryoxadone
+ results = list(/datum/reagent/medicine/cryoxadone = 3)
+ required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/mutagen = 1)
/datum/chemical_reaction/pyroxadone
name = "Pyroxadone"
- id = "pyroxadone"
- results = list("pyroxadone" = 2)
- required_reagents = list("cryoxadone" = 1, "slimejelly" = 1)
+ id = /datum/reagent/medicine/pyroxadone
+ results = list(/datum/reagent/medicine/pyroxadone = 2)
+ required_reagents = list(/datum/reagent/medicine/cryoxadone = 1, /datum/reagent/toxin/slimejelly = 1)
/datum/chemical_reaction/clonexadone
name = "Clonexadone"
- id = "clonexadone"
- results = list("clonexadone" = 2)
- required_reagents = list("cryoxadone" = 1, "sodium" = 1)
- required_catalysts = list("plasma" = 5)
+ id = /datum/reagent/medicine/clonexadone
+ results = list(/datum/reagent/medicine/clonexadone = 2)
+ required_reagents = list(/datum/reagent/medicine/cryoxadone = 1, /datum/reagent/sodium = 1)
+ required_catalysts = list(/datum/reagent/toxin/plasma = 5)
/datum/chemical_reaction/haloperidol
name = "Haloperidol"
- id = "haloperidol"
- results = list("haloperidol" = 5)
- required_reagents = list("chlorine" = 1, "fluorine" = 1, "aluminium" = 1, "potass_iodide" = 1, "oil" = 1)
+ id = /datum/reagent/medicine/haloperidol
+ results = list(/datum/reagent/medicine/haloperidol = 5)
+ required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 1, /datum/reagent/aluminium = 1, /datum/reagent/medicine/potass_iodide = 1, /datum/reagent/oil = 1)
/datum/chemical_reaction/bicaridine
name = "Bicaridine"
- id = "bicaridine"
- results = list("bicaridine" = 3)
- required_reagents = list("carbon" = 1, "oxygen" = 1, "sugar" = 1)
+ id = /datum/reagent/medicine/bicaridine
+ results = list(/datum/reagent/medicine/bicaridine = 3)
+ required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1)
/datum/chemical_reaction/kelotane
name = "Kelotane"
- id = "kelotane"
- results = list("kelotane" = 2)
- required_reagents = list("carbon" = 1, "silicon" = 1)
+ id = /datum/reagent/medicine/kelotane
+ results = list(/datum/reagent/medicine/kelotane = 2)
+ required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/silicon = 1)
/datum/chemical_reaction/antitoxin
name = "Antitoxin"
- id = "antitoxin"
- results = list("antitoxin" = 3)
- required_reagents = list("nitrogen" = 1, "silicon" = 1, "potassium" = 1)
+ id = /datum/reagent/medicine/antitoxin
+ results = list(/datum/reagent/medicine/antitoxin = 3)
+ required_reagents = list(/datum/reagent/nitrogen = 1, /datum/reagent/silicon = 1, /datum/reagent/potassium = 1)
/datum/chemical_reaction/tricordrazine
name = "Tricordrazine"
- id = "tricordrazine"
- results = list("tricordrazine" = 3)
- required_reagents = list("bicaridine" = 1, "kelotane" = 1, "antitoxin" = 1)
+ id = /datum/reagent/medicine/tricordrazine
+ results = list(/datum/reagent/medicine/tricordrazine = 3)
+ required_reagents = list(/datum/reagent/medicine/bicaridine = 1, /datum/reagent/medicine/kelotane = 1, /datum/reagent/medicine/antitoxin = 1)
/datum/chemical_reaction/regen_jelly
name = "Regenerative Jelly"
- id = "regen_jelly"
- results = list("regen_jelly" = 2)
- required_reagents = list("tricordrazine" = 1, "slimejelly" = 1)
+ id = /datum/reagent/medicine/regen_jelly
+ results = list(/datum/reagent/medicine/regen_jelly = 2)
+ required_reagents = list(/datum/reagent/medicine/tricordrazine = 1, /datum/reagent/toxin/slimejelly = 1)
/datum/chemical_reaction/jelly_convert
name = "Blood Jelly Conversion"
- id = "blood_jelly"
- results = list("slimejelly" = 1)
- required_reagents = list("toxin" = 1, "jellyblood" = 1)
+ id = /datum/reagent/toxin/slimejelly
+ results = list(/datum/reagent/toxin/slimejelly = 1)
+ required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/blood/jellyblood = 1)
/datum/chemical_reaction/corazone
name = "Corazone"
- id = "corazone"
- results = list("corazone" = 3)
- required_reagents = list("phenol" = 2, "lithium" = 1)
+ id = /datum/reagent/medicine/corazone
+ results = list(/datum/reagent/medicine/corazone = 3)
+ required_reagents = list(/datum/reagent/phenol = 2, /datum/reagent/lithium = 1)
/datum/chemical_reaction/morphine
name = "Morphine"
- id = "morphine"
- results = list("morphine" = 2)
- required_reagents = list("carbon" = 2, "hydrogen" = 2, "ethanol" = 1, "oxygen" = 1)
+ id = /datum/reagent/medicine/morphine
+ results = list(/datum/reagent/medicine/morphine = 2)
+ required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1)
required_temp = 480
/datum/chemical_reaction/modafinil
name = "Modafinil"
- id = "modafinil"
- results = list("modafinil" = 5)
- required_reagents = list("diethylamine" = 1, "ammonia" = 1, "phenol" = 1, "acetone" = 1, "sacid" = 1)
- required_catalysts = list("bromine" = 1) // as close to the real world synthesis as possible
+ id = /datum/reagent/medicine/modafinil
+ results = list(/datum/reagent/medicine/modafinil = 5)
+ required_reagents = list(/datum/reagent/diethylamine = 1, /datum/reagent/ammonia = 1, /datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/acid = 1)
+ required_catalysts = list(/datum/reagent/bromine = 1) // as close to the real world synthesis as possible
/datum/chemical_reaction/psicodine
name = "Psicodine"
- id = "psicodine"
- results = list("psicodine" = 5)
- required_reagents = list( "mannitol" = 2, "water" = 2, "impedrezene" = 1)
+ id = /datum/reagent/medicine/psicodine
+ results = list(/datum/reagent/medicine/psicodine = 5)
+ required_reagents = list( /datum/reagent/medicine/mannitol = 2, /datum/reagent/water = 2, /datum/reagent/impedrezene = 1)
diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm
index ad349ea926..f4c378e8fe 100644
--- a/code/modules/reagents/chemistry/recipes/others.dm
+++ b/code/modules/reagents/chemistry/recipes/others.dm
@@ -2,55 +2,55 @@
/datum/chemical_reaction/sterilizine
name = "Sterilizine"
id = "sterilizine"
- results = list("sterilizine" = 3)
- required_reagents = list("ethanol" = 1, "charcoal" = 1, "chlorine" = 1)
+ results = list(/datum/reagent/space_cleaner/sterilizine = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/chlorine = 1)
/datum/chemical_reaction/lube
name = "Space Lube"
- id = "lube"
- results = list("lube" = 4)
- required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1)
+ id = /datum/reagent/lube
+ results = list(/datum/reagent/lube = 4)
+ required_reagents = list(/datum/reagent/water = 1, /datum/reagent/silicon = 1, /datum/reagent/oxygen = 1)
/datum/chemical_reaction/spraytan
name = "Spray Tan"
- id = "spraytan"
- results = list("spraytan" = 2)
- required_reagents = list("orangejuice" = 1, "oil" = 1)
+ id = /datum/reagent/spraytan
+ results = list(/datum/reagent/spraytan = 2)
+ required_reagents = list(/datum/reagent/consumable/orangejuice = 1, /datum/reagent/oil = 1)
/datum/chemical_reaction/spraytan2
name = "Spray Tan"
- id = "spraytan"
- results = list("spraytan" = 2)
- required_reagents = list("orangejuice" = 1, "cornoil" = 1)
+ id = "spraytan2"
+ results = list(/datum/reagent/spraytan = 2)
+ required_reagents = list(/datum/reagent/consumable/orangejuice = 1, /datum/reagent/consumable/cornoil = 1)
/datum/chemical_reaction/impedrezene
name = "Impedrezene"
- id = "impedrezene"
- results = list("impedrezene" = 2)
- required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1)
+ id = /datum/reagent/impedrezene
+ results = list(/datum/reagent/impedrezene = 2)
+ required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1)
/datum/chemical_reaction/cryptobiolin
name = "Cryptobiolin"
- id = "cryptobiolin"
- results = list("cryptobiolin" = 3)
- required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1)
+ id = /datum/reagent/cryptobiolin
+ results = list(/datum/reagent/cryptobiolin = 3)
+ required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1)
/datum/chemical_reaction/glycerol
name = "Glycerol"
- id = "glycerol"
- results = list("glycerol" = 1)
- required_reagents = list("cornoil" = 3, "sacid" = 1)
+ id = /datum/reagent/glycerol
+ results = list(/datum/reagent/glycerol = 1)
+ required_reagents = list(/datum/reagent/consumable/cornoil = 3, /datum/reagent/toxin/acid = 1)
/datum/chemical_reaction/sodiumchloride
name = "Sodium Chloride"
id = "sodiumchloride"
- results = list("sodiumchloride" = 3)
- required_reagents = list("water" = 1, "sodium" = 1, "chlorine" = 1)
+ results = list(/datum/reagent/consumable/sodiumchloride = 3)
+ required_reagents = list(/datum/reagent/water = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1)
/datum/chemical_reaction/plasmasolidification
name = "Solid Plasma"
id = "solidplasma"
- required_reagents = list("iron" = 5, "frostoil" = 5, "plasma" = 20)
+ required_reagents = list(/datum/reagent/iron = 5, /datum/reagent/consumable/frostoil = 5, /datum/reagent/toxin/plasma = 20)
mob_react = FALSE
/datum/chemical_reaction/plasmasolidification/on_reaction(datum/reagents/holder, created_volume)
@@ -61,7 +61,7 @@
/datum/chemical_reaction/goldsolidification
name = "Solid Gold"
id = "solidgold"
- required_reagents = list("frostoil" = 5, "gold" = 20, "iron" = 1)
+ required_reagents = list(/datum/reagent/consumable/frostoil = 5, /datum/reagent/gold = 20, /datum/reagent/iron = 1)
mob_react = FALSE
/datum/chemical_reaction/goldsolidification/on_reaction(datum/reagents/holder, created_volume)
@@ -71,22 +71,22 @@
/datum/chemical_reaction/capsaicincondensation
name = "Capsaicincondensation"
- id = "capsaicincondensation"
- results = list("condensedcapsaicin" = 5)
- required_reagents = list("capsaicin" = 1, "ethanol" = 5)
+ id = /datum/reagent/consumable/condensedcapsaicin
+ results = list(/datum/reagent/consumable/condensedcapsaicin = 5)
+ required_reagents = list(/datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/ethanol = 5)
/datum/chemical_reaction/soapification
name = "Soapification"
id = "soapification"
- required_reagents = list("liquidgibs" = 10, "lye" = 10) // requires two scooped gib tiles
+ required_reagents = list(/datum/reagent/liquidgibs = 10, /datum/reagent/lye = 10) // requires two scooped gib tiles
required_temp = 374
mob_react = FALSE
/datum/chemical_reaction/mustard
name = "Mustard"
- id = "mustard"
- results = list("mustard" = 5)
- required_reagents = list("mustardgrind" = 1, "water" = 10, "enzyme"= 1)
+ id = /datum/reagent/consumable/mustard
+ results = list(/datum/reagent/consumable/mustard = 5)
+ required_reagents = list(/datum/reagent/mustardgrind = 1, /datum/reagent/water = 10, /datum/reagent/consumable/enzyme= 1)
/datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
@@ -96,7 +96,7 @@
/datum/chemical_reaction/candlefication
name = "Candlefication"
id = "candlefication"
- required_reagents = list("liquidgibs" = 5, "oxygen" = 5) //
+ required_reagents = list(/datum/reagent/liquidgibs = 5, /datum/reagent/oxygen = 5)
required_temp = 374
mob_react = FALSE
@@ -108,7 +108,7 @@
/datum/chemical_reaction/meatification
name = "Meatification"
id = "meatification"
- required_reagents = list("liquidgibs" = 10, "nutriment" = 10, "carbon" = 10)
+ required_reagents = list(/datum/reagent/liquidgibs = 10, /datum/reagent/consumable/nutriment = 10, /datum/reagent/carbon = 10)
mob_react = FALSE
/datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, created_volume)
@@ -119,30 +119,30 @@
/datum/chemical_reaction/carbondioxide
name = "Direct Carbon Oxidation"
- id = "burningcarbon"
- results = list("co2" = 3)
- required_reagents = list("carbon" = 1, "oxygen" = 2)
+ id = /datum/reagent/carbondioxide
+ results = list(/datum/reagent/carbondioxide = 3)
+ required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/oxygen = 2)
required_temp = 777 // pure carbon isn't especially reactive.
/datum/chemical_reaction/nitrous_oxide
name = "Nitrous Oxide"
- id = "nitrous_oxide"
- results = list("nitrous_oxide" = 5)
- required_reagents = list("ammonia" = 2, "nitrogen" = 1, "oxygen" = 2)
+ id = /datum/reagent/nitrous_oxide
+ results = list(/datum/reagent/nitrous_oxide = 5)
+ required_reagents = list(/datum/reagent/ammonia = 2, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 2)
required_temp = 525
//Technically a mutation toxin
/datum/chemical_reaction/mulligan
name = "Mulligan"
id = "mulligan"
- results = list("mulligan" = 1)
- required_reagents = list("slime_toxin" = 1, "mutagen" = 1)
+ results = list(/datum/reagent/mulligan = 1)
+ required_reagents = list(/datum/reagent/slime_toxin = 1, /datum/reagent/toxin/mutagen = 1)
/datum/chemical_reaction/fermis_plush
name = "Fermis plush"
id = "fermis_plush"
- required_reagents = list("caramel" = 10, "blood" = 10, "stable_plasma" = 10)
+ required_reagents = list(/datum/reagent/consumable/caramel = 10, /datum/reagent/blood = 10, /datum/reagent/stable_plasma = 10)
mob_react = FALSE
required_temp = 300
@@ -156,75 +156,75 @@
/datum/chemical_reaction/virus_food
name = "Virus Food"
id = "virusfood"
- results = list("virusfood" = 15)
- required_reagents = list("water" = 5, "milk" = 5)
+ results = list(/datum/reagent/consumable/virus_food = 15)
+ required_reagents = list(/datum/reagent/water = 5, /datum/reagent/consumable/milk = 5)
/datum/chemical_reaction/virus_food_mutagen
name = "mutagenic agar"
id = "mutagenvirusfood"
- results = list("mutagenvirusfood" = 1)
- required_reagents = list("mutagen" = 1, "virusfood" = 1)
+ results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood = 1)
+ required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/consumable/virus_food = 1)
/datum/chemical_reaction/virus_food_synaptizine
name = "virus rations"
id = "synaptizinevirusfood"
- results = list("synaptizinevirusfood" = 1)
- required_reagents = list("synaptizine" = 1, "virusfood" = 1)
+ results = list(/datum/reagent/medicine/synaptizine/synaptizinevirusfood = 1)
+ required_reagents = list(/datum/reagent/medicine/synaptizine = 1, /datum/reagent/consumable/virus_food = 1)
/datum/chemical_reaction/virus_food_plasma
name = "virus plasma"
- id = "plasmavirusfood"
- results = list("plasmavirusfood" = 1)
- required_reagents = list("plasma" = 1, "virusfood" = 1)
+ id = /datum/reagent/toxin/plasma/plasmavirusfood
+ results = list(/datum/reagent/toxin/plasma/plasmavirusfood = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1, /datum/reagent/consumable/virus_food = 1)
/datum/chemical_reaction/virus_food_plasma_synaptizine
name = "weakened virus plasma"
- id = "weakplasmavirusfood"
- results = list("weakplasmavirusfood" = 2)
- required_reagents = list("synaptizine" = 1, "plasmavirusfood" = 1)
+ id = /datum/reagent/toxin/plasma/plasmavirusfood/weak
+ results = list(/datum/reagent/toxin/plasma/plasmavirusfood/weak = 2)
+ required_reagents = list(/datum/reagent/medicine/synaptizine = 1, /datum/reagent/toxin/plasma/plasmavirusfood = 1)
/datum/chemical_reaction/virus_food_mutagen_sugar
name = "sucrose agar"
- id = "sugarvirusfood"
- results = list("sugarvirusfood" = 2)
- required_reagents = list("sugar" = 1, "mutagenvirusfood" = 1)
+ id = /datum/reagent/toxin/mutagen/mutagenvirusfood/sugar
+ results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 2)
+ required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/toxin/mutagen/mutagenvirusfood = 1)
/datum/chemical_reaction/virus_food_mutagen_salineglucose
name = "sucrose agar"
id = "salineglucosevirusfood"
- results = list("sugarvirusfood" = 2)
- required_reagents = list("salglu_solution" = 1, "mutagenvirusfood" = 1)
+ results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 2)
+ required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/toxin/mutagen/mutagenvirusfood = 1)
/datum/chemical_reaction/virus_food_uranium
name = "Decaying uranium gel"
- id = "uraniumvirusfood"
- results = list("uraniumvirusfood" = 1)
- required_reagents = list("uranium" = 1, "virusfood" = 1)
+ id = /datum/reagent/uranium/uraniumvirusfood
+ results = list(/datum/reagent/uranium/uraniumvirusfood = 1)
+ required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/consumable/virus_food = 1)
/datum/chemical_reaction/virus_food_uranium_plasma
name = "Unstable uranium gel"
- id = "uraniumvirusfood_plasma"
- results = list("uraniumplasmavirusfood_unstable" = 1)
- required_reagents = list("uranium" = 5, "plasmavirusfood" = 1)
+ id = /datum/reagent/uranium/uraniumvirusfood/unstable
+ results = list(/datum/reagent/uranium/uraniumvirusfood/unstable = 1)
+ required_reagents = list(/datum/reagent/uranium = 5, /datum/reagent/toxin/plasma/plasmavirusfood = 1)
/datum/chemical_reaction/virus_food_uranium_plasma_gold
name = "Stable uranium gel"
id = "uraniumvirusfood_gold"
- results = list("uraniumplasmavirusfood_stable" = 1)
- required_reagents = list("uranium" = 10, "gold" = 10, "plasma" = 1)
+ results = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1)
+ required_reagents = list(/datum/reagent/uranium = 10, /datum/reagent/gold = 10, /datum/reagent/toxin/plasma = 1)
/datum/chemical_reaction/virus_food_uranium_plasma_silver
name = "Stable uranium gel"
id = "uraniumvirusfood_silver"
- results = list("uraniumplasmavirusfood_stable" = 1)
- required_reagents = list("uranium" = 10, "silver" = 10, "plasma" = 1)
+ results = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1)
+ required_reagents = list(/datum/reagent/uranium = 10, /datum/reagent/silver = 10, /datum/reagent/toxin/plasma = 1)
/datum/chemical_reaction/mix_virus
name = "Mix Virus"
id = "mixvirus"
- results = list("blood" = 1)
- required_reagents = list("virusfood" = 1)
- required_catalysts = list("blood" = 1)
+ results = list(/datum/reagent/blood = 1)
+ required_reagents = list(/datum/reagent/consumable/virus_food = 1)
+ required_catalysts = list(/datum/reagent/blood = 1)
var/level_min = 1
var/level_max = 2
@@ -241,7 +241,7 @@
name = "Mix Virus 2"
id = "mixvirus2"
- required_reagents = list("mutagen" = 1)
+ required_reagents = list(/datum/reagent/toxin/mutagen = 1)
level_min = 2
level_max = 4
@@ -249,7 +249,7 @@
name = "Mix Virus 3"
id = "mixvirus3"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
level_min = 4
level_max = 6
@@ -257,7 +257,7 @@
name = "Mix Virus 4"
id = "mixvirus4"
- required_reagents = list("uranium" = 1)
+ required_reagents = list(/datum/reagent/uranium = 1)
level_min = 5
level_max = 6
@@ -265,7 +265,7 @@
name = "Mix Virus 5"
id = "mixvirus5"
- required_reagents = list("mutagenvirusfood" = 1)
+ required_reagents = list(/datum/reagent/toxin/mutagen/mutagenvirusfood = 1)
level_min = 3
level_max = 3
@@ -273,7 +273,7 @@
name = "Mix Virus 6"
id = "mixvirus6"
- required_reagents = list("sugarvirusfood" = 1)
+ required_reagents = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 1)
level_min = 4
level_max = 4
@@ -281,7 +281,7 @@
name = "Mix Virus 7"
id = "mixvirus7"
- required_reagents = list("weakplasmavirusfood" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma/plasmavirusfood/weak = 1)
level_min = 5
level_max = 5
@@ -289,7 +289,7 @@
name = "Mix Virus 8"
id = "mixvirus8"
- required_reagents = list("plasmavirusfood" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma/plasmavirusfood = 1)
level_min = 6
level_max = 6
@@ -297,7 +297,7 @@
name = "Mix Virus 9"
id = "mixvirus9"
- required_reagents = list("synaptizinevirusfood" = 1)
+ required_reagents = list(/datum/reagent/medicine/synaptizine/synaptizinevirusfood = 1)
level_min = 1
level_max = 1
@@ -305,7 +305,7 @@
name = "Mix Virus 10"
id = "mixvirus10"
- required_reagents = list("uraniumvirusfood" = 1)
+ required_reagents = list(/datum/reagent/uranium/uraniumvirusfood = 1)
level_min = 6
level_max = 7
@@ -313,7 +313,7 @@
name = "Mix Virus 11"
id = "mixvirus11"
- required_reagents = list("uraniumplasmavirusfood_unstable" = 1)
+ required_reagents = list(/datum/reagent/uranium/uraniumvirusfood/unstable = 1)
level_min = 7
level_max = 7
@@ -321,7 +321,7 @@
name = "Mix Virus 12"
id = "mixvirus12"
- required_reagents = list("uraniumplasmavirusfood_stable" = 1)
+ required_reagents = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1)
level_min = 8
level_max = 8
@@ -329,8 +329,8 @@
name = "Devolve Virus"
id = "remvirus"
- required_reagents = list("synaptizine" = 1)
- required_catalysts = list("blood" = 1)
+ required_reagents = list(/datum/reagent/medicine/synaptizine = 1)
+ required_catalysts = list(/datum/reagent/blood = 1)
/datum/chemical_reaction/mix_virus/rem_virus/on_reaction(datum/reagents/holder, created_volume)
@@ -343,8 +343,8 @@
/datum/chemical_reaction/mix_virus/neuter_virus
name = "Neuter Virus"
id = "neutervirus"
- required_reagents = list("formaldehyde" = 1)
- required_catalysts = list("blood" = 1)
+ required_reagents = list(/datum/reagent/toxin/formaldehyde = 1)
+ required_catalysts = list(/datum/reagent/blood = 1)
/datum/chemical_reaction/mix_virus/neuter_virus/on_reaction(datum/reagents/holder, created_volume)
@@ -362,13 +362,13 @@
/datum/chemical_reaction/surfactant
name = "Foam surfactant"
id = "foam surfactant"
- results = list("fluorosurfactant" = 5)
- required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1)
+ results = list(/datum/reagent/fluorosurfactant = 5)
+ required_reagents = list(/datum/reagent/fluorine = 2, /datum/reagent/carbon = 2, /datum/reagent/toxin/acid = 1)
/datum/chemical_reaction/foam
name = "Foam"
id = "foam"
- required_reagents = list("fluorosurfactant" = 1, "water" = 1)
+ required_reagents = list(/datum/reagent/fluorosurfactant = 1, /datum/reagent/water = 1)
mob_react = FALSE
/datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, created_volume)
@@ -385,7 +385,7 @@
/datum/chemical_reaction/metalfoam
name = "Metal Foam"
id = "metalfoam"
- required_reagents = list("aluminium" = 3, "foaming_agent" = 1, "facid" = 1)
+ required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1)
mob_react = FALSE
/datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, created_volume)
@@ -402,7 +402,7 @@
/datum/chemical_reaction/smart_foam
name = "Smart Metal Foam"
id = "smart_metal_foam"
- required_reagents = list("aluminium" = 3, "smart_foaming_agent" = 1, "facid" = 1)
+ required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/smart_foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1)
mob_react = TRUE
/datum/chemical_reaction/smart_foam/on_reaction(datum/reagents/holder, created_volume)
@@ -416,7 +416,7 @@
/datum/chemical_reaction/ironfoam
name = "Iron Foam"
id = "ironlfoam"
- required_reagents = list("iron" = 3, "foaming_agent" = 1, "facid" = 1)
+ required_reagents = list(/datum/reagent/iron = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1)
mob_react = FALSE
/datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume)
@@ -430,15 +430,15 @@
/datum/chemical_reaction/foaming_agent
name = "Foaming Agent"
- id = "foaming_agent"
- results = list("foaming_agent" = 1)
- required_reagents = list("lithium" = 1, "hydrogen" = 1)
+ id = /datum/reagent/foaming_agent
+ results = list(/datum/reagent/foaming_agent = 1)
+ required_reagents = list(/datum/reagent/lithium = 1, /datum/reagent/hydrogen = 1)
/datum/chemical_reaction/smart_foaming_agent
name = "Smart foaming Agent"
- id = "smart_foaming_agent"
- results = list("smart_foaming_agent" = 3)
- required_reagents = list("foaming_agent" = 3, "acetone" = 1, "iron" = 1)
+ id = /datum/reagent/smart_foaming_agent
+ results = list(/datum/reagent/smart_foaming_agent = 3)
+ required_reagents = list(/datum/reagent/foaming_agent = 3, /datum/reagent/acetone = 1, /datum/reagent/iron = 1)
mix_message = "The solution mixes into a frothy metal foam and conforms to the walls of its container."
@@ -446,83 +446,83 @@
/datum/chemical_reaction/ammonia
name = "Ammonia"
- id = "ammonia"
- results = list("ammonia" = 3)
- required_reagents = list("hydrogen" = 3, "nitrogen" = 1)
+ id = /datum/reagent/ammonia
+ results = list(/datum/reagent/ammonia = 3)
+ required_reagents = list(/datum/reagent/hydrogen = 3, /datum/reagent/nitrogen = 1)
/datum/chemical_reaction/diethylamine
name = "Diethylamine"
- id = "diethylamine"
- results = list("diethylamine" = 2)
- required_reagents = list ("ammonia" = 1, "ethanol" = 1)
+ id = /datum/reagent/diethylamine
+ results = list(/datum/reagent/diethylamine = 2)
+ required_reagents = list (/datum/reagent/ammonia = 1, /datum/reagent/consumable/ethanol = 1)
/datum/chemical_reaction/space_cleaner
name = "Space cleaner"
- id = "cleaner"
- results = list("cleaner" = 2)
- required_reagents = list("ammonia" = 1, "water" = 1)
+ id = /datum/reagent/space_cleaner
+ results = list(/datum/reagent/space_cleaner = 2)
+ required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/water = 1)
/datum/chemical_reaction/plantbgone
name = "Plant-B-Gone"
- id = "plantbgone"
- results = list("plantbgone" = 5)
- required_reagents = list("toxin" = 1, "water" = 4)
+ id = /datum/reagent/toxin/plantbgone
+ results = list(/datum/reagent/toxin/plantbgone = 5)
+ required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/water = 4)
/datum/chemical_reaction/weedkiller
name = "Weed Killer"
- id = "weedkiller"
- results = list("weedkiller" = 5)
- required_reagents = list("toxin" = 1, "ammonia" = 4)
+ id = /datum/reagent/toxin/plantbgone/weedkiller
+ results = list(/datum/reagent/toxin/plantbgone/weedkiller = 5)
+ required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/ammonia = 4)
/datum/chemical_reaction/pestkiller
name = "Pest Killer"
- id = "pestkiller"
- results = list("pestkiller" = 5)
- required_reagents = list("toxin" = 1, "ethanol" = 4)
+ id = /datum/reagent/toxin/pestkiller
+ results = list(/datum/reagent/toxin/pestkiller = 5)
+ required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/consumable/ethanol = 4)
/datum/chemical_reaction/drying_agent
name = "Drying agent"
- id = "drying_agent"
- results = list("drying_agent" = 3)
- required_reagents = list("stable_plasma" = 2, "ethanol" = 1, "sodium" = 1)
+ id = /datum/reagent/drying_agent
+ results = list(/datum/reagent/drying_agent = 3)
+ required_reagents = list(/datum/reagent/stable_plasma = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/sodium = 1)
//////////////////////////////////// Other goon stuff ///////////////////////////////////////////
/datum/chemical_reaction/acetone
name = "acetone"
- id = "acetone"
- results = list("acetone" = 3)
- required_reagents = list("oil" = 1, "welding_fuel" = 1, "oxygen" = 1)
+ id = /datum/reagent/acetone
+ results = list(/datum/reagent/acetone = 3)
+ required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/oxygen = 1)
/datum/chemical_reaction/oil
name = "Oil"
- id = "oil"
- results = list("oil" = 3)
- required_reagents = list("welding_fuel" = 1, "carbon" = 1, "hydrogen" = 1)
+ id = /datum/reagent/oil
+ results = list(/datum/reagent/oil = 3)
+ required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/carbon = 1, /datum/reagent/hydrogen = 1)
/datum/chemical_reaction/phenol
name = "phenol"
- id = "phenol"
- results = list("phenol" = 3)
- required_reagents = list("water" = 1, "chlorine" = 1, "oil" = 1)
+ id = /datum/reagent/phenol
+ results = list(/datum/reagent/phenol = 3)
+ required_reagents = list(/datum/reagent/water = 1, /datum/reagent/chlorine = 1, /datum/reagent/oil = 1)
/datum/chemical_reaction/ash
name = "Ash"
- id = "ash"
- results = list("ash" = 1)
- required_reagents = list("oil" = 1)
+ id = /datum/reagent/ash
+ results = list(/datum/reagent/ash = 1)
+ required_reagents = list(/datum/reagent/oil = 1)
required_temp = 480
/datum/chemical_reaction/colorful_reagent
name = "colorful_reagent"
- id = "colorful_reagent"
- results = list("colorful_reagent" = 5)
- required_reagents = list("stable_plasma" = 1, "radium" = 1, "space_drugs" = 1, "cryoxadone" = 1, "triple_citrus" = 1)
+ id = /datum/reagent/colorful_reagent
+ results = list(/datum/reagent/colorful_reagent = 5)
+ required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1, /datum/reagent/medicine/cryoxadone = 1, /datum/reagent/consumable/triple_citrus = 1)
/datum/chemical_reaction/life
name = "Life"
id = "life"
- required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "blood" = 1)
+ required_reagents = list(/datum/reagent/medicine/strange_reagent = 1, /datum/reagent/medicine/synthflesh = 1, /datum/reagent/blood = 1)
required_temp = 374
/datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume)
@@ -532,7 +532,7 @@
/datum/chemical_reaction/life_friendly
name = "Life (Friendly)"
id = "life_friendly"
- required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "sugar" = 1)
+ required_reagents = list(/datum/reagent/medicine/strange_reagent = 1, /datum/reagent/medicine/synthflesh = 1, /datum/reagent/consumable/sugar = 1)
required_temp = 374
/datum/chemical_reaction/life_friendly/on_reaction(datum/reagents/holder, created_volume)
@@ -541,7 +541,7 @@
/datum/chemical_reaction/corgium
name = "corgium"
id = "corgium"
- required_reagents = list("nutriment" = 1, "colorful_reagent" = 1, "strange_reagent" = 1, "blood" = 1)
+ required_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/blood = 1)
required_temp = 374
/datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume)
@@ -552,56 +552,56 @@
/datum/chemical_reaction/hair_dye
name = "hair_dye"
- id = "hair_dye"
- results = list("hair_dye" = 5)
- required_reagents = list("colorful_reagent" = 1, "radium" = 1, "space_drugs" = 1)
+ id = /datum/reagent/hair_dye
+ results = list(/datum/reagent/hair_dye = 5)
+ required_reagents = list(/datum/reagent/colorful_reagent = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1)
/datum/chemical_reaction/barbers_aid
name = "barbers_aid"
- id = "barbers_aid"
- results = list("barbers_aid" = 5)
- required_reagents = list("carpet" = 1, "radium" = 1, "space_drugs" = 1)
+ id = /datum/reagent/barbers_aid
+ results = list(/datum/reagent/barbers_aid = 5)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1)
/datum/chemical_reaction/concentrated_barbers_aid
name = "concentrated_barbers_aid"
- id = "concentrated_barbers_aid"
- results = list("concentrated_barbers_aid" = 2)
- required_reagents = list("barbers_aid" = 1, "mutagen" = 1)
+ id = /datum/reagent/concentrated_barbers_aid
+ results = list(/datum/reagent/concentrated_barbers_aid = 2)
+ required_reagents = list(/datum/reagent/barbers_aid = 1, /datum/reagent/toxin/mutagen = 1)
/datum/chemical_reaction/saltpetre
name = "saltpetre"
- id = "saltpetre"
- results = list("saltpetre" = 3)
- required_reagents = list("potassium" = 1, "nitrogen" = 1, "oxygen" = 3)
+ id = /datum/reagent/saltpetre
+ results = list(/datum/reagent/saltpetre = 3)
+ required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 3)
/datum/chemical_reaction/lye
name = "lye"
- id = "lye"
- results = list("lye" = 3)
- required_reagents = list("sodium" = 1, "hydrogen" = 1, "oxygen" = 1)
+ id = /datum/reagent/lye
+ results = list(/datum/reagent/lye = 3)
+ required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1)
/datum/chemical_reaction/lye2
name = "lye"
- id = "lye"
- results = list("lye" = 2)
- required_reagents = list("ash" = 1, "water" = 1, "carbon" = 1)
+ id = "lye2"
+ results = list(/datum/reagent/lye = 2)
+ required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/water = 1, /datum/reagent/carbon = 1)
/datum/chemical_reaction/royal_bee_jelly
name = "royal bee jelly"
- id = "royal_bee_jelly"
- results = list("royal_bee_jelly" = 5)
- required_reagents = list("mutagen" = 10, "honey" = 40)
+ id = /datum/reagent/royal_bee_jelly
+ results = list(/datum/reagent/royal_bee_jelly = 5)
+ required_reagents = list(/datum/reagent/toxin/mutagen = 10, /datum/reagent/consumable/honey = 40)
/datum/chemical_reaction/laughter
name = "laughter"
- id = "laughter"
- results = list("laughter" = 10) // Fuck it. I'm not touching this one.
- required_reagents = list("sugar" = 1, "banana" = 1)
+ id = /datum/reagent/consumable/laughter
+ results = list(/datum/reagent/consumable/laughter = 10) // Fuck it. I'm not touching this one.
+ required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/banana = 1)
/datum/chemical_reaction/plastic_polymers
name = "plastic polymers"
id = "plastic_polymers"
- required_reagents = list("oil" = 5, "sacid" = 2, "ash" = 3)
+ required_reagents = list(/datum/reagent/oil = 5, /datum/reagent/toxin/acid = 2, /datum/reagent/ash = 3)
required_temp = 374 //lazily consistent with soap & other crafted objects generically created with heat.
/datum/chemical_reaction/plastic_polymers/on_reaction(datum/reagents/holder, created_volume)
@@ -611,101 +611,101 @@
/datum/chemical_reaction/pax
name = "pax"
- id = "pax"
- results = list("pax" = 3)
- required_reagents = list("mindbreaker" = 1, "synaptizine" = 1, "water" = 1)
+ id = /datum/reagent/pax
+ results = list(/datum/reagent/pax = 3)
+ required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/medicine/synaptizine = 1, /datum/reagent/water = 1)
/datum/chemical_reaction/cat
name = "felined mutation toxic"
- id = "cats"
- results = list("felinidmutationtoxin" = 1)
- required_reagents = list("mindbreaker" = 1, "ammonia" = 1, "water" = 1, "aphro" = 10, "stablemutationtoxin" = 1) // Maybe aphro+ if it becomes a shitty meme
+ id = /datum/reagent/mutationtoxin/felinid
+ results = list(/datum/reagent/mutationtoxin/felinid = 1)
+ required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/ammonia = 1, /datum/reagent/water = 1, /datum/reagent/drug/aphrodisiac = 10, /datum/reagent/mutationtoxin = 1) // Maybe aphro+ if it becomes a shitty meme
required_temp = 450
/datum/chemical_reaction/moff
name = "insect mutation toxic"
- id = "moffs"
- results = list("mothmutationtoxin" = 1)
- required_reagents = list("liquid_dark_matter" = 2, "ammonia" = 5, "lithium" = 1, "stablemutationtoxin" = 1)
+ id = /datum/reagent/mutationtoxin/insect
+ results = list(/datum/reagent/mutationtoxin/insect = 1)
+ required_reagents = list(/datum/reagent/liquid_dark_matter = 2, /datum/reagent/ammonia = 5, /datum/reagent/lithium = 1, /datum/reagent/mutationtoxin = 1)
required_temp = 320
/datum/chemical_reaction/notlight //Harder to make do to it being a hard race to play
name = "shadow muatatuin toxic"
- id = "notlight"
- results = list("shadowmutationtoxin" = 1)
- required_reagents = list("liquid_dark_matter" = 5, "synaptizine" = 10, "oculine" = 10, "stablemutationtoxin" = 1)
+ id = /datum/reagent/mutationtoxin/shadow
+ results = list(/datum/reagent/mutationtoxin/shadow = 1)
+ required_reagents = list(/datum/reagent/liquid_dark_matter = 5, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/oculine = 10, /datum/reagent/mutationtoxin = 1)
required_temp = 600
// Liquid Carpets
/datum/chemical_reaction/carpet
name = "carpet"
- id = "carpet"
- results = list("carpet" = 2)
- required_reagents = list("space_drugs" = 1, "blood" = 1)
+ id = /datum/reagent/carpet
+ results = list(/datum/reagent/carpet = 2)
+ required_reagents = list(/datum/reagent/drug/space_drugs = 1, /datum/reagent/blood = 1)
/datum/chemical_reaction/carpet/black
name = "liquid black carpet"
- id = "blackcarpet"
- results = list("blackcarpet" = 2)
- required_reagents = list("carpet" = 1, "carbon" = 1)
+ id = /datum/reagent/carpet/black
+ results = list(/datum/reagent/carpet/black = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/carbon = 1)
/datum/chemical_reaction/carpet/blackred
name = "liquid red black carpet"
- id = "blackredcarpet"
- results = list("blackredcarpet" = 2)
- required_reagents = list("carpet" = 1, "charcoal" = 1)
+ id = /datum/reagent/carpet/blackred
+ results = list(/datum/reagent/carpet/blackred = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/medicine/charcoal = 1)
/datum/chemical_reaction/carpet/monochrome
name = "liquid monochrome carpet"
- id = "monochromecarpet"
- results = list("monochromecarpet" = 2)
- required_reagents = list("carpet" = 1, "oil" = 1)
+ id = /datum/reagent/carpet/monochrome
+ results = list(/datum/reagent/carpet/monochrome = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/oil = 1)
/datum/chemical_reaction/carpet/blue
name = "liquid blue carpet"
- id = "bluecarpet"
- results = list("bluecarpet" = 2)
- required_reagents = list("carpet" = 1, "tonic" = 1)
+ id = /datum/reagent/carpet/blue
+ results = list(/datum/reagent/carpet/blue = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tonic = 1)
/datum/chemical_reaction/carpet/cyan
name = "liquid cyan carpet"
- id = "cyancarpet"
- results = list("cyancarpet" = 2)
- required_reagents = list("carpet" = 1, "ice" = 1)
+ id = /datum/reagent/carpet/cyan
+ results = list(/datum/reagent/carpet/cyan = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/ice = 1)
/datum/chemical_reaction/carpet/green
name = "liquid green carpet"
- id = "greencarpet"
- results = list("greencarpet" = 2)
- required_reagents = list("carpet" = 1, "sacid" = 1)
+ id = /datum/reagent/carpet/green
+ results = list(/datum/reagent/carpet/green = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/toxin/acid = 1)
/datum/chemical_reaction/carpet/orange
name = "liquid orange carpet"
- id = "orangecarpet"
- results = list("orangecarpet" = 2)
- required_reagents = list("carpet" = 1, "orangejuice" = 1)
+ id = /datum/reagent/carpet/orange
+ results = list(/datum/reagent/carpet/orange = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/orangejuice = 1)
/datum/chemical_reaction/carpet/purple
name = "liquid purple carpet"
- id = "purplecarpet"
- results = list("purplecarpet" = 2)
- required_reagents = list("carpet" = 1, "stable_plasma" = 1)
+ id = /datum/reagent/carpet/purple
+ results = list(/datum/reagent/carpet/purple = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/stable_plasma = 1)
/datum/chemical_reaction/carpet/red
name = "liquid red carpet"
- id = "redcarpet"
- results = list("redcarpet" = 2)
- required_reagents = list("carpet" = 1, "welding_fuel" = 1)
+ id = /datum/reagent/carpet/red
+ results = list(/datum/reagent/carpet/red = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/fuel = 1)
/datum/chemical_reaction/carpet/royalblack
name = "liquid royal black carpet"
- id = "royalblackcarpet"
- results = list("royalblackcarpet" = 2)
- required_reagents = list("carpet" = 1, "blackpepper" = 1)
+ id = /datum/reagent/carpet/royalblack
+ results = list(/datum/reagent/carpet/royalblack = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/blackpepper = 1)
/datum/chemical_reaction/carpet/royalblue
name = "liquid royal blue carpet"
- id = "royalbluecarpet"
- results = list("royalbluecarpet" = 2)
- required_reagents = list("carpet" = 1, "clonexadone" = 1)
+ id = /datum/reagent/carpet/royalblue
+ results = list(/datum/reagent/carpet/royalblue = 2)
+ required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/medicine/clonexadone = 1)
diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
index ad1efc1da7..cb9636bf02 100644
--- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
+++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
@@ -27,21 +27,21 @@
/datum/chemical_reaction/reagent_explosion/nitroglycerin
name = "Nitroglycerin"
- id = "nitroglycerin"
- results = list("nitroglycerin" = 2)
- required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1)
+ id = /datum/reagent/nitroglycerin
+ results = list(/datum/reagent/nitroglycerin = 2)
+ required_reagents = list(/datum/reagent/glycerol = 1, /datum/reagent/toxin/acid/fluacid = 1, /datum/reagent/toxin/acid = 1)
strengthdiv = 2
/datum/chemical_reaction/reagent_explosion/nitroglycerin/on_reaction(datum/reagents/holder, created_volume)
- if(holder.has_reagent("stabilizing_agent"))
+ if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return
- holder.remove_reagent("nitroglycerin", created_volume*2)
+ holder.remove_reagent(/datum/reagent/nitroglycerin, created_volume*2)
..()
/datum/chemical_reaction/reagent_explosion/nitroglycerin_explosion
name = "Nitroglycerin explosion"
id = "nitroglycerin_explosion"
- required_reagents = list("nitroglycerin" = 1)
+ required_reagents = list(/datum/reagent/nitroglycerin = 1)
required_temp = 474
strengthdiv = 2
@@ -49,13 +49,13 @@
/datum/chemical_reaction/reagent_explosion/potassium_explosion
name = "Explosion"
id = "potassium_explosion"
- required_reagents = list("water" = 1, "potassium" = 1)
+ required_reagents = list(/datum/reagent/water = 1, /datum/reagent/potassium = 1)
strengthdiv = 10
/datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom
name = "Holy Explosion"
id = "holyboom"
- required_reagents = list("holywater" = 1, "potassium" = 1)
+ required_reagents = list(/datum/reagent/water/holywater = 1, /datum/reagent/potassium = 1)
/datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom/on_reaction(datum/reagents/holder, created_volume)
var/turf/T = get_turf(holder.my_atom)
@@ -84,14 +84,14 @@
/datum/chemical_reaction/blackpowder
name = "Black Powder"
- id = "blackpowder"
- results = list("blackpowder" = 3)
- required_reagents = list("saltpetre" = 1, "charcoal" = 1, "sulfur" = 1)
+ id = /datum/reagent/blackpowder
+ results = list(/datum/reagent/blackpowder = 3)
+ required_reagents = list(/datum/reagent/saltpetre = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/sulfur = 1)
/datum/chemical_reaction/reagent_explosion/blackpowder_explosion
name = "Black Powder Kaboom"
id = "blackpowder_explosion"
- required_reagents = list("blackpowder" = 1)
+ required_reagents = list(/datum/reagent/blackpowder = 1)
required_temp = 474
strengthdiv = 6
modifier = 1
@@ -103,14 +103,14 @@
/datum/chemical_reaction/thermite
name = "Thermite"
- id = "thermite"
- results = list("thermite" = 3)
- required_reagents = list("aluminium" = 1, "iron" = 1, "oxygen" = 1)
+ id = /datum/reagent/thermite
+ results = list(/datum/reagent/thermite = 3)
+ required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/iron = 1, /datum/reagent/oxygen = 1)
/datum/chemical_reaction/emp_pulse
name = "EMP Pulse"
id = "emp_pulse"
- 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
+ required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/iron = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense
/datum/chemical_reaction/emp_pulse/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
@@ -123,7 +123,7 @@
/datum/chemical_reaction/beesplosion
name = "Bee Explosion"
id = "beesplosion"
- required_reagents = list("honey" = 1, "strange_reagent" = 1, "radium" = 1)
+ required_reagents = list(/datum/reagent/consumable/honey = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/radium = 1)
/datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, created_volume)
var/location = holder.my_atom.drop_location()
@@ -134,7 +134,7 @@
var/list/beeagents = list()
for(var/X in holder.reagent_list)
var/datum/reagent/R = X
- if(required_reagents[R.id])
+ if(required_reagents[R.type])
continue
beeagents += R
var/bee_amount = round(created_volume * 0.2)
@@ -146,15 +146,15 @@
/datum/chemical_reaction/stabilizing_agent
name = "stabilizing_agent"
- id = "stabilizing_agent"
- results = list("stabilizing_agent" = 3)
- required_reagents = list("iron" = 1, "oxygen" = 1, "hydrogen" = 1)
+ id = /datum/reagent/stabilizing_agent
+ results = list(/datum/reagent/stabilizing_agent = 3)
+ required_reagents = list(/datum/reagent/iron = 1, /datum/reagent/oxygen = 1, /datum/reagent/hydrogen = 1)
/datum/chemical_reaction/clf3
name = "Chlorine Trifluoride"
- id = "clf3"
- results = list("clf3" = 4)
- required_reagents = list("chlorine" = 1, "fluorine" = 3)
+ id = /datum/reagent/clf3
+ results = list(/datum/reagent/clf3 = 4)
+ required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 3)
required_temp = 424
/datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, created_volume)
@@ -167,7 +167,7 @@
name = "Meth explosion"
id = "methboom1"
required_temp = 380 //slightly above the meth mix time.
- required_reagents = list("methamphetamine" = 1)
+ required_reagents = list(/datum/reagent/drug/methamphetamine = 1)
strengthdiv = 6
modifier = 1
mob_react = FALSE
@@ -181,19 +181,19 @@
/datum/chemical_reaction/reagent_explosion/methsplosion/methboom2
id = "methboom2"
- required_reagents = list("diethylamine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) //diethylamine is often left over from mixing the ephedrine.
+ required_reagents = list(/datum/reagent/diethylamine = 1, /datum/reagent/iodine = 1, /datum/reagent/phosphorus = 1, /datum/reagent/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
/datum/chemical_reaction/sorium
name = "Sorium"
- id = "sorium"
- results = list("sorium" = 4)
- required_reagents = list("mercury" = 1, "oxygen" = 1, "nitrogen" = 1, "carbon" = 1)
+ id = /datum/reagent/sorium
+ results = list(/datum/reagent/sorium = 4)
+ required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/oxygen = 1, /datum/reagent/nitrogen = 1, /datum/reagent/carbon = 1)
/datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, created_volume)
- if(holder.has_reagent("stabilizing_agent"))
+ if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return
- holder.remove_reagent("sorium", created_volume*4)
+ holder.remove_reagent(/datum/reagent/sorium, created_volume*4)
var/turf/T = get_turf(holder.my_atom)
var/range = CLAMP(sqrt(created_volume*4), 1, 6)
goonchem_vortex(T, 1, range)
@@ -201,7 +201,7 @@
/datum/chemical_reaction/sorium_vortex
name = "sorium_vortex"
id = "sorium_vortex"
- required_reagents = list("sorium" = 1)
+ required_reagents = list(/datum/reagent/sorium = 1)
required_temp = 474
/datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, created_volume)
@@ -211,14 +211,14 @@
/datum/chemical_reaction/liquid_dark_matter
name = "Liquid Dark Matter"
- id = "liquid_dark_matter"
- results = list("liquid_dark_matter" = 3)
- required_reagents = list("stable_plasma" = 1, "radium" = 1, "carbon" = 1)
+ id = /datum/reagent/liquid_dark_matter
+ results = list(/datum/reagent/liquid_dark_matter = 3)
+ required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/carbon = 1)
/datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume)
- if(holder.has_reagent("stabilizing_agent"))
+ if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return
- holder.remove_reagent("liquid_dark_matter", created_volume*3)
+ holder.remove_reagent(/datum/reagent/liquid_dark_matter, created_volume*3)
var/turf/T = get_turf(holder.my_atom)
var/range = CLAMP(sqrt(created_volume*3), 1, 6)
goonchem_vortex(T, 0, range)
@@ -226,7 +226,7 @@
/datum/chemical_reaction/ldm_vortex
name = "LDM Vortex"
id = "ldm_vortex"
- required_reagents = list("liquid_dark_matter" = 1)
+ required_reagents = list(/datum/reagent/liquid_dark_matter = 1)
required_temp = 474
/datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, created_volume)
@@ -236,12 +236,12 @@
/datum/chemical_reaction/flash_powder
name = "Flash powder"
- id = "flash_powder"
- results = list("flash_powder" = 3)
- required_reagents = list("aluminium" = 1, "potassium" = 1, "sulfur" = 1 )
+ id = /datum/reagent/flash_powder
+ results = list(/datum/reagent/flash_powder = 3)
+ required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/potassium = 1, /datum/reagent/sulfur = 1 )
/datum/chemical_reaction/flash_powder/on_reaction(datum/reagents/holder, created_volume)
- if(holder.has_reagent("stabilizing_agent"))
+ if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return
var/location = get_turf(holder.my_atom)
do_sparks(2, TRUE, location)
@@ -255,12 +255,12 @@
C.Knockdown(60)
else
C.Stun(100)
- holder.remove_reagent("flash_powder", created_volume*3)
+ holder.remove_reagent(/datum/reagent/flash_powder, created_volume*3)
/datum/chemical_reaction/flash_powder_flash
name = "Flash powder activation"
id = "flash_powder_flash"
- required_reagents = list("flash_powder" = 1)
+ required_reagents = list(/datum/reagent/flash_powder = 1)
required_temp = 374
/datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume)
@@ -279,14 +279,14 @@
/datum/chemical_reaction/smoke_powder
name = "smoke_powder"
- id = "smoke_powder"
- results = list("smoke_powder" = 3)
- required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1)
+ id = /datum/reagent/smoke_powder
+ results = list(/datum/reagent/smoke_powder = 3)
+ required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/phosphorus = 1)
/datum/chemical_reaction/smoke_powder/on_reaction(datum/reagents/holder, created_volume)
- if(holder.has_reagent("stabilizing_agent"))
+ if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return
- holder.remove_reagent("smoke_powder", created_volume*3)
+ holder.remove_reagent(/datum/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
@@ -301,7 +301,7 @@
/datum/chemical_reaction/smoke_powder_smoke
name = "smoke_powder_smoke"
id = "smoke_powder_smoke"
- required_reagents = list("smoke_powder" = 1)
+ required_reagents = list(/datum/reagent/smoke_powder = 1)
required_temp = 374
mob_react = FALSE
@@ -319,14 +319,14 @@
/datum/chemical_reaction/sonic_powder
name = "sonic_powder"
- id = "sonic_powder"
- results = list("sonic_powder" = 3)
- required_reagents = list("oxygen" = 1, "cola" = 1, "phosphorus" = 1)
+ id = /datum/reagent/sonic_powder
+ results = list(/datum/reagent/sonic_powder = 3)
+ required_reagents = list(/datum/reagent/oxygen = 1, /datum/reagent/consumable/space_cola = 1, /datum/reagent/phosphorus = 1)
/datum/chemical_reaction/sonic_powder/on_reaction(datum/reagents/holder, created_volume)
- if(holder.has_reagent("stabilizing_agent"))
+ if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return
- holder.remove_reagent("sonic_powder", created_volume*3)
+ holder.remove_reagent(/datum/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/3, location))
@@ -335,7 +335,7 @@
/datum/chemical_reaction/sonic_powder_deafen
name = "sonic_powder_deafen"
id = "sonic_powder_deafen"
- required_reagents = list("sonic_powder" = 1)
+ required_reagents = list(/datum/reagent/sonic_powder = 1)
required_temp = 374
/datum/chemical_reaction/sonic_powder_deafen/on_reaction(datum/reagents/holder, created_volume)
@@ -346,12 +346,12 @@
/datum/chemical_reaction/phlogiston
name = "phlogiston"
- id = "phlogiston"
- results = list("phlogiston" = 3)
- required_reagents = list("phosphorus" = 1, "sacid" = 1, "stable_plasma" = 1)
+ id = /datum/reagent/phlogiston
+ results = list(/datum/reagent/phlogiston = 3)
+ required_reagents = list(/datum/reagent/phosphorus = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/stable_plasma = 1)
/datum/chemical_reaction/phlogiston/on_reaction(datum/reagents/holder, created_volume)
- if(holder.has_reagent("stabilizing_agent"))
+ if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return
var/turf/open/T = get_turf(holder.my_atom)
if(istype(T))
@@ -361,15 +361,15 @@
/datum/chemical_reaction/napalm
name = "Napalm"
- id = "napalm"
- results = list("napalm" = 3)
- required_reagents = list("oil" = 1, "welding_fuel" = 1, "ethanol" = 1 )
+ id = /datum/reagent/napalm
+ results = list(/datum/reagent/napalm = 3)
+ required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol = 1 )
/datum/chemical_reaction/cryostylane
name = "cryostylane"
- id = "cryostylane"
- results = list("cryostylane" = 3)
- required_reagents = list("water" = 1, "stable_plasma" = 1, "nitrogen" = 1)
+ id = /datum/reagent/cryostylane
+ results = list(/datum/reagent/cryostylane = 3)
+ required_reagents = list(/datum/reagent/water = 1, /datum/reagent/stable_plasma = 1, /datum/reagent/nitrogen = 1)
/datum/chemical_reaction/cryostylane/on_reaction(datum/reagents/holder, created_volume)
holder.chem_temp = 20 // cools the fuck down
@@ -378,8 +378,8 @@
/datum/chemical_reaction/cryostylane_oxygen
name = "ephemeral cryostylane reaction"
id = "cryostylane_oxygen"
- results = list("cryostylane" = 1)
- required_reagents = list("cryostylane" = 1, "oxygen" = 1)
+ results = list(/datum/reagent/cryostylane = 1)
+ required_reagents = list(/datum/reagent/cryostylane = 1, /datum/reagent/oxygen = 1)
mob_react = FALSE
/datum/chemical_reaction/cryostylane_oxygen/on_reaction(datum/reagents/holder, created_volume)
@@ -388,8 +388,8 @@
/datum/chemical_reaction/pyrosium_oxygen
name = "ephemeral pyrosium reaction"
id = "pyrosium_oxygen"
- results = list("pyrosium" = 1)
- required_reagents = list("pyrosium" = 1, "oxygen" = 1)
+ results = list(/datum/reagent/pyrosium = 1)
+ required_reagents = list(/datum/reagent/pyrosium = 1, /datum/reagent/oxygen = 1)
mob_react = FALSE
/datum/chemical_reaction/pyrosium_oxygen/on_reaction(datum/reagents/holder, created_volume)
@@ -397,9 +397,9 @@
/datum/chemical_reaction/pyrosium
name = "pyrosium"
- id = "pyrosium"
- results = list("pyrosium" = 3)
- required_reagents = list("stable_plasma" = 1, "radium" = 1, "phosphorus" = 1)
+ id = /datum/reagent/pyrosium
+ results = list(/datum/reagent/pyrosium = 3)
+ required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/phosphorus = 1)
/datum/chemical_reaction/pyrosium/on_reaction(datum/reagents/holder, created_volume)
holder.chem_temp = 20 // also cools the fuck down
@@ -407,23 +407,23 @@
/datum/chemical_reaction/teslium
name = "Teslium"
- id = "teslium"
- results = list("teslium" = 3)
- required_reagents = list("stable_plasma" = 1, "silver" = 1, "blackpowder" = 1)
+ id = /datum/reagent/teslium
+ results = list(/datum/reagent/teslium = 3)
+ required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/silver = 1, /datum/reagent/blackpowder = 1)
mix_message = "A jet of sparks flies from the mixture as it merges into a flickering slurry."
required_temp = 400
/datum/chemical_reaction/energized_jelly
name = "Energized Jelly"
- id = "energized_jelly"
- results = list("energized_jelly" = 2)
- required_reagents = list("slimejelly" = 1, "teslium" = 1)
+ id = /datum/reagent/teslium/energized_jelly
+ results = list(/datum/reagent/teslium/energized_jelly = 2)
+ required_reagents = list(/datum/reagent/toxin/slimejelly = 1, /datum/reagent/teslium = 1)
mix_message = "The slime jelly starts glowing intermittently."
/datum/chemical_reaction/reagent_explosion/teslium_lightning
name = "Teslium Destabilization"
id = "teslium_lightning"
- required_reagents = list("teslium" = 1, "water" = 1)
+ required_reagents = list(/datum/reagent/teslium = 1, /datum/reagent/water = 1)
strengthdiv = 100
modifier = -100
noexplosion = TRUE
@@ -452,29 +452,29 @@
/datum/chemical_reaction/reagent_explosion/teslium_lightning/heat
id = "teslium_lightning2"
required_temp = 474
- required_reagents = list("teslium" = 1)
+ required_reagents = list(/datum/reagent/teslium = 1)
/datum/chemical_reaction/reagent_explosion/nitrous_oxide
name = "N2O explosion"
id = "n2o_explosion"
- required_reagents = list("nitrous_oxide" = 1)
+ required_reagents = list(/datum/reagent/nitrous_oxide = 1)
strengthdiv = 7
required_temp = 575
modifier = 1
/datum/chemical_reaction/firefighting_foam
name = "Firefighting Foam"
- id = "firefighting_foam"
- results = list("firefighting_foam" = 3)
- required_reagents = list("stabilizing_agent" = 1,"fluorosurfactant" = 1,"carbon" = 1)
+ id = /datum/reagent/firefighting_foam
+ results = list(/datum/reagent/firefighting_foam = 3)
+ required_reagents = list(/datum/reagent/stabilizing_agent = 1, /datum/reagent/fluorosurfactant = 1,/datum/reagent/carbon = 1)
required_temp = 200
is_cold_recipe = 1
/datum/chemical_reaction/reagent_explosion/lingblood
name = "Changeling Blood Reaction"
id = "ling_blood_reaction"
- results = list("ash" = 1)
- required_reagents = list("blood" = 1)
+ results = list(/datum/reagent/ash = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
strengthdiv = 4 //The explosion should be somewhat strong if a full 15u is heated within a syringe. !!fun!!
required_temp = 666
special_react = TRUE
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index 8edca91a91..5228d4a281 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -16,7 +16,7 @@
/datum/chemical_reaction/slime/slimespawn
name = "Slime Spawn"
id = "m_spawn"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/grey
required_other = TRUE
@@ -28,15 +28,15 @@
/datum/chemical_reaction/slime/slimeinaprov
name = "Slime epinephrine"
id = "m_inaprov"
- results = list("epinephrine" = 3)
- required_reagents = list("water" = 5)
+ results = list(/datum/reagent/medicine/epinephrine = 3)
+ required_reagents = list(/datum/reagent/water = 5)
required_other = TRUE
required_container = /obj/item/slime_extract/grey
/datum/chemical_reaction/slime/slimemonkey
name = "Slime Monkey"
id = "m_monkey"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/grey
required_other = TRUE
@@ -48,25 +48,25 @@
//Green
/datum/chemical_reaction/slime/slimemutate
name = "Mutation Toxin"
- id = "slimetoxin"
- results = list("slime_toxin" = 1)
- required_reagents = list("plasma" = 1)
+ id = /datum/reagent/slime_toxin
+ results = list(/datum/reagent/slime_toxin = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_other = TRUE
required_container = /obj/item/slime_extract/green
/datum/chemical_reaction/slime/slimehuman
name = "Human Mutation Toxin"
- id = "humanmuttoxin"
- results = list("stablemutationtoxin" = 1)
- required_reagents = list("blood" = 1)
+ id = /datum/reagent/mutationtoxin
+ results = list(/datum/reagent/mutationtoxin = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_other = TRUE
required_container = /obj/item/slime_extract/green
/datum/chemical_reaction/slime/slimelizard
name = "Lizard Mutation Toxin"
- id = "lizardmuttoxin"
- results = list("lizardmutationtoxin" = 1)
- required_reagents = list("radium" = 1)
+ id = /datum/reagent/mutationtoxin/lizard
+ results = list(/datum/reagent/mutationtoxin/lizard = 1)
+ required_reagents = list(/datum/reagent/radium = 1)
required_other = TRUE
required_container = /obj/item/slime_extract/green
@@ -74,7 +74,7 @@
/datum/chemical_reaction/slime/slimemetal
name = "Slime Metal"
id = "m_metal"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/metal
required_other = TRUE
@@ -87,7 +87,7 @@
/datum/chemical_reaction/slime/slimeglass
name = "Slime Glass"
id = "m_glass"
- required_reagents = list("water" = 1)
+ required_reagents = list(/datum/reagent/water = 1)
required_container = /obj/item/slime_extract/metal
required_other = TRUE
@@ -101,7 +101,7 @@
/datum/chemical_reaction/slime/slimemobspawn
name = "Slime Crit"
id = "m_tele"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/gold
required_other = TRUE
deletes_extract = FALSE //we do delete, but we don't do so instantly
@@ -121,7 +121,7 @@
/datum/chemical_reaction/slime/slimemobspawn/lesser
name = "Slime Crit Lesser"
id = "m_tele3"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
/datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("The slime extract begins to vibrate violently!")
@@ -130,7 +130,7 @@
/datum/chemical_reaction/slime/slimemobspawn/friendly
name = "Slime Crit Friendly"
id = "m_tele5"
- required_reagents = list("water" = 1)
+ required_reagents = list(/datum/reagent/water = 1)
/datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("The slime extract begins to vibrate adorably!")
@@ -140,7 +140,7 @@
/datum/chemical_reaction/slime/slimebork
name = "Slime Bork"
id = "m_tele2"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/silver
required_other = TRUE
@@ -172,7 +172,7 @@
/datum/chemical_reaction/slime/slimebork/drinks
name = "Slime Bork 2"
id = "m_tele4"
- required_reagents = list("water" = 1)
+ required_reagents = list(/datum/reagent/water = 1)
/datum/chemical_reaction/slime/slimebork/drinks/getbork()
return get_random_drink()
@@ -181,15 +181,15 @@
/datum/chemical_reaction/slime/slimefrost
name = "Slime Frost Oil"
id = "m_frostoil"
- results = list("frostoil" = 10)
- required_reagents = list("plasma" = 1)
+ results = list(/datum/reagent/consumable/frostoil = 10)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/blue
required_other = TRUE
/datum/chemical_reaction/slime/slimestabilizer
name = "Slime Stabilizer"
id = "m_slimestabilizer"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/blue
required_other = TRUE
@@ -200,8 +200,8 @@
/datum/chemical_reaction/slime/slimefoam
name = "Slime Foam"
id = "m_foam"
- results = list("fluorosurfactant" = 20, "water" = 20)
- required_reagents = list("water" = 5)
+ results = list(/datum/reagent/fluorosurfactant = 20, /datum/reagent/water = 20)
+ required_reagents = list(/datum/reagent/water = 5)
required_container = /obj/item/slime_extract/blue
required_other = TRUE
@@ -209,7 +209,7 @@
/datum/chemical_reaction/slime/slimefreeze
name = "Slime Freeze"
id = "m_freeze"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/darkblue
required_other = TRUE
deletes_extract = FALSE
@@ -233,7 +233,7 @@
/datum/chemical_reaction/slime/slimefireproof
name = "Slime Fireproof"
id = "m_fireproof"
- required_reagents = list("water" = 1)
+ required_reagents = list(/datum/reagent/water = 1)
required_container = /obj/item/slime_extract/darkblue
required_other = TRUE
@@ -245,15 +245,15 @@
/datum/chemical_reaction/slime/slimecasp
name = "Slime Capsaicin Oil"
id = "m_capsaicinoil"
- results = list("capsaicin" = 10)
- required_reagents = list("blood" = 1)
+ results = list(/datum/reagent/consumable/capsaicin = 10)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/orange
required_other = TRUE
/datum/chemical_reaction/slime/slimefire
name = "Slime fire"
id = "m_fire"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/orange
required_other = TRUE
deletes_extract = FALSE
@@ -277,8 +277,8 @@
/datum/chemical_reaction/slime/slimesmoke
name = "Slime Smoke"
id = "m_smoke"
- results = list("phosphorus" = 10, "potassium" = 10, "sugar" = 10)
- required_reagents = list("water" = 5)
+ results = list(/datum/reagent/phosphorus = 10, /datum/reagent/potassium = 10, /datum/reagent/consumable/sugar = 10)
+ required_reagents = list(/datum/reagent/water = 5)
required_container = /obj/item/slime_extract/orange
required_other = TRUE
@@ -286,7 +286,7 @@
/datum/chemical_reaction/slime/slimeoverload
name = "Slime EMP"
id = "m_emp"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/yellow
required_other = TRUE
@@ -297,7 +297,7 @@
/datum/chemical_reaction/slime/slimecell
name = "Slime Powercell"
id = "m_cell"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/yellow
required_other = TRUE
@@ -308,7 +308,7 @@
/datum/chemical_reaction/slime/slimeglow
name = "Slime Glow"
id = "m_glow"
- required_reagents = list("water" = 1)
+ required_reagents = list(/datum/reagent/water = 1)
required_container = /obj/item/slime_extract/yellow
required_other = TRUE
@@ -322,7 +322,7 @@
/datum/chemical_reaction/slime/slimepsteroid
name = "Slime Steroid"
id = "m_steroid"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/purple
required_other = TRUE
@@ -333,8 +333,8 @@
/datum/chemical_reaction/slime/slimeregen
name = "Slime Regen"
id = "m_regen"
- results = list("regen_jelly" = 5)
- required_reagents = list("blood" = 1)
+ results = list(/datum/reagent/medicine/regen_jelly = 5)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/purple
required_other = TRUE
@@ -342,7 +342,7 @@
/datum/chemical_reaction/slime/slimeplasma
name = "Slime Plasma"
id = "m_plasma"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/darkpurple
required_other = TRUE
@@ -354,7 +354,7 @@
/datum/chemical_reaction/slime/slimemutator
name = "Slime Mutator"
id = "m_slimemutator"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/red
required_other = TRUE
@@ -365,7 +365,7 @@
/datum/chemical_reaction/slime/slimebloodlust
name = "Bloodlust"
id = "m_bloodlust"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/red
required_other = TRUE
@@ -383,7 +383,7 @@
/datum/chemical_reaction/slime/slimespeed
name = "Slime Speed"
id = "m_speed"
- required_reagents = list("water" = 1)
+ required_reagents = list(/datum/reagent/water = 1)
required_container = /obj/item/slime_extract/red
required_other = TRUE
@@ -395,7 +395,7 @@
/datum/chemical_reaction/slime/docility
name = "Docility Potion"
id = "m_potion"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/pink
required_other = TRUE
@@ -406,7 +406,7 @@
/datum/chemical_reaction/slime/gender
name = "Gender Potion"
id = "m_gender"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/pink
required_other = TRUE
@@ -417,9 +417,9 @@
//Black
/datum/chemical_reaction/slime/slimemutate2
name = "Advanced Mutation Toxin"
- id = "mutationtoxin2"
- results = list("amutationtoxin" = 1)
- required_reagents = list("plasma" = 1)
+ id = /datum/reagent/aslimetoxin
+ results = list(/datum/reagent/aslimetoxin = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_other = TRUE
required_container = /obj/item/slime_extract/black
@@ -427,7 +427,7 @@
/datum/chemical_reaction/slime/slimeexplosion
name = "Slime Explosion"
id = "m_explosion"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/oil
required_other = TRUE
deletes_extract = FALSE
@@ -456,8 +456,8 @@
/datum/chemical_reaction/slime/slimecornoil
name = "Slime Corn Oil"
id = "m_cornoil"
- results = list("cornoil" = 10)
- required_reagents = list("blood" = 1)
+ results = list(/datum/reagent/consumable/cornoil = 10)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/oil
required_other = TRUE
@@ -466,7 +466,7 @@
name = "Slime Potion 2"
id = "m_potion2"
required_container = /obj/item/slime_extract/lightpink
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_other = TRUE
/datum/chemical_reaction/slime/slimepotion2/on_reaction(datum/reagents/holder)
@@ -477,7 +477,7 @@
name = "Renaming Potion"
id = "m_renaming_potion"
required_container = /obj/item/slime_extract/lightpink
- required_reagents = list("water" = 1)
+ required_reagents = list(/datum/reagent/water = 1)
required_other = TRUE
/datum/chemical_reaction/slime/renaming/on_reaction(datum/reagents/holder)
@@ -489,7 +489,7 @@
/datum/chemical_reaction/slime/adamantine
name = "Adamantine"
id = "adamantine"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/adamantine
required_other = TRUE
@@ -501,7 +501,7 @@
/datum/chemical_reaction/slime/slimefloor2
name = "Bluespace Floor"
id = "m_floor2"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/bluespace
required_other = TRUE
@@ -513,7 +513,7 @@
/datum/chemical_reaction/slime/slimecrystal
name = "Slime Crystal"
id = "m_crystal"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/bluespace
required_other = TRUE
@@ -525,7 +525,7 @@
/datum/chemical_reaction/slime/slimeradio
name = "Slime Radio"
id = "m_radio"
- required_reagents = list("water" = 1)
+ required_reagents = list(/datum/reagent/water = 1)
required_container = /obj/item/slime_extract/bluespace
required_other = TRUE
@@ -537,7 +537,7 @@
/datum/chemical_reaction/slime/slimepsteroid2
name = "Slime Steroid 2"
id = "m_steroid2"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/cerulean
required_other = TRUE
@@ -548,7 +548,7 @@
/datum/chemical_reaction/slime/slime_territory
name = "Slime Territory"
id = "s_territory"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/cerulean
required_other = TRUE
@@ -560,7 +560,7 @@
/datum/chemical_reaction/slime/slimestop
name = "Slime Stop"
id = "m_stop"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/sepia
required_other = TRUE
@@ -573,7 +573,7 @@
/datum/chemical_reaction/slime/slimecamera
name = "Slime Camera"
id = "m_camera"
- required_reagents = list("water" = 1)
+ required_reagents = list(/datum/reagent/water = 1)
required_container = /obj/item/slime_extract/sepia
required_other = TRUE
@@ -585,7 +585,7 @@
/datum/chemical_reaction/slime/slimefloor
name = "Sepia Floor"
id = "m_floor"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/sepia
required_other = TRUE
@@ -597,7 +597,7 @@
/datum/chemical_reaction/slime/slimepaint
name = "Slime Paint"
id = "s_paint"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_container = /obj/item/slime_extract/pyrite
required_other = TRUE
@@ -609,7 +609,7 @@
/datum/chemical_reaction/slime/slimecrayon
name = "Slime Crayon"
id = "s_crayon"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/pyrite
required_other = TRUE
@@ -622,7 +622,7 @@
/datum/chemical_reaction/slime/slimeRNG
name = "Random Core"
id = "slimerng"
- required_reagents = list("plasma" = 1)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1)
required_other = TRUE
required_container = /obj/item/slime_extract/rainbow
@@ -642,7 +642,7 @@
/datum/chemical_reaction/slime/slimebomb
name = "Clusterblorble"
id = "slimebomb"
- required_reagents = list("slimejelly" = 1)
+ required_reagents = list(/datum/reagent/toxin/slimejelly = 1)
required_other = TRUE
required_container = /obj/item/slime_extract/rainbow
@@ -658,7 +658,7 @@
/datum/chemical_reaction/slime/slime_transfer
name = "Transfer Potion"
id = "slimetransfer"
- required_reagents = list("blood" = 1)
+ required_reagents = list(/datum/reagent/blood = 1)
required_other = TRUE
required_container = /obj/item/slime_extract/rainbow
@@ -669,7 +669,7 @@
/datum/chemical_reaction/slime/flight_potion
name = "Flight Potion"
id = "flightpotion"
- required_reagents = list("holywater" = 5, "uranium" = 5)
+ required_reagents = list(/datum/reagent/water/holywater = 5, /datum/reagent/uranium = 5)
required_other = TRUE
required_container = /obj/item/slime_extract/rainbow
diff --git a/code/modules/reagents/chemistry/recipes/special.dm b/code/modules/reagents/chemistry/recipes/special.dm
index 08d07b8a52..5ad9728b22 100644
--- a/code/modules/reagents/chemistry/recipes/special.dm
+++ b/code/modules/reagents/chemistry/recipes/special.dm
@@ -123,11 +123,23 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related
/datum/chemical_reaction/randomized/proc/LoadOldRecipe(recipe_data)
created = text2num(recipe_data["timestamp"])
- required_reagents = SANITIZE_LIST(recipe_data["required_reagents"])
- required_catalysts = SANITIZE_LIST(recipe_data["required_catalysts"])
+ var/req_reag = unwrap_reagent_list(recipe_data["required_reagents"])
+ if(!req_reag)
+ return FALSE
+ required_reagents = req_reag
+
+ var/req_catalysts = unwrap_reagent_list(recipe_data["required_catalysts"])
+ if(!req_catalysts)
+ return FALSE
+ required_catalysts = req_catalysts
+
required_temp = recipe_data["required_temp"]
is_cold_recipe = recipe_data["is_cold_recipe"]
- results = SANITIZE_LIST(recipe_data["results"])
+
+ var/temp_results = unwrap_reagent_list(recipe_data["results"])
+ if(!temp_results)
+ return FALSE
+ results = temp_results
var/containerpath = text2path(recipe_data["required_container"])
if(!containerpath)
return FALSE
@@ -136,13 +148,13 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related
/datum/chemical_reaction/randomized/secret_sauce
name = "secret sauce creation"
- id = "secretsauce"
+ id = /datum/reagent/consumable/secretsauce
persistent = TRUE
persistence_period = 7 //Reset every week
randomize_container = TRUE
possible_containers = list(/obj/item/reagent_containers/glass/bucket) //easy way to ensure no common conflicts
randomize_req_temperature = TRUE
- results = list("secret_sauce" =1)
+ results = list(/datum/reagent/consumable/secretsauce =1)
/datum/chemical_reaction/randomized/secret_sauce/GetPossibleReagents(kind)
switch(kind)
diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm
index 726175a6c6..d9f28d2135 100644
--- a/code/modules/reagents/chemistry/recipes/toxins.dm
+++ b/code/modules/reagents/chemistry/recipes/toxins.dm
@@ -1,128 +1,128 @@
/datum/chemical_reaction/formaldehyde
name = "formaldehyde"
- id = "Formaldehyde"
- results = list("formaldehyde" = 3)
- required_reagents = list("ethanol" = 1, "oxygen" = 1, "silver" = 1)
+ id = /datum/reagent/toxin/formaldehyde
+ results = list(/datum/reagent/toxin/formaldehyde = 3)
+ required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1, /datum/reagent/silver = 1)
required_temp = 420
/datum/chemical_reaction/fentanyl
name = "fentanyl"
- id = "fentanyl"
- results = list("fentanyl" = 1)
- required_reagents = list("space_drugs" = 1)
+ id = /datum/reagent/toxin/fentanyl
+ results = list(/datum/reagent/toxin/fentanyl = 1)
+ required_reagents = list(/datum/reagent/drug/space_drugs = 1)
required_temp = 674
/datum/chemical_reaction/cyanide
name = "Cyanide"
- id = "cyanide"
- results = list("cyanide" = 3)
- required_reagents = list("oil" = 1, "ammonia" = 1, "oxygen" = 1)
+ id = /datum/reagent/toxin/cyanide
+ results = list(/datum/reagent/toxin/cyanide = 3)
+ required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/ammonia = 1, /datum/reagent/oxygen = 1)
required_temp = 380
/datum/chemical_reaction/itching_powder
name = "Itching Powder"
- id = "itching_powder"
- results = list("itching_powder" = 3)
- required_reagents = list("welding_fuel" = 1, "ammonia" = 1, "charcoal" = 1)
+ id = /datum/reagent/toxin/itching_powder
+ results = list(/datum/reagent/toxin/itching_powder = 3)
+ required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/ammonia = 1, /datum/reagent/medicine/charcoal = 1)
/datum/chemical_reaction/facid
name = "Fluorosulfuric acid"
- id = "facid"
- results = list("facid" = 4)
- required_reagents = list("sacid" = 1, "fluorine" = 1, "hydrogen" = 1, "potassium" = 1)
+ id = /datum/reagent/toxin/acid/fluacid
+ results = list(/datum/reagent/toxin/acid/fluacid = 4)
+ required_reagents = list(/datum/reagent/toxin/acid = 1, /datum/reagent/fluorine = 1, /datum/reagent/hydrogen = 1, /datum/reagent/potassium = 1)
required_temp = 380
/datum/chemical_reaction/sulfonal
name = "sulfonal"
- id = "sulfonal"
- results = list("sulfonal" = 3)
- required_reagents = list("acetone" = 1, "diethylamine" = 1, "sulfur" = 1)
+ id = /datum/reagent/toxin/sulfonal
+ results = list(/datum/reagent/toxin/sulfonal = 3)
+ required_reagents = list(/datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/sulfur = 1)
/datum/chemical_reaction/lipolicide
name = "lipolicide"
- id = "lipolicide"
- results = list("lipolicide" = 3)
- required_reagents = list("mercury" = 1, "diethylamine" = 1, "ephedrine" = 1)
+ id = /datum/reagent/toxin/lipolicide
+ results = list(/datum/reagent/toxin/lipolicide = 3)
+ required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/diethylamine = 1, /datum/reagent/medicine/ephedrine = 1)
/datum/chemical_reaction/mutagen
name = "Unstable mutagen"
- id = "mutagen"
- results = list("mutagen" = 3)
- required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1)
+ id = /datum/reagent/toxin/mutagen
+ results = list(/datum/reagent/toxin/mutagen = 3)
+ required_reagents = list(/datum/reagent/radium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/chlorine = 1)
/datum/chemical_reaction/lexorin
name = "Lexorin"
- id = "lexorin"
- results = list("lexorin" = 3)
- required_reagents = list("plasma" = 1, "hydrogen" = 1, "oxygen" = 1)
+ id = /datum/reagent/toxin/lexorin
+ results = list(/datum/reagent/toxin/lexorin = 3)
+ required_reagents = list(/datum/reagent/toxin/plasma = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1)
/datum/chemical_reaction/chloralhydrate
name = "Chloral Hydrate"
- id = "chloralhydrate"
- results = list("chloralhydrate" = 1)
- required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1)
+ id = /datum/reagent/toxin/chloralhydrate
+ results = list(/datum/reagent/toxin/chloralhydrate = 1)
+ required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/chlorine = 3, /datum/reagent/water = 1)
/datum/chemical_reaction/mutetoxin //i'll just fit this in here snugly between other unfun chemicals :v
name = "Mute Toxin"
- id = "mutetoxin"
- results = list("mutetoxin" = 2)
- required_reagents = list("uranium" = 2, "water" = 1, "carbon" = 1)
+ id = /datum/reagent/toxin/mutetoxin
+ results = list(/datum/reagent/toxin/mutetoxin = 2)
+ required_reagents = list(/datum/reagent/uranium = 2, /datum/reagent/water = 1, /datum/reagent/carbon = 1)
/datum/chemical_reaction/zombiepowder
name = "Zombie Powder"
- id = "zombiepowder"
- results = list("zombiepowder" = 2)
- required_reagents = list("carpotoxin" = 5, "morphine" = 5, "copper" = 5)
-
+ id = /datum/reagent/toxin/zombiepowder
+ results = list(/datum/reagent/toxin/zombiepowder = 2)
+ required_reagents = list(/datum/reagent/toxin/carpotoxin = 5, /datum/reagent/medicine/morphine = 5, /datum/reagent/copper = 5)
+
/datum/chemical_reaction/ghoulpowder
name = "Ghoul Powder"
- id = "ghoulpowder"
- results = list("ghoulpowder" = 2)
- required_reagents = list("zombiepowder" = 1, "epinephrine" = 1)
+ id = /datum/reagent/toxin/ghoulpowder
+ results = list(/datum/reagent/toxin/ghoulpowder = 2)
+ required_reagents = list(/datum/reagent/toxin/zombiepowder = 1, /datum/reagent/medicine/epinephrine = 1)
/datum/chemical_reaction/mindbreaker
name = "Mindbreaker Toxin"
- id = "mindbreaker"
- results = list("mindbreaker" = 5)
- required_reagents = list("silicon" = 1, "hydrogen" = 1, "charcoal" = 1)
+ id = /datum/reagent/toxin/mindbreaker
+ results = list(/datum/reagent/toxin/mindbreaker = 5)
+ required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/hydrogen = 1, /datum/reagent/medicine/charcoal = 1)
/datum/chemical_reaction/heparin
name = "Heparin"
- id = "Heparin"
- results = list("heparin" = 4)
- required_reagents = list("formaldehyde" = 1, "sodium" = 1, "chlorine" = 1, "lithium" = 1)
+ id = /datum/reagent/toxin/heparin
+ results = list(/datum/reagent/toxin/heparin = 4)
+ required_reagents = list(/datum/reagent/toxin/formaldehyde = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1, /datum/reagent/lithium = 1)
mix_message = "The mixture thins and loses all color."
/datum/chemical_reaction/rotatium
name = "Rotatium"
- id = "Rotatium"
- results = list("rotatium" = 3)
- required_reagents = list("mindbreaker" = 1, "teslium" = 1, "fentanyl" = 1)
+ id = /datum/reagent/toxin/rotatium
+ results = list(/datum/reagent/toxin/rotatium = 3)
+ required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/teslium = 1, /datum/reagent/toxin/fentanyl = 1)
mix_message = "After sparks, fire, and the smell of mindbreaker, the mix is constantly spinning with no stop in sight."
/datum/chemical_reaction/skewium
name = "Skewium"
- id = "Skewium"
- results = list("skewium" = 5)
- required_reagents = list("rotatium" = 2, "plasma" = 2, "sacid" = 1)
+ id = /datum/reagent/toxin/skewium
+ results = list(/datum/reagent/toxin/skewium = 5)
+ required_reagents = list(/datum/reagent/toxin/rotatium = 2, /datum/reagent/toxin/plasma = 2, /datum/reagent/toxin/acid = 1)
mix_message = "Wow! it turns out if you mix rotatium with some plasma and sulphuric acid, it gets even worse!"
/datum/chemical_reaction/anacea
name = "Anacea"
- id = "anacea"
- results = list("anacea" = 3)
- required_reagents = list("haloperidol" = 1, "impedrezene" = 1, "radium" = 1)
+ id = /datum/reagent/toxin/anacea
+ results = list(/datum/reagent/toxin/anacea = 3)
+ required_reagents = list(/datum/reagent/medicine/haloperidol = 1, /datum/reagent/impedrezene = 1, /datum/reagent/radium = 1)
/datum/chemical_reaction/mimesbane
name = "Mime's Bane"
- id = "mimesbane"
- results = list("mimesbane" = 3)
- required_reagents = list("radium" = 1, "mutetoxin" = 1, "nothing" = 1)
+ id = /datum/reagent/toxin/mimesbane
+ results = list(/datum/reagent/toxin/mimesbane = 3)
+ required_reagents = list(/datum/reagent/radium = 1, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1)
/datum/chemical_reaction/bonehurtingjuice
name = "Bone Hurting Juice"
- id = "bonehurtingjuice"
- results = list("bonehurtingjuice" = 5)
- required_reagents = list("mutagen" = 1, "itching_powder" = 3, "milk" = 1)
+ id = /datum/reagent/toxin/bonehurtingjuice
+ results = list(/datum/reagent/toxin/bonehurtingjuice = 5)
+ required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/toxin/itching_powder = 3, /datum/reagent/consumable/milk = 1)
mix_message = "The mixture suddenly becomes clear and looks a lot like water. You feel a strong urge to drink it."
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 3bb6b50938..d869e086a5 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -30,7 +30,7 @@
if(spawned_disease)
var/datum/disease/F = new spawned_disease()
var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY","viruses"= list(F))
- reagents.add_reagent("blood", disease_amount, data)
+ reagents.add_reagent(/datum/reagent/blood, disease_amount, data)
add_initial_reagents()
/obj/item/reagent_containers/examine(mob/user)
@@ -127,7 +127,7 @@
target.visible_message("[M] has been splashed with something!", \
"[M] has been splashed with something!")
for(var/datum/reagent/A in reagents.reagent_list)
- R += A.id + " ("
+ R += A.type + " ("
R += num2text(A.volume) + "),"
if(thrownby)
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index 61449fc153..2f5fb067ea 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -13,12 +13,12 @@
/obj/item/reagent_containers/blood/Initialize()
. = ..()
if(blood_type != null)
- reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
+ reagents.add_reagent(/datum/reagent/blood, 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
update_icon()
/obj/item/reagent_containers/blood/on_reagent_change(changetype)
if(reagents)
- var/datum/reagent/blood/B = reagents.has_reagent("blood")
+ var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood)
if(B && B.data && B.data["blood_type"])
blood_type = B.data["blood_type"]
color_to_apply = bloodtype_to_color(blood_type)
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index 94ad5fdb2c..980e823a82 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -26,7 +26,8 @@ Borg Hypospray
var/bypass_protection = 0 //If the hypospray can go through armor or thick material
var/list/datum/reagents/reagent_list = list()
- var/list/reagent_ids = list("dexalin", "kelotane", "bicaridine", "antitoxin", "epinephrine", "spaceacillin", "salglu_solution", "insulin")
+ var/list/reagent_ids = list(/datum/reagent/medicine/dexalin, /datum/reagent/medicine/kelotane, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/antitoxin,
+ /datum/reagent/medicine/epinephrine, /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution, /datum/reagent/medicine/insulin)
var/accepts_reagent_upgrades = TRUE //If upgrades can increase number of reagents dispensed.
var/list/modes = list() //Basically the inverse of reagent_ids. Instead of having numbers as "keys" and strings as values it has strings as keys and numbers as values.
//Used as list for input() in shakers.
@@ -138,19 +139,19 @@ Borg Hypospray
/obj/item/reagent_containers/borghypo/hacked
icon_state = "borghypo_s"
- reagent_ids = list ("facid", "mutetoxin", "cyanide", "sodium_thiopental", "heparin", "lexorin")
+ reagent_ids = list (/datum/reagent/toxin/acid, /datum/reagent/toxin/mutetoxin, /datum/reagent/toxin/cyanide, /datum/reagent/toxin/sodium_thiopental, /datum/reagent/toxin/heparin, /datum/reagent/toxin/lexorin)
accepts_reagent_upgrades = FALSE
/obj/item/reagent_containers/borghypo/clown
name = "laughter injector"
desc = "Keeps the crew happy and productive!"
- reagent_ids = list("laughter")
+ reagent_ids = list(/datum/reagent/consumable/laughter)
accepts_reagent_upgrades = FALSE
/obj/item/reagent_containers/borghypo/clown/hacked
name = "laughter injector"
desc = "Keeps the crew so happy they don't work!"
- reagent_ids = list("superlaughter")
+ reagent_ids = list(/datum/reagent/consumable/superlaughter)
accepts_reagent_upgrades = FALSE
/obj/item/reagent_containers/borghypo/syndicate
@@ -159,7 +160,7 @@ Borg Hypospray
icon_state = "borghypo_s"
charge_cost = 20
recharge_time = 2
- reagent_ids = list("syndicate_nanites", "potass_iodide", "morphine", "insulin")
+ reagent_ids = list(/datum/reagent/medicine/syndicate_nanites, /datum/reagent/medicine/potass_iodide, /datum/reagent/medicine/morphine, /datum/reagent/medicine/insulin)
bypass_protection = 1
accepts_reagent_upgrades = FALSE
@@ -175,7 +176,14 @@ Borg Shaker
charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
recharge_time = 3
accepts_reagent_upgrades = FALSE
- reagent_ids = list("beer", "orangejuice", "grenadine", "limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "whiskey", "vodka", "rum", "gin", "tequila", "vermouth", "wine", "kahlua", "cognac", "ale", "milk", "coffee", "banana", "lemonjuice")
+ reagent_ids = list(/datum/reagent/consumable/ethanol/beer, /datum/reagent/consumable/orangejuice, /datum/reagent/consumable/grenadine,
+ /datum/reagent/consumable/limejuice, /datum/reagent/consumable/tomatojuice, /datum/reagent/consumable/space_cola,
+ /datum/reagent/consumable/tonic, /datum/reagent/consumable/sodawater, /datum/reagent/consumable/ice,
+ /datum/reagent/consumable/cream, /datum/reagent/consumable/ethanol/whiskey, /datum/reagent/consumable/ethanol/vodka,
+ /datum/reagent/consumable/ethanol/rum, /datum/reagent/consumable/ethanol/gin, /datum/reagent/consumable/ethanol/tequila,
+ /datum/reagent/consumable/ethanol/vermouth, /datum/reagent/consumable/ethanol/wine, /datum/reagent/consumable/ethanol/kahlua,
+ /datum/reagent/consumable/ethanol/cognac, /datum/reagent/consumable/ethanol/ale, /datum/reagent/consumable/milk,
+ /datum/reagent/consumable/coffee, /datum/reagent/consumable/banana, /datum/reagent/consumable/lemonjuice)
/obj/item/reagent_containers/borghypo/borgshaker/attack(mob/M, mob/user)
return //Can't inject stuff with a shaker, can we? //not with that attitude
@@ -230,21 +238,24 @@ Borg Shaker
charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
recharge_time = 3
accepts_reagent_upgrades = FALSE
- reagent_ids = list("fakebeer", "fernet")
+ reagent_ids = list(/datum/reagent/toxin/fakebeer, /datum/reagent/consumable/ethanol/fernet)
/obj/item/reagent_containers/borghypo/peace
name = "Peace Hypospray"
- reagent_ids = list("dizzysolution", "tiresolution", "synthpax", "insulin")
+
+ reagent_ids = list(/datum/reagent/peaceborg_confuse, /datum/reagent/peaceborg_tire, /datum/reagent/pax/peaceborg, /datum/reagent/medicine/insulin)
accepts_reagent_upgrades = FALSE
/obj/item/reagent_containers/borghypo/peace/hacked
desc = "Everything's peaceful in death!"
icon_state = "borghypo_s"
- reagent_ids = list("dizzysolution", "tiresolution", "synthpax", "tirizene", "sulfonal", "sodium_thiopental", "cyanide", "fentanyl")
+ reagent_ids = list(/datum/reagent/peaceborg_confuse, /datum/reagent/peaceborg_tire, /datum/reagent/pax/peaceborg,
+ /datum/reagent/toxin/staminatoxin,/datum/reagent/toxin/sulfonal,/datum/reagent/toxin/sodium_thiopental,
+ /datum/reagent/toxin/cyanide,/datum/reagent/toxin/fentanyl)
accepts_reagent_upgrades = FALSE
/obj/item/reagent_containers/borghypo/epi
name = "Stabilizer injector"
desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients."
- reagent_ids = list("epinephrine", "insulin")
+ reagent_ids = list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/insulin)
accepts_reagent_upgrades = FALSE
diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm
index 0ee131bc14..c05f4f3e78 100644
--- a/code/modules/reagents/reagent_containers/bottle.dm
+++ b/code/modules/reagents/reagent_containers/bottle.dm
@@ -43,96 +43,96 @@
/obj/item/reagent_containers/glass/bottle/epinephrine
name = "epinephrine bottle"
desc = "A small bottle. Contains epinephrine - used to stabilize patients."
- list_reagents = list("epinephrine" = 30)
+ list_reagents = list(/datum/reagent/medicine/epinephrine = 30)
/obj/item/reagent_containers/glass/bottle/toxin
name = "toxin bottle"
desc = "A small bottle of toxins. Do not drink, it is poisonous."
- list_reagents = list("toxin" = 30)
+ list_reagents = list(/datum/reagent/toxin = 30)
/obj/item/reagent_containers/glass/bottle/cyanide
name = "cyanide bottle"
desc = "A small bottle of cyanide. Bitter almonds?"
- list_reagents = list("cyanide" = 30)
+ list_reagents = list(/datum/reagent/toxin/cyanide = 30)
/obj/item/reagent_containers/glass/bottle/spewium
name = "spewium bottle"
desc = "A small bottle of spewium."
- list_reagents = list("spewium" = 30)
+ list_reagents = list(/datum/reagent/toxin/spewium = 30)
/obj/item/reagent_containers/glass/bottle/morphine
name = "morphine bottle"
desc = "A small bottle of morphine."
icon = 'icons/obj/chemical.dmi'
- list_reagents = list("morphine" = 30)
+ list_reagents = list(/datum/reagent/medicine/morphine = 30)
/obj/item/reagent_containers/glass/bottle/chloralhydrate
name = "Chloral Hydrate Bottle"
desc = "A small bottle of Choral Hydrate. Mickey's Favorite!"
icon_state = "bottle20"
- list_reagents = list("chloralhydrate" = 15)
+ list_reagents = list(/datum/reagent/toxin/chloralhydrate = 15)
/obj/item/reagent_containers/glass/bottle/charcoal
name = "charcoal bottle"
desc = "A small bottle of charcoal, which removes toxins and other chemicals from the bloodstream."
- list_reagents = list("charcoal" = 30)
+ list_reagents = list(/datum/reagent/medicine/charcoal = 30)
/obj/item/reagent_containers/glass/bottle/cryoxadone
name = "cryoxadone bottle"
desc = "A small bottle of cryoxadone, heals most types of damage when used in extremely cold enviornments."
- list_reagents = list("cryoxadone" = 30)
+ list_reagents = list(/datum/reagent/medicine/cryoxadone = 30)
/obj/item/reagent_containers/glass/bottle/mutagen
name = "unstable mutagen bottle"
desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact."
- list_reagents = list("mutagen" = 30)
+ list_reagents = list(/datum/reagent/toxin/mutagen = 30)
/obj/item/reagent_containers/glass/bottle/plasma
name = "liquid plasma bottle"
desc = "A small bottle of liquid plasma. Extremely toxic and reacts with micro-organisms inside blood."
- list_reagents = list("plasma" = 30)
+ list_reagents = list(/datum/reagent/toxin/plasma = 30)
/obj/item/reagent_containers/glass/bottle/synaptizine
name = "synaptizine bottle"
desc = "A small bottle of synaptizine."
- list_reagents = list("synaptizine" = 30)
+ list_reagents = list(/datum/reagent/medicine/synaptizine = 30)
/obj/item/reagent_containers/glass/bottle/formaldehyde
name = "formaldehyde bottle"
desc = "A small bottle of formaldehyde."
- list_reagents = list("formaldehyde" = 30)
+ list_reagents = list(/datum/reagent/toxin/formaldehyde = 30)
/obj/item/reagent_containers/glass/bottle/ammonia
name = "ammonia bottle"
desc = "A small bottle of ammonia."
- list_reagents = list("ammonia" = 30)
+ list_reagents = list(/datum/reagent/ammonia = 30)
/obj/item/reagent_containers/glass/bottle/diethylamine
name = "diethylamine bottle"
desc = "A small bottle of diethylamine."
- list_reagents = list("diethylamine" = 30)
+ list_reagents = list(/datum/reagent/diethylamine = 30)
/obj/item/reagent_containers/glass/bottle/facid
name = "Fluorosulfuric Acid Bottle"
desc = "A small bottle. Contains a small amount of fluorosulfuric acid."
- list_reagents = list("facid" = 30)
+ list_reagents = list(/datum/reagent/toxin/acid/fluacid = 30)
/obj/item/reagent_containers/glass/bottle/adminordrazine
name = "Adminordrazine Bottle"
desc = "A small bottle. Contains the liquid essence of the gods."
icon = 'icons/obj/drinks.dmi'
icon_state = "holyflask"
- list_reagents = list("adminordrazine" = 30)
+ list_reagents = list(/datum/reagent/medicine/adminordrazine = 30)
/obj/item/reagent_containers/glass/bottle/capsaicin
name = "Capsaicin Bottle"
desc = "A small bottle. Contains hot sauce."
- list_reagents = list("capsaicin" = 30)
+ list_reagents = list(/datum/reagent/consumable/capsaicin = 30)
/obj/item/reagent_containers/glass/bottle/frostoil
name = "Frost Oil Bottle"
desc = "A small bottle. Contains cold sauce."
- list_reagents = list("frostoil" = 30)
+ list_reagents = list(/datum/reagent/consumable/frostoil = 30)
/obj/item/reagent_containers/glass/bottle/traitor
name = "syndicate bottle"
@@ -142,94 +142,95 @@
/obj/item/reagent_containers/glass/bottle/traitor/Initialize()
. = ..()
- extra_reagent = pick("polonium", "histamine", "formaldehyde", "venom", "fentanyl", "cyanide")
- reagents.add_reagent("[extra_reagent]", 3)
+ extra_reagent = pick(/datum/reagent/toxin/polonium, /datum/reagent/toxin/histamine, /datum/reagent/toxin/formaldehyde,
+ /datum/reagent/toxin/venom, /datum/reagent/toxin/fentanyl, /datum/reagent/toxin/cyanide)
+ reagents.add_reagent(extra_reagent, 3)
/obj/item/reagent_containers/glass/bottle/polonium
name = "polonium bottle"
desc = "A small bottle. Contains Polonium."
- list_reagents = list("polonium" = 30)
+ list_reagents = list(/datum/reagent/toxin/polonium = 30)
/obj/item/reagent_containers/glass/bottle/magillitis
name = "magillitis bottle"
desc = "A small bottle. Contains a serum known only as 'magillitis'."
- list_reagents = list("magillitis" = 5)
+ list_reagents = list(/datum/reagent/magillitis = 5)
/obj/item/reagent_containers/glass/bottle/venom
name = "venom bottle"
desc = "A small bottle. Contains Venom."
- list_reagents = list("venom" = 30)
+ list_reagents = list(/datum/reagent/toxin/venom = 30)
/obj/item/reagent_containers/glass/bottle/fentanyl
name = "fentanyl bottle"
desc = "A small bottle. Contains Fentanyl."
- list_reagents = list("fentanyl" = 30)
+ list_reagents = list(/datum/reagent/toxin/fentanyl = 30)
/obj/item/reagent_containers/glass/bottle/formaldehyde
name = "formaldehyde bottle"
desc = "A small bottle. Contains Formaldehyde."
- list_reagents = list("formaldehyde" = 30)
+ list_reagents = list(/datum/reagent/toxin/formaldehyde = 30)
/obj/item/reagent_containers/glass/bottle/initropidril
name = "initropidril bottle"
desc = "A small bottle. Contains initropidril."
- list_reagents = list("initropidril" = 30)
+ list_reagents = list(/datum/reagent/toxin/initropidril = 30)
/obj/item/reagent_containers/glass/bottle/pancuronium
name = "pancuronium bottle"
desc = "A small bottle. Contains pancuronium."
- list_reagents = list("pancuronium" = 30)
+ list_reagents = list(/datum/reagent/toxin/pancuronium = 30)
/obj/item/reagent_containers/glass/bottle/sodium_thiopental
name = "sodium thiopental bottle"
desc = "A small bottle. Contains sodium thiopental."
- list_reagents = list("sodium_thiopental" = 30)
+ list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 30)
/obj/item/reagent_containers/glass/bottle/coniine
name = "coniine bottle"
desc = "A small bottle. Contains coniine."
- list_reagents = list("coniine" = 30)
+ list_reagents = list(/datum/reagent/toxin/coniine = 30)
/obj/item/reagent_containers/glass/bottle/curare
name = "curare bottle"
desc = "A small bottle. Contains curare."
- list_reagents = list("curare" = 30)
+ list_reagents = list(/datum/reagent/toxin/curare = 30)
/obj/item/reagent_containers/glass/bottle/amanitin
name = "amanitin bottle"
desc = "A small bottle. Contains amanitin."
- list_reagents = list("amanitin" = 30)
+ list_reagents = list(/datum/reagent/toxin/amanitin = 30)
/obj/item/reagent_containers/glass/bottle/histamine
name = "histamine bottle"
desc = "A small bottle. Contains Histamine."
- list_reagents = list("histamine" = 30)
+ list_reagents = list(/datum/reagent/toxin/histamine = 30)
/obj/item/reagent_containers/glass/bottle/diphenhydramine
name = "antihistamine bottle"
desc = "A small bottle of diphenhydramine."
- list_reagents = list("diphenhydramine" = 30)
+ list_reagents = list(/datum/reagent/medicine/diphenhydramine = 30)
/obj/item/reagent_containers/glass/bottle/potass_iodide
name = "anti-radiation bottle"
desc = "A small bottle of potassium iodide."
- list_reagents = list("potass_iodide" = 30)
+ list_reagents = list(/datum/reagent/medicine/potass_iodide = 30)
/obj/item/reagent_containers/glass/bottle/salglu_solution
name = "saline-glucose solution bottle"
desc = "A small bottle of saline-glucose solution."
icon_state = "bottle1"
- list_reagents = list("salglu_solution" = 30)
+ list_reagents = list(/datum/reagent/medicine/salglu_solution = 30)
/obj/item/reagent_containers/glass/bottle/atropine
name = "atropine bottle"
desc = "A small bottle of atropine."
- list_reagents = list("atropine" = 30)
+ list_reagents = list(/datum/reagent/medicine/atropine = 30)
/obj/item/reagent_containers/glass/bottle/romerol
name = "romerol bottle"
desc = "A small bottle of Romerol. The REAL zombie powder."
- list_reagents = list("romerol" = 30)
+ list_reagents = list(/datum/reagent/romerol = 30)
/obj/item/reagent_containers/glass/bottle/random_virus
name = "Experimental disease culture bottle"
@@ -306,128 +307,128 @@
/obj/item/reagent_containers/glass/bottle/tuberculosiscure
name = "BVAK bottle"
desc = "A small bottle containing Bio Virus Antidote Kit."
- list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10)
+ list_reagents = list(/datum/reagent/medicine/atropine = 5, /datum/reagent/medicine/epinephrine = 5, /datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/spaceacillin = 10)
//Oldstation.dmm chemical storage bottles
/obj/item/reagent_containers/glass/bottle/hydrogen
name = "hydrogen bottle"
- list_reagents = list("hydrogen" = 30)
+ list_reagents = list(/datum/reagent/hydrogen = 30)
/obj/item/reagent_containers/glass/bottle/lithium
name = "lithium bottle"
- list_reagents = list("lithium" = 30)
+ list_reagents = list(/datum/reagent/lithium = 30)
/obj/item/reagent_containers/glass/bottle/carbon
name = "carbon bottle"
- list_reagents = list("carbon" = 30)
+ list_reagents = list(/datum/reagent/carbon = 30)
/obj/item/reagent_containers/glass/bottle/nitrogen
name = "nitrogen bottle"
- list_reagents = list("nitrogen" = 30)
+ list_reagents = list(/datum/reagent/nitrogen = 30)
/obj/item/reagent_containers/glass/bottle/oxygen
name = "oxygen bottle"
- list_reagents = list("oxygen" = 30)
+ list_reagents = list(/datum/reagent/oxygen = 30)
/obj/item/reagent_containers/glass/bottle/fluorine
name = "fluorine bottle"
- list_reagents = list("fluorine" = 30)
+ list_reagents = list(/datum/reagent/fluorine = 30)
/obj/item/reagent_containers/glass/bottle/sodium
name = "sodium bottle"
- list_reagents = list("sodium" = 30)
+ list_reagents = list(/datum/reagent/sodium = 30)
/obj/item/reagent_containers/glass/bottle/aluminium
name = "aluminium bottle"
- list_reagents = list("aluminium" = 30)
+ list_reagents = list(/datum/reagent/aluminium = 30)
/obj/item/reagent_containers/glass/bottle/silicon
name = "silicon bottle"
- list_reagents = list("silicon" = 30)
+ list_reagents = list(/datum/reagent/silicon = 30)
/obj/item/reagent_containers/glass/bottle/phosphorus
name = "phosphorus bottle"
- list_reagents = list("phosphorus" = 30)
+ list_reagents = list(/datum/reagent/phosphorus = 30)
/obj/item/reagent_containers/glass/bottle/sulfur
name = "sulfur bottle"
- list_reagents = list("sulfur" = 30)
+ list_reagents = list(/datum/reagent/sulfur = 30)
/obj/item/reagent_containers/glass/bottle/chlorine
name = "chlorine bottle"
- list_reagents = list("chlorine" = 30)
+ list_reagents = list(/datum/reagent/chlorine = 30)
/obj/item/reagent_containers/glass/bottle/potassium
name = "potassium bottle"
- list_reagents = list("potassium" = 30)
+ list_reagents = list(/datum/reagent/potassium = 30)
/obj/item/reagent_containers/glass/bottle/iron
name = "iron bottle"
- list_reagents = list("iron" = 30)
+ list_reagents = list(/datum/reagent/iron = 30)
/obj/item/reagent_containers/glass/bottle/copper
name = "copper bottle"
- list_reagents = list("copper" = 30)
+ list_reagents = list(/datum/reagent/copper = 30)
/obj/item/reagent_containers/glass/bottle/mercury
name = "mercury bottle"
- list_reagents = list("mercury" = 30)
+ list_reagents = list(/datum/reagent/mercury = 30)
/obj/item/reagent_containers/glass/bottle/radium
name = "radium bottle"
- list_reagents = list("radium" = 30)
+ list_reagents = list(/datum/reagent/radium = 30)
/obj/item/reagent_containers/glass/bottle/water
name = "water bottle"
- list_reagents = list("water" = 30)
+ list_reagents = list(/datum/reagent/water = 30)
/obj/item/reagent_containers/glass/bottle/ethanol
name = "ethanol bottle"
- list_reagents = list("ethanol" = 30)
+ list_reagents = list(/datum/reagent/consumable/ethanol = 30)
/obj/item/reagent_containers/glass/bottle/sugar
name = "sugar bottle"
- list_reagents = list("sugar" = 30)
+ list_reagents = list(/datum/reagent/consumable/sugar = 30)
/obj/item/reagent_containers/glass/bottle/sacid
name = "sulphuric acid bottle"
- list_reagents = list("sacid" = 30)
+ list_reagents = list(/datum/reagent/toxin/acid = 30)
/obj/item/reagent_containers/glass/bottle/welding_fuel
name = "welding fuel bottle"
- list_reagents = list("welding_fuel" = 30)
+ list_reagents = list(/datum/reagent/fuel = 30)
/obj/item/reagent_containers/glass/bottle/silver
name = "silver bottle"
- list_reagents = list("silver" = 30)
+ list_reagents = list(/datum/reagent/silver = 30)
/obj/item/reagent_containers/glass/bottle/iodine
name = "iodine bottle"
- list_reagents = list("iodine" = 30)
+ list_reagents = list(/datum/reagent/iodine = 30)
/obj/item/reagent_containers/glass/bottle/bromine
name = "bromine bottle"
- list_reagents = list("bromine" = 30)
+ list_reagents = list(/datum/reagent/bromine = 30)
//Lewd Stuff
/obj/item/reagent_containers/glass/bottle/crocin
name = "Crocin bottle"
desc = "A bottle of mild aphrodisiac. Increases libido."
- list_reagents = list("aphro" = 30)
+ list_reagents = list(/datum/reagent/drug/aphrodisiac = 30)
/obj/item/reagent_containers/glass/bottle/hexacrocin
name = "Hexacrocin bottle"
desc = "A bottle of strong aphrodisiac. Increases libido."
- list_reagents = list("aphro+" = 30)
+ list_reagents = list(/datum/reagent/drug/aphrodisiacplus = 30)
/obj/item/reagent_containers/glass/bottle/camphor
name = "Camphor bottle"
desc = "A bottle of mild anaphrodisiac. Reduces libido."
- list_reagents = list("anaphro" = 30)
+ list_reagents = list(/datum/reagent/drug/anaphrodisiac = 30)
/obj/item/reagent_containers/glass/bottle/hexacamphor
name = "Hexacamphor bottle"
desc = "A bottle of strong anaphrodisiac. Reduces libido."
- list_reagents = list("anaphro+" = 30)
\ No newline at end of file
+ list_reagents = list(/datum/reagent/drug/anaphrodisiacplus = 30)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index efe9c378d9..a215d09517 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -67,7 +67,7 @@
var/R
if(reagents)
for(var/datum/reagent/A in src.reagents.reagent_list)
- R += A.id + " ("
+ R += A.type + " ("
R += num2text(A.volume) + "),"
log_combat(user, M, "squirted", R)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 1b213fed0f..98f5111501 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -27,7 +27,7 @@
"[user] splashes the contents of [src] onto [M]!")
if(reagents)
for(var/datum/reagent/A in reagents.reagent_list)
- R += A.id + " ("
+ R += A.type + " ("
R += num2text(A.volume) + "),"
if(isturf(target) && reagents.reagent_list.len && thrownby)
log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]")
@@ -233,32 +233,32 @@
container_HP = 5
/obj/item/reagent_containers/glass/beaker/cryoxadone
- list_reagents = list("cryoxadone" = 30)
+ list_reagents = list(/datum/reagent/medicine/cryoxadone = 30)
/obj/item/reagent_containers/glass/beaker/sulphuric
- list_reagents = list("sacid" = 50)
+ list_reagents = list(/datum/reagent/toxin/acid = 50)
/obj/item/reagent_containers/glass/beaker/slime
- list_reagents = list("slimejelly" = 50)
+ list_reagents = list(/datum/reagent/toxin/slimejelly = 50)
/obj/item/reagent_containers/glass/beaker/large/styptic
name = "styptic reserve tank"
- list_reagents = list("styptic_powder" = 50)
+ list_reagents = list(/datum/reagent/medicine/styptic_powder = 50)
/obj/item/reagent_containers/glass/beaker/large/silver_sulfadiazine
name = "silver sulfadiazine reserve tank"
- list_reagents = list("silver_sulfadiazine" = 50)
+ list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 50)
/obj/item/reagent_containers/glass/beaker/large/charcoal
name = "charcoal reserve tank"
- list_reagents = list("charcoal" = 50)
+ list_reagents = list(/datum/reagent/medicine/charcoal = 50)
/obj/item/reagent_containers/glass/beaker/large/epinephrine
name = "epinephrine reserve tank"
- list_reagents = list("epinephrine" = 50)
+ list_reagents = list(/datum/reagent/medicine/epinephrine = 50)
/obj/item/reagent_containers/glass/beaker/synthflesh
- list_reagents = list("synthflesh" = 50)
+ list_reagents = list(/datum/reagent/medicine/synthflesh = 50)
/obj/item/reagent_containers/glass/bucket
name = "bucket"
@@ -337,7 +337,7 @@
icon = 'icons/obj/drinks.dmi'
icon_state = "smallbottle"
item_state = "bottle"
- list_reagents = list("water" = 49.5, "fluorine" = 0.5)//see desc, don't think about it too hard
+ list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard
materials = list(MAT_GLASS=0)
volume = 50
amount_per_transfer_from_this = 10
@@ -355,7 +355,7 @@
desc = "A fresh commercial-sized bottle of water."
icon_state = "largebottle"
materials = list(MAT_GLASS=0)
- list_reagents = list("water" = 100)
+ list_reagents = list(/datum/reagent/water = 100)
volume = 100
amount_per_transfer_from_this = 20
possible_transfer_amounts = list(5,10,15,20,25,30,50,100)
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 9232bb69b3..664ba81f9e 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -51,7 +51,7 @@
log_combat(user, M, "injected", src, "([contained])")
/obj/item/reagent_containers/hypospray/CMO
- list_reagents = list("omnizine" = 30)
+ list_reagents = list(/datum/reagent/medicine/omnizine = 30)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/item/reagent_containers/hypospray/combat
@@ -61,17 +61,17 @@
icon_state = "combat_hypo"
volume = 100
ignore_flags = 1 // So they can heal their comrades.
- list_reagents = list("epinephrine" = 30, "lesser_syndicate_nanites" = 40, "leporazine" = 15, "atropine" = 15)
+ list_reagents = list(/datum/reagent/medicine/epinephrine = 30, /datum/reagent/medicine/lesser_syndicate_nanites = 40, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/atropine = 15)
/obj/item/reagent_containers/hypospray/combat/omnizine // owned idiot
desc = "A modified air-needle autoinjector, used by underfunded support operatives to slowly heal injuries in combat and limp away from a fight."
volume = 90
- list_reagents = list("epinephrine" = 30, "omnizine" = 30, "leporazine" = 15, "atropine" = 15)
+ list_reagents = list(/datum/reagent/medicine/epinephrine = 30, /datum/reagent/medicine/omnizine = 30, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/atropine = 15)
/obj/item/reagent_containers/hypospray/combat/nanites
desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with experimental medical compounds for rapid healing."
volume = 100
- list_reagents = list("quantum_heal" = 80, "synaptizine" = 20)
+ list_reagents = list(/datum/reagent/medicine/adminordrazine/quantum_heal = 80, /datum/reagent/medicine/synaptizine = 20)
/obj/item/reagent_containers/hypospray/magillitis
name = "experimental autoinjector"
@@ -79,7 +79,7 @@
icon_state = "combat_hypo"
volume = 5
reagent_flags = NONE
- list_reagents = list("magillitis" = 5)
+ list_reagents = list(/datum/reagent/magillitis = 5)
//MediPens
@@ -95,7 +95,7 @@
ignore_flags = 1 //so you can medipen through hardsuits
reagent_flags = DRAWABLE
flags_1 = null
- list_reagents = list("epinephrine" = 10)
+ list_reagents = list(/datum/reagent/medicine/epinephrine = 10)
/obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user)
user.visible_message("[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -137,7 +137,7 @@
desc = "A highly illegal medipen due to its load and small injections, allow for five uses before being drained"
volume = 50
amount_per_transfer_from_this = 10
- list_reagents = list("stimulants" = 50)
+ list_reagents = list(/datum/reagent/medicine/stimulants = 50)
/obj/item/reagent_containers/hypospray/medipen/stimulants/baseball
name = "the reason the syndicate major league team wins"
@@ -145,7 +145,7 @@
icon_state = "baseballstim"
volume = 50
amount_per_transfer_from_this = 50
- list_reagents = list("stimulants" = 50)
+ list_reagents = list(/datum/reagent/medicine/stimulants = 50)
/obj/item/reagent_containers/hypospray/medipen/stimpack //goliath kiting
name = "stimpack medipen"
@@ -153,16 +153,16 @@
icon_state = "stimpen"
volume = 20
amount_per_transfer_from_this = 20
- list_reagents = list("ephedrine" = 10, "coffee" = 10)
+ list_reagents = list(/datum/reagent/medicine/ephedrine = 10, /datum/reagent/consumable/coffee = 10)
/obj/item/reagent_containers/hypospray/medipen/stimpack/traitor
desc = "A modified stimulants autoinjector for use in combat situations. Has a mild healing effect."
- list_reagents = list("stimulants" = 10, "omnizine" = 10)
+ list_reagents = list(/datum/reagent/medicine/stimulants = 10, /datum/reagent/medicine/omnizine = 10)
/obj/item/reagent_containers/hypospray/medipen/morphine
name = "morphine medipen"
desc = "A rapid way to get you out of a tight situation and fast! You'll feel rather drowsy, though."
- list_reagents = list("morphine" = 10)
+ list_reagents = list(/datum/reagent/medicine/morphine = 10)
/obj/item/reagent_containers/hypospray/medipen/tuberculosiscure
name = "BVAK autoinjector"
@@ -170,7 +170,7 @@
icon_state = "stimpen"
volume = 60
amount_per_transfer_from_this = 30
- list_reagents = list("atropine" = 10, "epinephrine" = 10, "salbutamol" = 20, "spaceacillin" = 20)
+ list_reagents = list(/datum/reagent/medicine/atropine = 10, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/salbutamol = 20, /datum/reagent/medicine/spaceacillin = 20)
/obj/item/reagent_containers/hypospray/medipen/survival
name = "survival medipen"
@@ -178,28 +178,20 @@
icon_state = "stimpen"
volume = 52
amount_per_transfer_from_this = 52
- list_reagents = list("salbutamol" = 10, "leporazine" = 15, "neo_jelly" = 15, "epinephrine" = 10, "lavaland_extract" = 2)
-
-/obj/item/reagent_containers/hypospray/medipen/species_mutator
- name = "species mutator medipen"
- desc = "Embark on a whirlwind tour of racial insensitivity by \
- literally appropriating other races."
- volume = 1
- amount_per_transfer_from_this = 1
- list_reagents = list("unstablemutationtoxin" = 1)
+ list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/neo_jelly = 15, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/lavaland_extract = 2)
/obj/item/reagent_containers/hypospray/medipen/firelocker
name = "fire treatment medipen"
desc = "A medipen that has been fulled with burn healing chemicals for personnel without advanced medical knowledge."
volume = 15
amount_per_transfer_from_this = 15
- list_reagents = list("oxandrolone" = 5, "kelotane" = 10)
+ list_reagents = list(/datum/reagent/medicine/oxandrolone = 5, /datum/reagent/medicine/kelotane = 10)
/obj/item/reagent_containers/hypospray/combat/heresypurge
name = "holy water autoinjector"
desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with 5 doses of a holy water mixture."
volume = 250
- list_reagents = list("holywater" = 150, "tiresolution" = 50, "dizzysolution" = 50)
+ list_reagents = list(/datum/reagent/water/holywater = 150, /datum/reagent/peaceborg_tire = 50, /datum/reagent/peaceborg_confuse = 50)
amount_per_transfer_from_this = 50
#define HYPO_SPRAY 0
@@ -240,19 +232,19 @@
var/penetrates = FALSE
/obj/item/hypospray/mkii/brute
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine
/obj/item/hypospray/mkii/toxin
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin
/obj/item/hypospray/mkii/oxygen
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/dexalin
/obj/item/hypospray/mkii/burn
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/kelotane
/obj/item/hypospray/mkii/tricord
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/tricord
/obj/item/hypospray/mkii/enlarge
spawnwithvial = FALSE
@@ -263,7 +255,7 @@
icon_state = "cmo2"
desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray."
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/CMO
inject_wait = DELUXE_WAIT_INJECT
spray_wait = DELUXE_WAIT_SPRAY
spray_self = DELUXE_SELF_SPRAY
@@ -273,7 +265,7 @@
name = "combat hypospray mk.II"
desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it."
icon_state = "combat2"
- start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat
+ start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/combat
inject_wait = COMBAT_WAIT_INJECT
spray_wait = COMBAT_WAIT_SPRAY
spray_self = COMBAT_SELF_SPRAY
diff --git a/code/modules/reagents/reagent_containers/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm
index 9dd51c43ae..c0db92e0e8 100644
--- a/code/modules/reagents/reagent_containers/hypovial.dm
+++ b/code/modules/reagents/reagent_containers/hypovial.dm
@@ -5,7 +5,6 @@
desc = "A hypovial compatible with most hyposprays."
icon_state = "hypovial"
spillable = FALSE
- var/comes_with = list() //Easy way of doing this.
volume = 10
possible_transfer_amounts = list(1,2,5,10)
APTFT_altclick = FALSE
@@ -25,8 +24,6 @@
. = ..()
if(!icon_state)
icon_state = "hypovial"
- for(var/R in comes_with)
- reagents.add_reagent(R,comes_with[R])
update_icon()
// beaker_weakness_bitflag |= PH_WEAK // fuck you if you're using these like beakers
// beaker_weakness_bitflag |= TEMP_WEAK
@@ -116,87 +113,87 @@
unique_reskin = null
-/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine
+/obj/item/reagent_containers/glass/bottle/vial/small/bicaridine
name = "red hypovial (bicaridine)"
icon_state = "hypovial-b"
- comes_with = list("bicaridine" = 30)
+ list_reagents = list(/datum/reagent/medicine/bicaridine = 30)
-/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin
+/obj/item/reagent_containers/glass/bottle/vial/small/antitoxin
name = "green hypovial (Anti-Tox)"
icon_state = "hypovial-a"
- comes_with = list("antitoxin" = 30)
+ list_reagents = list(/datum/reagent/medicine/antitoxin = 30)
-/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane
+/obj/item/reagent_containers/glass/bottle/vial/small/kelotane
name = "orange hypovial (kelotane)"
icon_state = "hypovial-k"
- comes_with = list("kelotane" = 30)
+ list_reagents = list(/datum/reagent/medicine/kelotane = 30)
-/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin
+/obj/item/reagent_containers/glass/bottle/vial/small/dexalin
name = "blue hypovial (dexalin)"
icon_state = "hypovial-d"
- comes_with = list("dexalin" = 30)
+ list_reagents = list(/datum/reagent/medicine/dexalin = 30)
-/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord
+/obj/item/reagent_containers/glass/bottle/vial/small/tricord
name = "hypovial (tricordrazine)"
icon_state = "hypovial"
- comes_with = list("tricordrazine" = 30)
+ list_reagents = list(/datum/reagent/medicine/tricordrazine = 30)
-/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction
+/obj/item/reagent_containers/glass/bottle/vial/small/breastreduction
name = "pink hypovial (breast treatment)"
icon_state = "hypovial-pink"
- comes_with = list("BEsmaller_hypo" = 30)
+ list_reagents = list(/datum/reagent/fermi/BEsmaller_hypo = 30)
-/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction
+/obj/item/reagent_containers/glass/bottle/vial/small/penisreduction
name = "pink hypovial (penis treatment)"
icon_state = "hypovial-pink"
- comes_with = list("PEsmaller_hypo" = 30)
+ list_reagents = list(/datum/reagent/fermi/PEsmaller_hypo = 30)
-/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
+/obj/item/reagent_containers/glass/bottle/vial/large/CMO
name = "deluxe hypovial"
icon_state = "hypoviallarge-cmos"
- comes_with = list("omnizine" = 20, "leporazine" = 20, "atropine" = 20)
+ list_reagents = list(/datum/reagent/medicine/omnizine = 20, /datum/reagent/medicine/leporazine = 20, /datum/reagent/medicine/atropine = 20)
-/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/bicaridine
+/obj/item/reagent_containers/glass/bottle/vial/large/bicaridine
name = "large red hypovial (bicaridine)"
icon_state = "hypoviallarge-b"
- comes_with = list("bicaridine" = 60)
+ list_reagents = list(/datum/reagent/medicine/bicaridine = 60)
-/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/antitoxin
+/obj/item/reagent_containers/glass/bottle/vial/large/antitoxin
name = "large green hypovial (anti-tox)"
icon_state = "hypoviallarge-a"
- comes_with = list("antitoxin" = 60)
+ list_reagents = list(/datum/reagent/medicine/antitoxin = 60)
-/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/kelotane
+/obj/item/reagent_containers/glass/bottle/vial/large/kelotane
name = "large orange hypovial (kelotane)"
icon_state = "hypoviallarge-k"
- comes_with = list("kelotane" = 60)
+ list_reagents = list(/datum/reagent/medicine/kelotane = 60)
-/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin
+/obj/item/reagent_containers/glass/bottle/vial/large/dexalin
name = "large blue hypovial (dexalin)"
icon_state = "hypoviallarge-d"
- comes_with = list("dexalin" = 60)
+ list_reagents = list(/datum/reagent/medicine/dexalin = 60)
-/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal
+/obj/item/reagent_containers/glass/bottle/vial/large/charcoal
name = "large black hypovial (charcoal)"
icon_state = "hypoviallarge-t"
- comes_with = list("charcoal" = 60)
+ list_reagents = list(/datum/reagent/medicine/charcoal = 60)
-/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord
+/obj/item/reagent_containers/glass/bottle/vial/large/tricord
name = "large hypovial (tricord)"
icon_state = "hypoviallarge"
- comes_with = list("tricordrazine" = 60)
+ list_reagents = list(/datum/reagent/medicine/tricordrazine = 60)
-/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu
+/obj/item/reagent_containers/glass/bottle/vial/large/salglu
name = "large green hypovial (salglu)"
icon_state = "hypoviallarge-a"
- comes_with = list("salglu_solution" = 60)
+ list_reagents = list(/datum/reagent/medicine/salglu_solution = 60)
-/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh
+/obj/item/reagent_containers/glass/bottle/vial/large/synthflesh
name = "large orange hypovial (synthflesh)"
icon_state = "hypoviallarge-k"
- comes_with = list("synthflesh" = 60)
+ list_reagents = list(/datum/reagent/medicine/synthflesh = 60)
-/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat
+/obj/item/reagent_containers/glass/bottle/vial/large/combat
name = "combat hypovial"
icon_state = "hypoviallarge-t"
- comes_with = list("epinephrine" = 3, "omnizine" = 19, "leporazine" = 19, "atropine" = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine
+ list_reagents = list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/medicine/omnizine = 19, /datum/reagent/medicine/leporazine = 19, /datum/reagent/medicine/atropine = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine
diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm
index b445c38ad9..02a3f987bc 100644
--- a/code/modules/reagents/reagent_containers/medspray.dm
+++ b/code/modules/reagents/reagent_containers/medspray.dm
@@ -82,26 +82,26 @@
name = "medical spray (styptic powder)"
desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains styptic powder, for treating cuts and bruises."
icon_state = "brutespray"
- list_reagents = list("styptic_powder" = 60)
+ list_reagents = list(/datum/reagent/medicine/styptic_powder = 60)
/obj/item/reagent_containers/medspray/silver_sulf
name = "medical spray (silver sulfadiazine)"
desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains silver sulfadiazine, useful for treating burns."
icon_state = "burnspray"
- list_reagents = list("silver_sulfadiazine" = 60)
+ list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 60)
/obj/item/reagent_containers/medspray/synthflesh
name = "medical spray (synthflesh)"
desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains synthflesh, an apex brute and burn healing agent."
icon_state = "synthspray"
- list_reagents = list("synthflesh" = 60)
+ list_reagents = list(/datum/reagent/medicine/synthflesh = 60)
/obj/item/reagent_containers/medspray/sterilizine
name = "sterilizer spray"
desc = "Spray bottle loaded with non-toxic sterilizer. Useful in preparation for surgery."
- list_reagents = list("sterilizine" = 60)
+ list_reagents = list(/datum/reagent/space_cleaner/sterilizine = 60)
/obj/item/reagent_containers/medspray/synthtissue
name = "Synthtissue young culture spray"
desc = "Spray bottle loaded with synthtissue. Useful in synthtissue grafting surgeries."
- list_reagents = list("synthtissue" = 60)
+ list_reagents = list(/datum/reagent/synthtissue = 60)
diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm
index 02852f2218..1e23f46d9f 100644
--- a/code/modules/reagents/reagent_containers/patch.dm
+++ b/code/modules/reagents/reagent_containers/patch.dm
@@ -32,13 +32,13 @@
/obj/item/reagent_containers/pill/patch/styptic
name = "brute patch"
desc = "Helps with brute injuries."
- list_reagents = list("styptic_powder" = 20)
+ list_reagents = list(/datum/reagent/medicine/styptic_powder = 20)
icon_state = "bandaid_brute"
/obj/item/reagent_containers/pill/patch/silver_sulf
name = "burn patch"
desc = "Helps with burn injuries."
- list_reagents = list("silver_sulfadiazine" = 20)
+ list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 20)
icon_state = "bandaid_burn"
/obj/item/reagent_containers/pill/patch/get_belt_overlay()
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index d4880aa085..e6fa18ba9c 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -82,97 +82,97 @@
name = "toxins pill"
desc = "Highly toxic."
icon_state = "pill5"
- list_reagents = list("toxin" = 50)
+ list_reagents = list(/datum/reagent/toxin = 50)
roundstart = 1
/obj/item/reagent_containers/pill/cyanide
name = "cyanide pill"
desc = "Don't swallow this."
icon_state = "pill5"
- list_reagents = list("cyanide" = 50)
+ list_reagents = list(/datum/reagent/toxin/cyanide = 50)
roundstart = 1
/obj/item/reagent_containers/pill/adminordrazine
name = "adminordrazine pill"
desc = "It's magic. We don't have to explain it."
icon_state = "pill16"
- list_reagents = list("adminordrazine" = 50)
+ list_reagents = list(/datum/reagent/medicine/adminordrazine = 50)
roundstart = 1
/obj/item/reagent_containers/pill/morphine
name = "morphine pill"
desc = "Commonly used to treat insomnia."
icon_state = "pill8"
- list_reagents = list("morphine" = 30)
+ list_reagents = list(/datum/reagent/medicine/morphine = 30)
roundstart = 1
/obj/item/reagent_containers/pill/stimulant
name = "stimulant pill"
desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!"
icon_state = "pill19"
- list_reagents = list("ephedrine" = 10, "antihol" = 10, "coffee" = 30)
+ list_reagents = list(/datum/reagent/medicine/ephedrine = 10, /datum/reagent/medicine/antihol = 10, /datum/reagent/consumable/coffee = 30)
roundstart = 1
/obj/item/reagent_containers/pill/salbutamol
name = "salbutamol pill"
desc = "Used to treat oxygen deprivation."
icon_state = "pill16"
- list_reagents = list("salbutamol" = 30)
+ list_reagents = list(/datum/reagent/medicine/salbutamol = 30)
roundstart = 1
/obj/item/reagent_containers/pill/charcoal
name = "charcoal pill"
desc = "Neutralizes many common toxins."
icon_state = "pill17"
- list_reagents = list("charcoal" = 10)
+ list_reagents = list(/datum/reagent/medicine/charcoal = 10)
roundstart = 1
/obj/item/reagent_containers/pill/epinephrine
name = "epinephrine pill"
desc = "Used to stabilize patients."
icon_state = "pill5"
- list_reagents = list("epinephrine" = 15)
+ list_reagents = list(/datum/reagent/medicine/epinephrine = 15)
roundstart = 1
/obj/item/reagent_containers/pill/mannitol
name = "mannitol pill"
desc = "Used to treat brain damage."
icon_state = "pill17"
- list_reagents = list("mannitol" = 50)
+ list_reagents = list(/datum/reagent/medicine/mannitol = 50)
roundstart = 1
/obj/item/reagent_containers/pill/mutadone
name = "mutadone pill"
desc = "Used to treat genetic damage."
icon_state = "pill20"
- list_reagents = list("mutadone" = 50)
+ list_reagents = list(/datum/reagent/medicine/mutadone = 50)
roundstart = 1
/obj/item/reagent_containers/pill/salicyclic
name = "salicylic acid pill"
desc = "Used to dull pain."
icon_state = "pill9"
- list_reagents = list("sal_acid" = 24)
+ list_reagents = list(/datum/reagent/medicine/sal_acid = 24)
roundstart = 1
/obj/item/reagent_containers/pill/oxandrolone
name = "oxandrolone pill"
desc = "Used to stimulate burn healing."
icon_state = "pill11"
- list_reagents = list("oxandrolone" = 24)
+ list_reagents = list(/datum/reagent/medicine/oxandrolone = 24)
roundstart = 1
/obj/item/reagent_containers/pill/insulin
name = "insulin pill"
desc = "Handles hyperglycaemic coma."
icon_state = "pill18"
- list_reagents = list("insulin" = 50)
+ list_reagents = list(/datum/reagent/medicine/insulin = 50)
roundstart = 1
/obj/item/reagent_containers/pill/psicodine
name = "psicodine pill"
desc = "Used to treat mental instability and traumas."
- list_reagents = list("psicodine" = 10)
+ list_reagents = list(/datum/reagent/medicine/psicodine = 10)
icon_state = "pill22"
roundstart = 1
@@ -180,21 +180,21 @@
name = "potassium iodide pill"
desc = "Used to treat radition used to counter radiation poisoning."
icon_state = "pill18"
- list_reagents = list("potass_iodide" = 50)
+ list_reagents = list(/datum/reagent/medicine/potass_iodide = 50)
roundstart = 1
/obj/item/reagent_containers/pill/antirad_plus
name = "prussian blue pill"
desc = "Used to treat heavy radition poisoning."
icon_state = "prussian_blue"
- list_reagents = list("prussian_blue" = 25, "water" = 10)
+ list_reagents = list(/datum/reagent/medicine/prussian_blue = 25, /datum/reagent/water = 10)
roundstart = 1
/obj/item/reagent_containers/pill/mutarad
name = "radiation treatment deluxe pill"
desc = "Used to treat heavy radition poisoning and genetic defects."
icon_state = "anit_rad_fixgene"
- list_reagents = list("prussian_blue" = 15, "potass_iodide" = 15, "mutadone" = 15, "water" = 5)
+ list_reagents = list(/datum/reagent/medicine/prussian_blue = 15, /datum/reagent/medicine/potass_iodide = 15, /datum/reagent/medicine/mutadone = 15, /datum/reagent/water = 5)
roundstart = 1
///////////////////////////////////////// this pill is used only in a legion mob drop
@@ -203,32 +203,32 @@
desc = "I wouldn't eat this if I were you."
icon_state = "pill9"
color = "#454545"
- list_reagents = list("shadowmutationtoxin" = 1)
+ list_reagents = list(/datum/reagent/mutationtoxin/shadow = 1)
//////////////////////////////////////// drugs
/obj/item/reagent_containers/pill/zoom
name = "zoom pill"
- list_reagents = list("synaptizine" = 10, "nicotine" = 10, "methamphetamine" = 1)
+ list_reagents = list(/datum/reagent/medicine/synaptizine = 10, /datum/reagent/drug/nicotine = 10, /datum/reagent/drug/methamphetamine = 1)
/obj/item/reagent_containers/pill/happy
name = "happy pill"
- list_reagents = list("sugar" = 10, "space_drugs" = 10)
+ list_reagents = list(/datum/reagent/consumable/sugar = 10, /datum/reagent/drug/space_drugs = 10)
/obj/item/reagent_containers/pill/lsd
name = "hallucinogen pill"
- list_reagents = list("mushroomhallucinogen" = 15, "mindbreaker" = 15)
+ list_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 15, /datum/reagent/toxin/mindbreaker = 15)
/obj/item/reagent_containers/pill/aranesp
name = "speedy pill"
- list_reagents = list("aranesp" = 10)
+ list_reagents = list(/datum/reagent/drug/aranesp = 10)
/obj/item/reagent_containers/pill/happiness
name = "happiness pill"
desc = "It has a creepy smiling face on it."
icon_state = "pill_happy"
- list_reagents = list("happiness" = 10)
+ list_reagents = list(/datum/reagent/drug/happiness = 10)
/obj/item/reagent_containers/pill/floorpill
name = "floorpill"
@@ -250,8 +250,8 @@
/obj/item/reagent_containers/pill/penis_enlargement
name = "penis enlargement pill"
- list_reagents = list("penis_enlarger" = 10)
+ list_reagents = list(/datum/reagent/fermi/penis_enlarger = 10)
/obj/item/reagent_containers/pill/breast_enlargement
name = "breast enlargement pill"
- list_reagents = list("breast_enlarger" = 10)
+ list_reagents = list(/datum/reagent/fermi/breast_enlarger = 10)
diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm
index 683a26d2cb..812b3144e9 100644
--- a/code/modules/reagents/reagent_containers/rags.dm
+++ b/code/modules/reagents/reagent_containers/rags.dm
@@ -74,9 +74,9 @@
if(M.fire_stacks)
var/minus_plus = M.fire_stacks < 0 ? 1 : -1
var/amount = min(abs(M.fire_stacks), soak_efficiency)
- var/r_id = "fuel"
+ var/r_id = /datum/reagent/fuel
if(M.fire_stacks < 0)
- r_id = "water"
+ r_id = /datum/reagent/water
reagents.add_reagent(r_id, amount * 0.3)
M.adjust_fire_stacks(minus_plus * amount)
M.wash_cream()
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index ddbc6cf92b..ad8eb871e1 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -52,13 +52,13 @@
user.changeNext_move(CLICK_CD_RANGE*2)
user.newtonian_move(get_dir(A, user))
var/turf/T = get_turf(src)
- if(reagents.has_reagent("sacid"))
+ if(reagents.has_reagent(/datum/reagent/toxin/acid))
message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [ADMIN_VERBOSEJMP(T)].")
log_game("[key_name(user)] fired sulphuric acid from \a [src] at [AREACOORD(T)].")
- if(reagents.has_reagent("facid"))
+ if(reagents.has_reagent(/datum/reagent/toxin/acid/fluacid))
message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [ADMIN_VERBOSEJMP(T)].")
log_game("[key_name(user)] fired Fluacid from \a [src] at [AREACOORD(T)].")
- if(reagents.has_reagent("lube"))
+ if(reagents.has_reagent(/datum/reagent/lube))
message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [ADMIN_VERBOSEJMP(T)].")
log_game("[key_name(user)] fired Space lube from \a [src] at [AREACOORD(T)].")
return
@@ -149,7 +149,7 @@
name = "space cleaner"
desc = "BLAM!-brand non-foaming space cleaner!"
volume = 100
- list_reagents = list("cleaner" = 100)
+ list_reagents = list(/datum/reagent/space_cleaner = 100)
amount_per_transfer_from_this = 2
stream_amount = 5
@@ -172,7 +172,7 @@
name = "drying agent spray"
desc = "A spray bottle for drying agent."
volume = 100
- list_reagents = list("drying_agent" = 100)
+ list_reagents = list(/datum/reagent/drying_agent = 100)
amount_per_transfer_from_this = 2
stream_amount = 5
@@ -181,7 +181,7 @@
name = "spray tan"
volume = 50
desc = "Gyaro brand spray tan. Do not spray near eyes or other orifices."
- list_reagents = list("spraytan" = 50)
+ list_reagents = list(/datum/reagent/spraytan = 50)
//pepperspray
@@ -197,7 +197,7 @@
stream_range = 4
spray_delay = 1
amount_per_transfer_from_this = 5
- list_reagents = list("condensedcapsaicin" = 40)
+ list_reagents = list(/datum/reagent/consumable/condensedcapsaicin = 40)
/obj/item/reagent_containers/spray/pepper/suicide_act(mob/living/carbon/user)
user.visible_message("[user] begins huffing \the [src]! It looks like [user.p_theyre()] getting a dirty high!")
@@ -218,7 +218,7 @@
item_state = "sunflower"
amount_per_transfer_from_this = 1
volume = 10
- list_reagents = list("water" = 10)
+ list_reagents = list(/datum/reagent/water = 10)
/obj/item/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays
return
@@ -230,14 +230,14 @@
icon = 'icons/obj/chemical.dmi'
icon_state = "clownflower"
volume = 30
- list_reagents = list("superlube" = 30)
+ list_reagents = list(/datum/reagent/lube/superlube = 30)
/obj/item/reagent_containers/spray/waterflower/cyborg
reagent_flags = NONE
volume = 100
- list_reagents = list("water" = 100)
+ list_reagents = list(/datum/reagent/water = 100)
var/generate_amount = 5
- var/generate_type = "water"
+ var/generate_type = /datum/reagent/water
var/last_generate = 0
var/generate_delay = 10 //deciseconds
can_fill_from_container = FALSE
@@ -245,9 +245,9 @@
/obj/item/reagent_containers/spray/waterflower/cyborg/hacked
name = "nova flower"
desc = "This doesn't look safe at all..."
- list_reagents = list("clf3" = 3)
+ list_reagents = list(/datum/reagent/clf3 = 3)
volume = 3
- generate_type = "clf3"
+ generate_type = /datum/reagent/clf3
generate_amount = 1
generate_delay = 40 //deciseconds
@@ -309,7 +309,7 @@
..(the_targets[i])
/obj/item/reagent_containers/spray/chemsprayer/bioterror
- list_reagents = list("sodium_thiopental" = 100, "coniine" = 100, "venom" = 100, "condensedcapsaicin" = 100, "initropidril" = 100, "polonium" = 100)
+ list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 100, /datum/reagent/toxin/coniine = 100, /datum/reagent/toxin/venom = 100, /datum/reagent/consumable/condensedcapsaicin = 100, /datum/reagent/toxin/initropidril = 100, /datum/reagent/toxin/polonium = 100)
// Plant-B-Gone
/obj/item/reagent_containers/spray/plantbgone // -- Skie
@@ -321,4 +321,4 @@
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
volume = 100
- list_reagents = list("plantbgone" = 100)
+ list_reagents = list(/datum/reagent/toxin/plantbgone = 100)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 6bdae6225a..7fafbc319c 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -179,39 +179,39 @@
/obj/item/reagent_containers/syringe/epinephrine
name = "syringe (epinephrine)"
desc = "Contains epinephrine - used to stabilize patients."
- list_reagents = list("epinephrine" = 15)
+ list_reagents = list(/datum/reagent/medicine/epinephrine = 15)
/obj/item/reagent_containers/syringe/charcoal
name = "syringe (charcoal)"
desc = "Contains charcoal."
- list_reagents = list("charcoal" = 15)
+ list_reagents = list(/datum/reagent/medicine/charcoal = 15)
/obj/item/reagent_containers/syringe/antiviral
name = "syringe (spaceacillin)"
desc = "Contains antiviral agents."
- list_reagents = list("spaceacillin" = 15)
+ list_reagents = list(/datum/reagent/medicine/spaceacillin = 15)
/obj/item/reagent_containers/syringe/bioterror
name = "bioterror syringe"
desc = "Contains several paralyzing reagents."
- list_reagents = list("neurotoxin" = 5, "mutetoxin" = 5, "sodium_thiopental" = 5)
+ list_reagents = list(/datum/reagent/consumable/ethanol/neurotoxin = 5, /datum/reagent/toxin/mutetoxin = 5, /datum/reagent/toxin/sodium_thiopental = 5)
/obj/item/reagent_containers/syringe/stimulants
name = "Stimpack"
desc = "Contains stimulants."
amount_per_transfer_from_this = 50
volume = 50
- list_reagents = list("stimulants" = 50)
+ list_reagents = list(/datum/reagent/medicine/stimulants = 50)
/obj/item/reagent_containers/syringe/calomel
name = "syringe (calomel)"
desc = "Contains calomel."
- list_reagents = list("calomel" = 15)
+ list_reagents = list(/datum/reagent/medicine/calomel = 15)
/obj/item/reagent_containers/syringe/plasma
name = "syringe (plasma)"
desc = "Contains plasma."
- list_reagents = list("plasma" = 15)
+ list_reagents = list(/datum/reagent/toxin/plasma = 15)
/obj/item/reagent_containers/syringe/lethal
name = "lethal injection syringe"
@@ -220,24 +220,24 @@
volume = 50
/obj/item/reagent_containers/syringe/lethal/choral
- list_reagents = list("chloralhydrate" = 50)
+ list_reagents = list(/datum/reagent/toxin/chloralhydrate = 50)
/obj/item/reagent_containers/syringe/lethal/execution
- list_reagents = list("amatoxin" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10) //Citadel edit, changing out plasma from lethals
+ list_reagents = list(/datum/reagent/toxin/amatoxin = 15, /datum/reagent/toxin/formaldehyde = 15, /datum/reagent/toxin/cyanide = 10, /datum/reagent/toxin/acid/fluacid = 10) //Citadel edit, changing out plasma from lethals
/obj/item/reagent_containers/syringe/mulligan
name = "Mulligan"
desc = "A syringe used to completely change the users identity."
amount_per_transfer_from_this = 1
volume = 1
- list_reagents = list("mulligan" = 1)
+ list_reagents = list(/datum/reagent/mulligan = 1)
/obj/item/reagent_containers/syringe/gluttony
name = "Gluttony's Blessing"
desc = "A syringe recovered from a dread place. It probably isn't wise to use."
amount_per_transfer_from_this = 1
volume = 1
- list_reagents = list("gluttonytoxin" = 1)
+ list_reagents = list(/datum/reagent/gluttonytoxin = 1)
/obj/item/reagent_containers/syringe/bluespace
name = "bluespace syringe"
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 0964b67490..e9f8053631 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -8,7 +8,7 @@
pressure_resistance = 2*ONE_ATMOSPHERE
max_integrity = 300
var/tank_volume = 1000 //In units, how much the dispenser can hold
- var/reagent_id = "water" //The ID of the reagent that the dispenser uses
+ var/reagent_id = /datum/reagent/water //The ID of the reagent that the dispenser uses
/obj/structure/reagent_dispensers/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
. = ..()
@@ -58,7 +58,7 @@
name = "firefighting foam tank"
desc = "A tank full of firefighting foam."
icon_state = "foam"
- reagent_id = "firefighting_foam"
+ reagent_id = /datum/reagent/firefighting_foam
tank_volume = 500
/obj/structure/reagent_dispensers/water_cooler
@@ -99,7 +99,7 @@
name = "fuel tank"
desc = "A tank full of industrial welding fuel. Do not consume."
icon_state = "fuel"
- reagent_id = "welding_fuel"
+ reagent_id = /datum/reagent/fuel
/obj/structure/reagent_dispensers/fueltank/high //Unused - Good for ghost roles
name = "high-capacity fuel tank"
@@ -136,12 +136,12 @@
/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/weldingtool))
- if(!reagents.has_reagent("welding_fuel"))
+ if(!reagents.has_reagent(/datum/reagent/fuel))
to_chat(user, "[src] is out of fuel!")
return
var/obj/item/weldingtool/W = I
if(!W.welding)
- if(W.reagents.has_reagent("welding_fuel", W.max_fuel))
+ if(W.reagents.has_reagent(/datum/reagent/fuel, W.max_fuel))
to_chat(user, "Your [W.name] is already full!")
return
reagents.trans_to(W, W.max_fuel)
@@ -171,7 +171,7 @@
icon_state = "pepper"
anchored = TRUE
density = FALSE
- reagent_id = "condensedcapsaicin"
+ reagent_id = /datum/reagent/consumable/condensedcapsaicin
/obj/structure/reagent_dispensers/peppertank/Initialize()
. = ..()
@@ -184,14 +184,14 @@
icon_state = "virus_food"
anchored = TRUE
density = FALSE
- reagent_id = "virusfood"
+ reagent_id = /datum/reagent/toxin/mutagen/mutagenvirusfood
/obj/structure/reagent_dispensers/cooking_oil
name = "vat of cooking oil"
desc = "A huge metal vat with a tap on the front. Filled with cooking oil for use in frying food."
icon_state = "vat"
anchored = TRUE
- reagent_id = "cooking_oil"
+ reagent_id = /datum/reagent/consumable/cooking_oil
////////
//Kegs//
@@ -201,7 +201,7 @@
name = "beer keg"
desc = "Beer is liquid bread, it's good for you..."
icon_state = "beer"
- reagent_id = "beer"
+ reagent_id = /datum/reagent/consumable/ethanol/beer
/obj/structure/reagent_dispensers/beerkeg/blob_act(obj/structure/blob/B)
explosion(src.loc,0,3,5,7,10)
@@ -213,42 +213,41 @@
desc = "A keg."
icon = 'modular_citadel/icons/obj/objects.dmi'
icon_state = "keg"
- reagent_id = "water"
/obj/structure/reagent_dispensers/keg/mead
name = "keg of mead"
desc = "A keg of mead."
icon_state = "orangekeg"
- reagent_id = "mead"
+ reagent_id = /datum/reagent/consumable/ethanol/mead
/obj/structure/reagent_dispensers/keg/aphro
name = "keg of aphrodisiac"
desc = "A keg of aphrodisiac."
icon_state = "pinkkeg"
- reagent_id = "aphro"
+ reagent_id = /datum/reagent/drug/aphrodisiac
tank_volume = 150
/obj/structure/reagent_dispensers/keg/aphro/strong
name = "keg of strong aphrodisiac"
desc = "A keg of strong and addictive aphrodisiac."
- reagent_id = "aphro+"
+ reagent_id = /datum/reagent/drug/aphrodisiacplus
tank_volume = 120
/obj/structure/reagent_dispensers/keg/milk
name = "keg of milk"
desc = "It's not quite what you were hoping for."
icon_state = "whitekeg"
- reagent_id = "milk"
+ reagent_id = /datum/reagent/consumable/milk
/obj/structure/reagent_dispensers/keg/semen
name = "keg of semen"
desc = "Dear lord, where did this even come from?"
icon_state = "whitekeg"
- reagent_id = "semen"
+ reagent_id = /datum/reagent/consumable/semen
/obj/structure/reagent_dispensers/keg/gargle
name = "keg of pan galactic gargleblaster"
desc = "A keg of... wow that's a long name."
icon_state = "bluekeg"
- reagent_id = "gargleblaster"
+ reagent_id = /datum/reagent/consumable/ethanol/gargle_blaster
tank_volume = 100
\ No newline at end of file
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index cdb9ea4120..516ae5bddd 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -37,9 +37,9 @@ other types of metals and chemistry for reagents).
var/list/materials = list() //List of materials. Format: "id" = amount.
var/construction_time //Amount of time required for building the object
var/build_path = null //The file path of the object that gets created
- var/list/make_reagents = list() //Reagents produced. Format: "id" = amount. Currently only supported by the biogenerator.
+ var/list/make_reagents = list() //Reagents produced. Format: type = amount. Currently only supported by the biogenerator.
var/list/category = null //Primarily used for Mech Fabricators, but can be used for anything
- var/list/reagents_list = list() //List of reagents. Format: "id" = amount.
+ var/list/reagents_list = list() //List of reagents. Format: type = amount.
var/maxstack = 1
var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe
var/dangerous_construction = FALSE //notify and log for admin investigations if this is printed.
diff --git a/code/modules/research/designs/autobotter_designs.dm b/code/modules/research/designs/autobotter_designs.dm
index 7b56beaf77..d2a38a29f9 100644
--- a/code/modules/research/designs/autobotter_designs.dm
+++ b/code/modules/research/designs/autobotter_designs.dm
@@ -151,97 +151,97 @@
name = "Export Design (Wine)"
desc = "Allows for the blowing, and bottling of Wine bottles."
id = "wine_export"
- reagents_list = list("wine" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/wine = 100)
build_path = /obj/item/export/bottle/wine
/datum/design/bottle/export/rum
name = "Export Design (Rum)"
desc = "Allows for the blowing, and bottling of Rum bottles."
id = "rum_export"
- reagents_list = list("rum" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/rum = 100)
build_path = /obj/item/export/bottle/rum
/datum/design/bottle/export/gin
name = "Export Design (Gin)"
desc = "Allows for the blowing, and bottling of Gin bottles."
id = "gin_export"
- reagents_list = list("gin" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/gin = 100)
build_path = /obj/item/export/bottle/gin
/datum/design/bottle/export/whiskey
name = "Export Design (Whiskey)"
desc = "Allows for the blowing, and bottling of Whiskey bottles."
id = "whiskey_export"
- reagents_list = list("whiskey" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/whiskey = 100)
build_path = /obj/item/export/bottle/whiskey
/datum/design/bottle/export/vodka
name = "Export Design (Vodka)"
desc = "Allows for the blowing, and bottling of 99% Vodka bottles."
id = "vodka_export"
- reagents_list = list("vodka" = 99, "water" = 1)
+ reagents_list = list(/datum/reagent/consumable/ethanol/vodka = 99, /datum/reagent/water = 1)
build_path = /obj/item/export/bottle/vodka
/datum/design/bottle/export/tequila
name = "Export Design (Tequila)"
desc = "Allows for the blowing, and bottling of Tequila bottles."
id = "tequila_export"
- reagents_list = list("tequila" = 80, "lemon_juice" = 20)
+ reagents_list = list(/datum/reagent/consumable/ethanol/tequila = 80, /datum/reagent/consumable/lemonjuice = 20)
build_path = /obj/item/export/bottle/tequila
/datum/design/bottle/export/patron
name = "Export Design (Patron)"
desc = "Allows for the blowing, and bottling of Patron bottles."
id = "patron_export"
- reagents_list = list("patron" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/patron = 100)
build_path = /obj/item/export/bottle/patron
/datum/design/bottle/export/kahlua
name = "Export Design (Kahlua)"
desc = "Allows for the blowing, and bottling of Kahlua bottles."
id = "kahlua_export"
- reagents_list = list("kahlua" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/kahlua = 100)
build_path = /obj/item/export/bottle/kahlua
/datum/design/bottle/export/sake
name = "Export Design (Sake)"
desc = "Allows for the blowing, and bottling of Sake bottles."
id = "sake_export"
- reagents_list = list("sake" = 80, "rice" = 10, "sugar" = 10)
+ reagents_list = list(/datum/reagent/consumable/ethanol/sake = 80, /datum/reagent/consumable/rice = 10, /datum/reagent/consumable/sugar = 10)
build_path = /obj/item/export/bottle/sake
/datum/design/bottle/export/vermouth
name = "Export Design (Vermouth)"
desc = "Allows for the blowing, and bottling of Vermouth bottles."
id = "vermouth_export"
- reagents_list = list("vermouth" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/vermouth = 100)
build_path = /obj/item/export/bottle/vermouth
/datum/design/bottle/export/goldschlager
name = "Export Design (Goldschlager)"
desc = "Allows for the blowing, and bottling of Goldschlager bottles."
id = "goldschlager_export"
- reagents_list = list("goldschlager" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/goldschlager = 100)
build_path = /obj/item/export/bottle/goldschlager
/datum/design/bottle/export/hcider
name = "Export Design (Cider)"
desc = "Allows for the blowing, and bottling of Cider bottles."
id = "hcider_export"
- reagents_list = list("hcider" = 30, "water" = 20)
+ reagents_list = list(/datum/reagent/consumable/ethanol/hcider = 30, /datum/reagent/water = 20)
build_path = /obj/item/export/bottle/hcider
/datum/design/bottle/export/cognac
name = "Export Design (Cognac)"
desc = "Allows for the blowing, and bottling of Cognac bottles."
id = "cognac_export"
- reagents_list = list("cognac" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/cognac = 100)
build_path = /obj/item/export/bottle/cognac
/datum/design/bottle/export/absinthe
name = "Export Design (Absinthe)"
desc = "Allows for the blowing, and bottling of Absinthe bottles."
- reagents_list = list("absinthe" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/absinthe = 100)
id = "absinthe_export"
build_path = /obj/item/export/bottle/absinthe
@@ -249,49 +249,49 @@
name = "Export Design (Grappa)"
desc = "Allows for the blowing, and bottling of Grappa bottles."
id = "grappa_export"
- reagents_list = list("grappa" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/grappa = 100)
build_path = /obj/item/export/bottle/grappa
/datum/design/bottle/export/fernet
name = "Export Design (Fernet)"
desc = "Allows for the blowing, and bottling of Fernet bottles."
id = "fernet_export"
- reagents_list = list("fernet" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/fernet = 100)
build_path = /obj/item/export/bottle/fernet
/datum/design/bottle/export/applejack
name = "Export Design (Applejack)"
desc = "Allows for the blowing, and bottling of Applejack bottles."
id = "applejack_export"
- reagents_list = list("applejack" = 50, "gin" = 10)
+ reagents_list = list(/datum/reagent/consumable/ethanol/applejack = 50, /datum/reagent/consumable/ethanol/gin = 10)
build_path = /obj/item/export/bottle/applejack
/datum/design/bottle/export/champagne
name = "Export Design (Champagne)"
desc = "Allows for the blowing, and bottling of Champagne bottles."
id = "champagne_export"
- reagents_list = list("champagne" = 90, "co2" = 10)
+ reagents_list = list(/datum/reagent/consumable/ethanol/champagne = 90, /datum/reagent/carbondioxide = 10)
build_path = /obj/item/export/bottle/champagne
/datum/design/bottle/export/blazaam
name = "Export Design (Blazaam)"
desc = "Allows for the blowing, and bottling of Blazaam bottles."
id = "blazaam_export"
- reagents_list = list("blazaam" = 80, "holywater" = 20)
+ reagents_list = list(/datum/reagent/consumable/ethanol/blazaam = 80, /datum/reagent/water/holywater = 20)
build_path = /obj/item/export/bottle/blazaam
/datum/design/bottle/export/trappist
name = "Export Design (Trappist)"
desc = "Allows for the blowing, and bottling of Trappist bottles."
id = "trappist_export"
- reagents_list = list("trappist" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/trappist = 100)
build_path = /obj/item/export/bottle/trappist
/datum/design/bottle/export/grenadine
name = "Export Design (Grenadine)"
desc = "Allows for the blowing, and bottling of Grenadine bottles."
id = "grenadine_export"
- reagents_list = list("grenadine" = 100)
+ reagents_list = list(/datum/reagent/consumable/grenadine = 100)
build_path = /obj/item/export/bottle/grenadine
/datum/design/bottle/export/minikeg
@@ -299,7 +299,7 @@
desc = "Allows for the fabication, and bottling of Minikeg of craft beer."
id = "minikeg"
category = list("Beers")
- reagents_list = list("light_beer" = 100)
+ reagents_list = list(/datum/reagent/consumable/ethanol/beer/light = 100)
build_path = /obj/item/export/bottle/minikeg
/datum/design/bottle/export/blooddrop
@@ -307,7 +307,7 @@
desc = "Allows for the blowing, and bottling of Blooddrop bottles."
id = "blooddrop"
category = list("Wines")
- reagents_list = list("champagne" = 30, "co2" = 30, "wine" = 10, "grape_juice" = 30)
+ reagents_list = list(/datum/reagent/consumable/ethanol/champagne = 30, /datum/reagent/carbondioxide = 30, /datum/reagent/consumable/ethanol/wine = 10, /datum/reagent/consumable/grapejuice = 30)
build_path = /obj/item/export/bottle/blooddrop
/datum/design/bottle/export/slim_gold
@@ -315,7 +315,7 @@
desc = "Allows for the blowing, and bottling of Slim Gold bottles."
id = "slim_gold"
category = list("Beers")
- reagents_list = list("gold" = 10, "co2" = 10, "rum" = 30, "beer" = 40)
+ reagents_list = list(/datum/reagent/gold = 10, /datum/reagent/carbondioxide = 10, /datum/reagent/consumable/ethanol/rum = 30, /datum/reagent/consumable/ethanol/beer = 40)
build_path = /obj/item/export/bottle/slim_gold
/datum/design/bottle/export/white_bloodmoon
@@ -323,13 +323,13 @@
desc = "Allows for the blowing, and bottling of White Bloodmoon bottles."
id = "white_bloodmoon"
category = list("Wines")
- reagents_list = list("synthflesh" = 50, "blood" = 50, "gib" = 10)
+ reagents_list = list(/datum/reagent/medicine/synthflesh = 50, /datum/reagent/blood = 50, /datum/reagent/liquidgibs = 10)
build_path = /obj/item/export/bottle/white_bloodmoon
/datum/design/bottle/export/greenroad
name = "Export Design (Greenroad)"
desc = "Allows for the blowing, and bottling of Greenroad bottles."
id = "greenroad"
- reagents_list = list("vitfro" = 50, "rum" = 50, "ash" = 10)
+ reagents_list = list(/datum/reagent/consumable/vitfro = 50, /datum/reagent/consumable/ethanol/rum = 50, /datum/reagent/ash = 10)
category = list("Beers")
build_path = /obj/item/export/bottle/greenroad
\ No newline at end of file
diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm
index 2be4d106b6..dd55697bee 100644
--- a/code/modules/research/designs/biogenerator_designs.dm
+++ b/code/modules/research/designs/biogenerator_designs.dm
@@ -7,7 +7,7 @@
id = "milk"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 20)
- make_reagents = list("milk" = 10)
+ make_reagents = list(/datum/reagent/consumable/milk = 10)
category = list("initial","Food")
/datum/design/cream
@@ -15,7 +15,7 @@
id = "cream"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 30)
- make_reagents = list("cream" = 10)
+ make_reagents = list(/datum/reagent/consumable/cream = 10)
category = list("initial","Food")
/datum/design/milk_carton
@@ -39,7 +39,7 @@
id = "black_pepper"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 25)
- make_reagents = list("blackpepper" = 10)
+ make_reagents = list(/datum/reagent/consumable/blackpepper = 10)
category = list("initial","Food")
/datum/design/pepper_mill
diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm
index dae59408c8..d002c84c5f 100644
--- a/code/modules/research/designs/limbgrower_designs.dm
+++ b/code/modules/research/designs/limbgrower_designs.dm
@@ -6,7 +6,7 @@
name = "Left Arm"
id = "leftarm"
build_type = LIMBGROWER
- reagents_list = list("synthflesh" = 25)
+ reagents_list = list(/datum/reagent/medicine/synthflesh = 25)
build_path = /obj/item/bodypart/l_arm
category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno")
@@ -14,7 +14,7 @@
name = "Right Arm"
id = "rightarm"
build_type = LIMBGROWER
- reagents_list = list("synthflesh" = 25)
+ reagents_list = list(/datum/reagent/medicine/synthflesh = 25)
build_path = /obj/item/bodypart/r_arm
category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno")
@@ -22,7 +22,7 @@
name = "Left Leg"
id = "leftleg"
build_type = LIMBGROWER
- reagents_list = list("synthflesh" = 25)
+ reagents_list = list(/datum/reagent/medicine/synthflesh = 25)
build_path = /obj/item/bodypart/l_leg
category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno")
@@ -30,7 +30,7 @@
name = "Right Leg"
id = "rightleg"
build_type = LIMBGROWER
- reagents_list = list("synthflesh" = 25)
+ reagents_list = list(/datum/reagent/medicine/synthflesh = 25)
build_path = /obj/item/bodypart/r_leg
category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno")
@@ -38,6 +38,6 @@
name = "Arm Blade"
id = "armblade"
build_type = LIMBGROWER
- reagents_list = list("synthflesh" = 75)
+ reagents_list = list(/datum/reagent/medicine/synthflesh = 75)
build_path = /obj/item/melee/synthetic_arm_blade
category = list("other","emagged")
\ No newline at end of file
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index fde795d87c..e6f4670f87 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -237,7 +237,7 @@
id = "decloner"
build_type = PROTOLATHE
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000)
- reagents_list = list("mutagen" = 40)
+ reagents_list = list(/datum/reagent/toxin/mutagen = 40)
build_path = /obj/item/gun/energy/decloner
category = list("Weapons")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
@@ -268,7 +268,7 @@
id = "flora_gun"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_GLASS = 500)
- reagents_list = list("radium" = 20)
+ reagents_list = list(/datum/reagent/radium = 20)
build_path = /obj/item/gun/energy/floragun
category = list("Weapons")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 05c4a7cd93..b25ee9bb2d 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -271,7 +271,7 @@
if(!T.density)
if(prob(EFFECT_PROB_VERYHIGH) && !(locate(/obj/effect/decal/cleanable/greenglow) in T))
var/obj/effect/decal/cleanable/reagentdecal = new/obj/effect/decal/cleanable/greenglow(T)
- reagentdecal.reagents.add_reagent("radium", 7)
+ reagentdecal.reagents.add_reagent(/datum/reagent/radium, 7)
else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
var/savedName = "[exp_on]"
ejectItem(TRUE)
@@ -291,7 +291,9 @@
new /obj/item/stack/sheet/mineral/plasma(get_turf(pick(oview(1,src))))
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
visible_message("[src] destroys [exp_on], leaking dangerous gas!")
- chosenchem = pick("carbon","radium","toxin","condensedcapsaicin","mushroomhallucinogen","space_drugs","ethanol","beepskysmash")
+ chosenchem = pick(/datum/reagent/carbon,/datum/reagent/radium,/datum/reagent/toxin,
+ /datum/reagent/consumable/condensedcapsaicin,/datum/reagent/drug/mushroomhallucinogen,
+ /datum/reagent/drug/space_drugs,/datum/reagent/consumable/ethanol,/datum/reagent/consumable/ethanol/beepsky_smash)
var/datum/reagents/R = new/datum/reagents(50)
R.my_atom = src
R.add_reagent(chosenchem , 50)
@@ -304,7 +306,7 @@
ejectItem(TRUE)
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
visible_message("[src]'s chemical chamber has sprung a leak!")
- chosenchem = pick("mutationtoxin","nanomachines","sacid")
+ chosenchem = pick(/datum/reagent/mutationtoxin,/datum/reagent/nanomachines,/datum/reagent/toxin/acid)
var/datum/reagents/R = new/datum/reagents(50)
R.my_atom = src
R.add_reagent(chosenchem , 50)
@@ -331,7 +333,7 @@
visible_message("[src]'s emergency coolant system gives off a small ding!")
playsound(src, 'sound/machines/ding.ogg', 50, 1)
var/obj/item/reagent_containers/food/drinks/coffee/C = new /obj/item/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src))))
- chosenchem = pick("plasma","capsaicin","ethanol")
+ chosenchem = pick(/datum/reagent/toxin/plasma,/datum/reagent/consumable/capsaicin,/datum/reagent/consumable/ethanol)
C.reagents.remove_any(25)
C.reagents.add_reagent(chosenchem , 50)
C.name = "Cup of Suspicious Liquid"
@@ -380,7 +382,7 @@
visible_message("[src]'s emergency coolant system gives off a small ding!")
var/obj/item/reagent_containers/food/drinks/coffee/C = new /obj/item/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src))))
playsound(src, 'sound/machines/ding.ogg', 50, 1) //Ding! Your death coffee is ready!
- chosenchem = pick("uranium","frostoil","ephedrine")
+ chosenchem = pick(/datum/reagent/uranium,/datum/reagent/consumable/frostoil,/datum/reagent/medicine/ephedrine)
C.reagents.remove_any(25)
C.reagents.add_reagent(chosenchem , 50)
C.name = "Cup of Suspicious Liquid"
@@ -390,7 +392,7 @@
visible_message("[src] malfunctions, shattering [exp_on] and releasing a dangerous cloud of coolant!")
var/datum/reagents/R = new/datum/reagents(50)
R.my_atom = src
- R.add_reagent("frostoil" , 50)
+ R.add_reagent(/datum/reagent/consumable/frostoil, 50)
investigate_log("Experimentor has released frostoil gas.", INVESTIGATE_EXPERIMENTOR)
var/datum/effect_system/smoke_spread/chem/smoke = new
smoke.set_up(R, 0, src, silent = TRUE)
diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm
index 78f636d948..9ba45fb1a3 100644
--- a/code/modules/research/machinery/_production.dm
+++ b/code/modules/research/machinery/_production.dm
@@ -222,7 +222,7 @@
l += "Chemical Storage:"
for(var/datum/reagent/R in reagents.reagent_list)
l += "[R.name]: [R.volume]"
- l += "Purge"
+ l += "Purge"
l += ""
return l
diff --git a/code/modules/research/nanites/nanite_programs/buffing.dm b/code/modules/research/nanites/nanite_programs/buffing.dm
index be12d06ede..dde61ec378 100644
--- a/code/modules/research/nanites/nanite_programs/buffing.dm
+++ b/code/modules/research/nanites/nanite_programs/buffing.dm
@@ -35,7 +35,7 @@
host_mob.adjustStaminaLoss(-10) //stimulants give stamina heal now
host_mob.lying = 0
host_mob.update_canmove()
- host_mob.reagents.add_reagent("stimulants", 1.5)
+ host_mob.reagents.add_reagent(/datum/reagent/medicine/stimulants, 1.5)
/datum/nanite_program/hardening
name = "Dermal Hardening"
diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm
index e2e1661ab7..ad48b64baa 100644
--- a/code/modules/research/nanites/nanite_programs/healing.dm
+++ b/code/modules/research/nanites/nanite_programs/healing.dm
@@ -61,10 +61,10 @@
/datum/nanite_program/purging/active_effect()
host_mob.adjustToxLoss(-1)
for(var/datum/reagent/R in host_mob.reagents.reagent_list)
- if(R.id == "nanite_b_gone")
+ if(R.type == /datum/reagent/fermi/nanite_b_gone)
host_mob.adjustToxLoss(4)
continue
- host_mob.reagents.remove_reagent(R.id,1)
+ host_mob.reagents.remove_reagent(R.type,1)
/datum/nanite_program/brain_heal
name = "Neural Regeneration"
@@ -164,7 +164,7 @@
/datum/nanite_program/purging_advanced/active_effect()
host_mob.adjustToxLoss(-1, forced = TRUE)
for(var/datum/reagent/toxin/R in host_mob.reagents.reagent_list)
- host_mob.reagents.remove_reagent(R.id,1)
+ host_mob.reagents.remove_reagent(R.type,1)
/datum/nanite_program/regenerative_advanced
name = "Bio-Reconstruction"
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 38a5282aef..6cd54dd941 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -394,7 +394,7 @@ Nothing else in the console has ID requirements.
l += "Chemical Storage:"
for(var/datum/reagent/R in linked_lathe.reagents.reagent_list)
l += "[R.name]: [R.volume]"
- l += "Purge"
+ l += "Purge"
l += ""
return l
@@ -497,7 +497,7 @@ Nothing else in the console has ID requirements.
l += "Chemical Storage:"
for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list)
l += "[R.name]: [R.volume]"
- l += "Purge"
+ l += "Purge"
return l
/obj/machinery/computer/rdconsole/proc/ui_circuit_materials() //Legacy code!
diff --git a/code/modules/research/xenobiology/crossbreeding/__corecross.dm b/code/modules/research/xenobiology/crossbreeding/__corecross.dm
index 1146f01f0b..17a6b77bfe 100644
--- a/code/modules/research/xenobiology/crossbreeding/__corecross.dm
+++ b/code/modules/research/xenobiology/crossbreeding/__corecross.dm
@@ -114,19 +114,19 @@ To add a crossbreed:
name = "blood extract"
desc = "A sphere of liquid blood, somehow managing to stay together."
color = "#FF0000"
- list_reagents = list("blood" = 50)
+ list_reagents = list(/datum/reagent/blood = 50)
/obj/item/slimecrossbeaker/pax //5u synthpax.
name = "peace-inducing extract"
desc = "A small blob of synthetic pax."
color = "#FFCCCC"
- list_reagents = list("synthpax" = 5)
+ list_reagents = list(/datum/reagent/pax/peaceborg = 5)
/obj/item/slimecrossbeaker/omnizine //15u omnizine.
name = "healing extract"
desc = "A gelatinous extract of pure omnizine."
color = "#FF00FF"
- list_reagents = list("omnizine" = 15)
+ list_reagents = list(/datum/reagent/medicine/omnizine = 15)
/obj/item/slimecrossbeaker/autoinjector //As with the above, but automatically injects whomever it is used on with contents.
var/ignore_flags = FALSE
@@ -160,7 +160,7 @@ To add a crossbreed:
name = "mending solution"
desc = "A strange glob of sweet-smelling semifluid, which seems to stick to skin rather easily."
color = "#FF00FF"
- list_reagents = list("regen_jelly" = 20)
+ list_reagents = list(/datum/reagent/medicine/regen_jelly = 20)
/obj/item/slimecrossbeaker/autoinjector/slimejelly //Primarily for slimepeople, but you do you.
self_use_only = TRUE
@@ -168,13 +168,13 @@ To add a crossbreed:
name = "slime jelly bubble"
desc = "A sphere of slime jelly. It seems to stick to your skin, but avoids other surfaces."
color = "#00FF00"
- list_reagents = list("slimejelly" = 50)
+ list_reagents = list(/datum/reagent/toxin/slimejelly = 50)
/obj/item/slimecrossbeaker/autoinjector/peaceandlove
name = "peaceful distillation"
desc = "A light pink gooey sphere. Simply touching it makes you a little dizzy."
color = "#DDAAAA"
- list_reagents = list("synthpax" = 10, "space_drugs" = 15) //Peace, dudes
+ list_reagents = list(/datum/reagent/pax/peaceborg = 10, /datum/reagent/drug/space_drugs = 15) //Peace, dudes
/obj/item/slimecrossbeaker/autoinjector/peaceandlove/Initialize()
. = ..()
@@ -184,4 +184,4 @@ To add a crossbreed:
name = "invigorating gel"
desc = "A bubbling purple mixture, designed to heal and boost movement."
color = "#FF00FF"
- list_reagents = list("regen_jelly" = 30, "methamphetamine" = 9)
+ list_reagents = list(/datum/reagent/medicine/regen_jelly = 30, /datum/reagent/drug/methamphetamine = 9)
diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm
index 0099fe143d..4684352ef5 100644
--- a/code/modules/research/xenobiology/crossbreeding/_misc.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm
@@ -50,7 +50,7 @@
filling_color = "#964B00"
tastes = list("cardboard" = 3, "sadness" = 3)
foodtype = null //Don't ask what went into them. You're better off not knowing.
- list_reagents = list("stabilizednutriment" = 10, "nutriment" = 2) //Won't make you fat. Will make you question your sanity.
+ list_reagents = list(/datum/reagent/consumable/nutriment/stabilized = 10, /datum/reagent/consumable/nutriment = 2) //Won't make you fat. Will make you question your sanity.
/obj/item/reagent_containers/food/snacks/rationpack/checkLiked(fraction, mob/M) //Nobody likes rationpacks. Nobody.
if(last_check_time + 50 < world.time)
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
index 292aba6c05..0838e70bfd 100644
--- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
@@ -910,9 +910,9 @@ datum/status_effect/stabilized/blue/on_remove()
/datum/status_effect/stabilized/lightpink/tick()
owner.adjustStaminaLoss(-4.5)
for(var/mob/living/carbon/human/H in range(1, get_turf(owner)))
- if(H != owner && H.stat != DEAD && H.health <= 0 && !H.reagents.has_reagent("epinephrine"))
+ if(H != owner && H.stat != DEAD && H.health <= 0 && !H.reagents.has_reagent(/datum/reagent/medicine/epinephrine))
to_chat(owner, "[linked_extract] pulses in sync with [H]'s heartbeat, trying to keep [H.p_them()] alive.")
- H.reagents.add_reagent("epinephrine",5)
+ H.reagents.add_reagent(/datum/reagent/medicine/epinephrine,5)
return ..()
/datum/status_effect/stabilized/lightpink/on_remove()
diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm
index 363331e12d..e5b30962ae 100644
--- a/code/modules/research/xenobiology/crossbreeding/burning.dm
+++ b/code/modules/research/xenobiology/crossbreeding/burning.dm
@@ -14,10 +14,10 @@ Burning extracts:
create_reagents(10, INJECTABLE | DRAWABLE)
/obj/item/slimecross/burning/attack_self(mob/user)
- if(!reagents.has_reagent("plasma",10))
+ if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10))
to_chat(user, "This extract needs to be full of plasma to activate!")
return
- reagents.remove_reagent("plasma",10)
+ reagents.remove_reagent(/datum/reagent/toxin/plasma,10)
to_chat(user, "You squeeze the extract, and it absorbs the plasma!")
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
playsound(src, 'sound/magic/fireball.ogg', 50, 1)
@@ -44,7 +44,7 @@ Burning extracts:
/obj/item/slimecross/burning/orange/do_effect(mob/user)
user.visible_message("[src] boils over with a caustic gas!")
var/datum/reagents/R = new/datum/reagents(100)
- R.add_reagent("condensedcapsaicin", 100)
+ R.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 100)
var/datum/effect_system/smoke_spread/chem/smoke = new
smoke.set_up(R, 7, get_turf(user))
@@ -113,8 +113,8 @@ Burning extracts:
/obj/item/slimecross/burning/darkblue/do_effect(mob/user)
user.visible_message("[src] releases a burst of chilling smoke!")
var/datum/reagents/R = new/datum/reagents(100)
- R.add_reagent("frostoil", 40)
- user.reagents.add_reagent("cryoxadone",10)
+ R.add_reagent(/datum/reagent/consumable/frostoil, 40)
+ user.reagents.add_reagent(/datum/reagent/medicine/cryoxadone,10)
var/datum/effect_system/smoke_spread/chem/smoke = new
smoke.set_up(R, 7, get_turf(user))
smoke.start()
@@ -131,7 +131,7 @@ Burning extracts:
for(var/i = 0, i < amount, i++)
var/path = get_random_food()
var/obj/item/O = new path(pick(turfs))
- O.reagents.add_reagent("slimejelly",5) //Oh god it burns
+ O.reagents.add_reagent(/datum/reagent/toxin/slimejelly, 5) //Oh god it burns
if(prob(50))
O.desc += " It smells strange..."
user.visible_message("[src] produces a few pieces of food!")
@@ -268,7 +268,7 @@ Burning extracts:
/obj/item/slimecross/burning/lightpink/do_effect(mob/user)
user.visible_message("[src] lets off a hypnotizing pink glow!")
for(var/mob/living/carbon/C in view(7, get_turf(user)))
- C.reagents.add_reagent("pax",5)
+ C.reagents.add_reagent(/datum/reagent/pax, 5)
..()
/obj/item/slimecross/burning/adamantine
diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm
index 7b5fe9e8b8..75a15be9ce 100644
--- a/code/modules/research/xenobiology/crossbreeding/charged.dm
+++ b/code/modules/research/xenobiology/crossbreeding/charged.dm
@@ -15,10 +15,10 @@ Charged extracts:
create_reagents(10, INJECTABLE | DRAWABLE)
/obj/item/slimecross/charged/attack_self(mob/user)
- if(!reagents.has_reagent("plasma",10))
+ if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10))
to_chat(user, "This extract needs to be full of plasma to activate!")
return
- reagents.remove_reagent("plasma",10)
+ reagents.remove_reagent(/datum/reagent/toxin/plasma,10)
to_chat(user, "You squeeze the extract, and it absorbs the plasma!")
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
playsound(src, 'sound/effects/light_flicker.ogg', 50, 1)
diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm
index ff55a87dfa..1405bbad51 100644
--- a/code/modules/research/xenobiology/crossbreeding/chilling.dm
+++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm
@@ -14,10 +14,10 @@ Chilling extracts:
create_reagents(10, INJECTABLE | DRAWABLE)
/obj/item/slimecross/chilling/attack_self(mob/user)
- if(!reagents.has_reagent("plasma",10))
+ if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10))
to_chat(user, "This extract needs to be full of plasma to activate!")
return
- reagents.remove_reagent("plasma",10)
+ reagents.remove_reagent(/datum/reagent/toxin/plasma,10)
to_chat(user, "You squeeze the extract, and it absorbs the plasma!")
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
playsound(src, 'sound/effects/glassbr1.ogg', 50, 1)
@@ -56,7 +56,7 @@ Chilling extracts:
return
user.visible_message("[src] shatters, and a healing aura fills the room briefly.")
for(var/mob/living/carbon/C in A)
- C.reagents.add_reagent("regen_jelly",10)
+ C.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10)
..()
/obj/item/slimecross/chilling/blue
diff --git a/code/modules/research/xenobiology/crossbreeding/consuming.dm b/code/modules/research/xenobiology/crossbreeding/consuming.dm
index d6536f4fdd..0e8bf1e11f 100644
--- a/code/modules/research/xenobiology/crossbreeding/consuming.dm
+++ b/code/modules/research/xenobiology/crossbreeding/consuming.dm
@@ -20,7 +20,7 @@ Consuming extracts:
if(last_produced + cooldown > world.time)
to_chat(user, "[src] is still digesting after its last meal!")
return
- var/datum/reagent/N = O.reagents.has_reagent("nutriment")
+ var/datum/reagent/N = O.reagents.has_reagent(/datum/reagent/consumable/nutriment)
if(N)
nutriment_eaten += N.volume
to_chat(user, "[src] opens up and swallows [O] whole!")
@@ -73,7 +73,7 @@ Consuming extracts:
to_chat(M, "Tastes like [taste].")
playsound(get_turf(M), 'sound/items/eatfood.ogg', 20, 1)
if(nutrition)
- M.reagents.add_reagent("nutriment",nutrition)
+ M.reagents.add_reagent(/datum/reagent/consumable/nutriment,nutrition)
do_effect(M, user)
qdel(src)
return
@@ -199,7 +199,7 @@ Consuming extracts:
nutrition = 0 //We don't want normal nutriment
/obj/item/slime_cookie/silver/do_effect(mob/living/M, mob/user)
- M.reagents.add_reagent("stabilizednutriment",10)
+ M.reagents.add_reagent(/datum/reagent/consumable/nutriment/stabilized, 10)
/obj/item/slimecross/consuming/bluespace
colour = "bluespace"
diff --git a/code/modules/research/xenobiology/crossbreeding/industrial.dm b/code/modules/research/xenobiology/crossbreeding/industrial.dm
index a21fddb6cf..bec2c2c1ae 100644
--- a/code/modules/research/xenobiology/crossbreeding/industrial.dm
+++ b/code/modules/research/xenobiology/crossbreeding/industrial.dm
@@ -30,13 +30,13 @@ Industrial extracts:
/obj/item/slimecross/industrial/process()
var/IsWorking = FALSE
- if(reagents.has_reagent("plasma",amount = 2) && plasmarequired > 1) //Can absorb as much as 2
+ if(reagents.has_reagent(/datum/reagent/toxin/plasma,amount = 2) && plasmarequired > 1) //Can absorb as much as 2
IsWorking = TRUE
- reagents.remove_reagent("plasma",2)
+ reagents.remove_reagent(/datum/reagent/toxin/plasma,2)
plasmaabsorbed += 2
- else if(reagents.has_reagent("plasma",amount = 1)) //Can absorb as little as 1
+ else if(reagents.has_reagent(/datum/reagent/toxin/plasma,amount = 1)) //Can absorb as little as 1
IsWorking = TRUE
- reagents.remove_reagent("plasma",1)
+ reagents.remove_reagent(/datum/reagent/toxin/plasma,1)
plasmaabsorbed += 1
if(plasmaabsorbed >= plasmarequired)
diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm
index 6c7ea102bc..55865d1ae2 100644
--- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm
+++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm
@@ -51,7 +51,7 @@ Regenerative extracts:
colour = "purple"
/obj/item/slimecross/regenerative/purple/core_effect(mob/living/target, mob/user)
- target.reagents.add_reagent("regen_jelly",10)
+ target.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10)
/obj/item/slimecross/regenerative/blue
colour = "blue"
@@ -174,7 +174,7 @@ Regenerative extracts:
/obj/item/slimecross/regenerative/red/core_effect(mob/living/target, mob/user)
to_chat(target, "You feel... faster.")
- target.reagents.add_reagent("ephedrine",3)
+ target.reagents.add_reagent(/datum/reagent/medicine/ephedrine,3)
/obj/item/slimecross/regenerative/green
colour = "green"
@@ -185,7 +185,7 @@ Regenerative extracts:
var/mob/living/simple_animal/slime/S = target
S.random_colour()
if(isjellyperson(target))
- target.reagents.add_reagent("slime_toxin",5)
+ target.reagents.add_reagent(/datum/reagent/slime_toxin,5)
/obj/item/slimecross/regenerative/pink
@@ -193,7 +193,7 @@ Regenerative extracts:
/obj/item/slimecross/regenerative/pink/core_effect(mob/living/target, mob/user)
to_chat(target, "You feel more calm.")
- target.reagents.add_reagent("krokodil",4)
+ target.reagents.add_reagent(/datum/reagent/drug/krokodil,4)
/obj/item/slimecross/regenerative/gold
colour = "gold"
diff --git a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm
index a86db788a6..72b4158be6 100644
--- a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm
+++ b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm
@@ -38,10 +38,10 @@ Self-sustaining extracts:
return
if(reagentselect == "lesser plasma")
amount = 4
- reagentselect = "plasma"
+ reagentselect = /datum/reagent/toxin/plasma
if(reagentselect == "holy water and uranium")
- reagentselect = "holywater"
- secondary = "uranium"
+ reagentselect = /datum/reagent/water/holywater
+ secondary = /datum/reagent/uranium
extract.forceMove(user.drop_location())
qdel(src)
user.put_in_active_hand(extract)
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index ab0db8c4a7..8eecf1f635 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -42,7 +42,7 @@
/obj/item/slime_extract/on_grind()
if(Uses)
- grind_results["slimejelly"] = 20
+ grind_results[/datum/reagent/toxin/slimejelly] = 20
//Effect when activated by a Luminescent. Separated into a minor and major effect. Returns cooldown in deciseconds.
/obj/item/slime_extract/proc/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
@@ -78,7 +78,7 @@
name = "grey slime extract"
icon_state = "grey slime extract"
effectmod = "reproductive"
- activate_reagents = list("blood","plasma","water")
+ activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
/obj/item/slime_extract/grey/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -103,7 +103,7 @@
name = "gold slime extract"
icon_state = "gold slime extract"
effectmod = "symbiont"
- activate_reagents = list("blood","plasma","water")
+ activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
/obj/item/slime_extract/gold/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -132,7 +132,7 @@
name = "silver slime extract"
icon_state = "silver slime extract"
effectmod = "consuming"
- activate_reagents = list("plasma","water")
+ activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water)
/obj/item/slime_extract/silver/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -157,7 +157,7 @@
name = "metal slime extract"
icon_state = "metal slime extract"
effectmod = "industrial"
- activate_reagents = list("plasma","water")
+ activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water)
/obj/item/slime_extract/metal/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -181,7 +181,7 @@
name = "purple slime extract"
icon_state = "purple slime extract"
effectmod = "regenerative"
- activate_reagents = list("blood","plasma")
+ activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma)
/obj/item/slime_extract/purple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -193,14 +193,14 @@
if(SLIME_ACTIVATE_MAJOR)
to_chat(user, "You activate [src], and it releases regenerative chemicals!")
- user.reagents.add_reagent("regen_jelly",10)
+ user.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10)
return 600
/obj/item/slime_extract/darkpurple
name = "dark purple slime extract"
icon_state = "dark purple slime extract"
effectmod = "self-sustaining"
- activate_reagents = list("plasma")
+ activate_reagents = list(/datum/reagent/toxin/plasma)
/obj/item/slime_extract/darkpurple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -223,19 +223,19 @@
name = "orange slime extract"
icon_state = "orange slime extract"
effectmod = "burning"
- activate_reagents = list("blood","plasma","water")
+ activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
/obj/item/slime_extract/orange/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "You activate [src]. You start feeling hot!")
- user.reagents.add_reagent("capsaicin",10)
+ user.reagents.add_reagent(/datum/reagent/consumable/capsaicin,10)
return 150
if(SLIME_ACTIVATE_MAJOR)
- user.reagents.add_reagent("phosphorus",5)//
- user.reagents.add_reagent("potassium",5) // = smoke, along with any reagents inside mr. slime
- user.reagents.add_reagent("sugar",5) //
+ user.reagents.add_reagent(/datum/reagent/phosphorus,5)
+ user.reagents.add_reagent(/datum/reagent/potassium,5) // = smoke, along with any reagents inside mr. slime
+ user.reagents.add_reagent(/datum/reagent/consumable/sugar,5)
to_chat(user, "You activate [src], and a cloud of smoke bursts out of your skin!")
return 450
@@ -243,7 +243,7 @@
name = "yellow slime extract"
icon_state = "yellow slime extract"
effectmod = "charged"
- activate_reagents = list("blood","plasma","water")
+ activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
/obj/item/slime_extract/yellow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -266,13 +266,13 @@
name = "red slime extract"
icon_state = "red slime extract"
effectmod = "sanguine"
- activate_reagents = list("blood","plasma","water")
+ activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water)
/obj/item/slime_extract/red/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "You activate [src]. You start feeling fast!")
- user.reagents.add_reagent("ephedrine",5)
+ user.reagents.add_reagent(/datum/reagent/medicine/ephedrine,5)
return 450
if(SLIME_ACTIVATE_MAJOR)
@@ -286,15 +286,15 @@
name = "blue slime extract"
icon_state = "blue slime extract"
effectmod = "stabilized"
- activate_reagents = list("blood","plasma","water")
+ activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma, /datum/reagent/water)
/obj/item/slime_extract/blue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
to_chat(user, "You activate [src]. Your genome feels more stable!")
user.adjustCloneLoss(-15)
- user.reagents.add_reagent("mutadone", 10)
- user.reagents.add_reagent("potass_iodide", 10)
+ user.reagents.add_reagent(/datum/reagent/medicine/mutadone, 10)
+ user.reagents.add_reagent(/datum/reagent/medicine/potass_iodide, 10)
return 250
if(SLIME_ACTIVATE_MAJOR)
@@ -310,7 +310,7 @@
name = "dark blue slime extract"
icon_state = "dark blue slime extract"
effectmod = "chilling"
- activate_reagents = list("plasma","water")
+ activate_reagents = list(/datum/reagent/toxin/plasma, /datum/reagent/water)
/obj/item/slime_extract/darkblue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -318,8 +318,8 @@
to_chat(user, "You activate [src]. You start feeling colder!")
user.ExtinguishMob()
user.adjust_fire_stacks(-20)
- user.reagents.add_reagent("frostoil",4)
- user.reagents.add_reagent("cryoxadone",5)
+ user.reagents.add_reagent(/datum/reagent/consumable/frostoil,4)
+ user.reagents.add_reagent(/datum/reagent/medicine/cryoxadone,5)
return 100
if(SLIME_ACTIVATE_MAJOR)
@@ -333,7 +333,7 @@
name = "pink slime extract"
icon_state = "pink slime extract"
effectmod = "gentle"
- activate_reagents = list("blood","plasma")
+ activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma)
/obj/item/slime_extract/pink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -354,14 +354,14 @@
user.visible_message("[user]'s skin starts flashing hypnotically...", "Your skin starts forming odd patterns, pacifying creatures around you.")
for(var/mob/living/carbon/C in viewers(user, null))
if(C != user)
- C.reagents.add_reagent("pax",2)
+ C.reagents.add_reagent(/datum/reagent/pax,2)
return 600
/obj/item/slime_extract/green
name = "green slime extract"
icon_state = "green slime extract"
effectmod = "mutative"
- activate_reagents = list("blood","plasma","radium")
+ activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma, /datum/reagent/radium)
/obj/item/slime_extract/green/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -385,7 +385,7 @@
name = "light pink slime extract"
icon_state = "light pink slime extract"
effectmod = "loyal"
- activate_reagents = list("plasma")
+ activate_reagents = list(/datum/reagent/toxin/plasma)
/obj/item/slime_extract/lightpink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -409,7 +409,7 @@
name = "black slime extract"
icon_state = "black slime extract"
effectmod = "transformative"
- activate_reagents = list("plasma")
+ activate_reagents = list(/datum/reagent/toxin/plasma)
/obj/item/slime_extract/black/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -430,7 +430,7 @@
name = "oil slime extract"
icon_state = "oil slime extract"
effectmod = "detonating"
- activate_reagents = list("blood","plasma")
+ activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma)
/obj/item/slime_extract/oil/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -453,7 +453,7 @@
name = "adamantine slime extract"
icon_state = "adamantine slime extract"
effectmod = "crystalline"
- activate_reagents = list("plasma")
+ activate_reagents = list(/datum/reagent/toxin/plasma)
/obj/item/slime_extract/adamantine/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -482,7 +482,7 @@
name = "bluespace slime extract"
icon_state = "bluespace slime extract"
effectmod = "warping"
- activate_reagents = list("blood","plasma")
+ activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma)
var/teleport_ready = FALSE
var/teleport_x = 0
var/teleport_y = 0
@@ -518,7 +518,7 @@
name = "pyrite slime extract"
icon_state = "pyrite slime extract"
effectmod = "prismatic"
- activate_reagents = list("blood","plasma")
+ activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma)
/obj/item/slime_extract/pyrite/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -545,12 +545,12 @@
name = "cerulean slime extract"
icon_state = "cerulean slime extract"
effectmod = "recurring"
- activate_reagents = list("blood","plasma")
+ activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma)
/obj/item/slime_extract/cerulean/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
- user.reagents.add_reagent("salbutamol",15)
+ user.reagents.add_reagent(/datum/reagent/medicine/salbutamol,15)
to_chat(user, "You feel like you don't need to breathe!")
return 150
@@ -565,7 +565,7 @@
name = "sepia slime extract"
icon_state = "sepia slime extract"
effectmod = "lengthened"
- activate_reagents = list("blood","plasma","water")
+ activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma, /datum/reagent/water)
/obj/item/slime_extract/sepia/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
@@ -587,7 +587,7 @@
name = "rainbow slime extract"
icon_state = "rainbow slime extract"
effectmod = "hyperchromatic"
- activate_reagents = list("blood","plasma","lesser plasma","slimejelly","holy water and uranium") //Curse this snowflake reagent list.
+ activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma,"lesser plasma", /datum/reagent/toxin/slimejelly,"holy water and uranium") //Curse this snowflake reagent list.
/obj/item/slime_extract/rainbow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
switch(activation_type)
diff --git a/code/modules/ruins/lavalandruin_code/alien_nest.dm b/code/modules/ruins/lavalandruin_code/alien_nest.dm
index ca33324a90..d98a6bf5c1 100644
--- a/code/modules/ruins/lavalandruin_code/alien_nest.dm
+++ b/code/modules/ruins/lavalandruin_code/alien_nest.dm
@@ -16,4 +16,4 @@
desc = "A syringe filled with a strange viscous liquid. It might be best to leave it alone."
amount_per_transfer_from_this = 1
volume = 1
- list_reagents = list("xenomicrobes" = 1)
+ list_reagents = list(/datum/reagent/xenomicrobes = 1)
diff --git a/code/modules/surgery/advanced/necrotic_revival.dm b/code/modules/surgery/advanced/necrotic_revival.dm
index f8fb160a8a..d95d0a3ac7 100644
--- a/code/modules/surgery/advanced/necrotic_revival.dm
+++ b/code/modules/surgery/advanced/necrotic_revival.dm
@@ -19,7 +19,7 @@
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15)
implements = list(/obj/item/reagent_containers/syringe = 100, /obj/item/pen = 30)
time = 50
- chems_needed = list("zombiepowder", "rezadone")
+ chems_needed = list(/datum/reagent/toxin/zombiepowder, /datum/reagent/medicine/rezadone)
require_all_chems = FALSE
/datum/surgery_step/bionecrosis/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/advanced/viral_bonding.dm b/code/modules/surgery/advanced/viral_bonding.dm
index 87e6a8a99f..86832602e8 100644
--- a/code/modules/surgery/advanced/viral_bonding.dm
+++ b/code/modules/surgery/advanced/viral_bonding.dm
@@ -20,7 +20,7 @@
name = "viral bond"
implements = list(TOOL_CAUTERY = 100, TOOL_WELDER = 50, /obj/item = 30) // 30% success with any hot item.
time = 100
- chems_needed = list("spaceacillin","virusfood","formaldehyde")
+ chems_needed = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/consumable/virus_food,/datum/reagent/toxin/formaldehyde)
/datum/surgery_step/viral_bond/tool_check(mob/user, obj/item/tool)
if(implement_type == TOOL_WELDER || implement_type == /obj/item)
diff --git a/code/modules/surgery/embalming.dm b/code/modules/surgery/embalming.dm
index 0af3240c5d..c6d2c72caa 100644
--- a/code/modules/surgery/embalming.dm
+++ b/code/modules/surgery/embalming.dm
@@ -12,7 +12,7 @@
/datum/surgery_step/embalming
name = "embalming body"
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35)
- chems_needed = list("drying_agent", "sterilizine")
+ chems_needed = list(/datum/reagent/drying_agent, /datum/reagent/space_cleaner/sterilizine)
require_all_chems = FALSE
/datum/surgery_step/embalming/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/graft_synthtissue.dm b/code/modules/surgery/graft_synthtissue.dm
index 86b2a8e909..afe8c9d1d1 100644
--- a/code/modules/surgery/graft_synthtissue.dm
+++ b/code/modules/surgery/graft_synthtissue.dm
@@ -22,7 +22,7 @@
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15)
repeatable = TRUE
time = 75
- chems_needed = list("synthtissue")
+ chems_needed = list(/datum/reagent/synthtissue)
var/obj/item/organ/chosen_organ
var/health_restored = 10
@@ -41,7 +41,7 @@
chosen_organ = organs[chosen_organ]
if(!chosen_organ)
return -1
- if(!target.reagents.has_reagent("synthtissue"))
+ if(!target.reagents.has_reagent(/datum/reagent/synthtissue))
to_chat(user, "There's no synthtissue available for use on [chosen_organ]")
return -1
var/datum/reagent/synthtissue/Sf = locate(/datum/reagent/synthtissue) in target.reagents.reagent_list
@@ -58,7 +58,7 @@
health_restored += (Sf.data["grown_volume"]/10)
user.visible_message("[user] begins to graft synthtissue onto [chosen_organ].")
- target.reagents.remove_reagent("synthtissue", 10)
+ target.reagents.remove_reagent(/datum/reagent/synthtissue, 10)
/datum/surgery_step/graft_synthtissue/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] successfully grafts synthtissue to [chosen_organ].", "You succeed in grafting 10u of the synthflesh to the [chosen_organ].")
diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm
index 0a4bd270a8..8ea4ea855d 100644
--- a/code/modules/surgery/organs/appendix.dm
+++ b/code/modules/surgery/organs/appendix.dm
@@ -42,5 +42,5 @@
/obj/item/organ/appendix/prepare_eat()
var/obj/S = ..()
if(inflamed)
- S.reagents.add_reagent("bad_food", 5)
+ S.reagents.add_reagent(/datum/reagent/toxin/bad_food, 5)
return S
diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm
index 65172a1545..93ed149a2b 100644
--- a/code/modules/surgery/organs/augments_chest.dm
+++ b/code/modules/surgery/organs/augments_chest.dm
@@ -32,7 +32,7 @@
. = ..()
if(!owner || . & EMP_PROTECT_SELF)
return
- owner.reagents.add_reagent("bad_food", poison_amount / severity)
+ owner.reagents.add_reagent(/datum/reagent/toxin/bad_food, poison_amount / severity)
to_chat(owner, "You feel like your insides are burning.")
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 5b74b58cd0..51784bdc61 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -247,5 +247,5 @@ obj/item/organ/heart/cybernetic/upgraded/on_life()
min_next_adrenaline = world.time + rand(250, 600) //anywhere from 4.5 to 10 minutes
to_chat(owner, "You feel yourself dying, but you refuse to give up!")
owner.heal_overall_damage(15, 15)
- if(owner.reagents.get_reagent_amount("ephedrine") < 20)
- owner.reagents.add_reagent("ephedrine", 10)
+ if(owner.reagents.get_reagent_amount(/datum/reagent/medicine/ephedrine) < 20)
+ owner.reagents.add_reagent(/datum/reagent/medicine/ephedrine, 10)
diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm
index 01559c83c3..59185ebaaf 100755
--- a/code/modules/surgery/organs/liver.dm
+++ b/code/modules/surgery/organs/liver.dm
@@ -33,14 +33,12 @@
if(filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER))
//handle liver toxin filtration
- for(var/I in C.reagents.reagent_list)
- var/datum/reagent/pickedreagent = I
- if(istype(pickedreagent, /datum/reagent/toxin))
- var/thisamount = C.reagents.get_reagent_amount(initial(pickedreagent.id))
- if (thisamount <= toxTolerance && thisamount)
- C.reagents.remove_reagent(initial(pickedreagent.id), 1)
- else
- damage += (thisamount*toxLethality)
+ for(var/datum/reagent/toxin/T in C.reagents.reagent_list)
+ var/thisamount = C.reagents.get_reagent_amount(T.type)
+ if (thisamount && thisamount <= toxTolerance)
+ C.reagents.remove_reagent(T.type, 1)
+ else
+ damage += (thisamount*toxLethality)
//metabolize reagents
C.reagents.metabolize(C, can_overdose=TRUE)
@@ -56,7 +54,7 @@
/obj/item/organ/liver/prepare_eat()
var/obj/S = ..()
- S.reagents.add_reagent("iron", 5)
+ S.reagents.add_reagent(/datum/reagent/iron, 5)
return S
//Just in case
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index 6b0e4f01ae..91153655d3 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -69,7 +69,7 @@
var/heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3
var/heat_damage_type = BURN
- var/crit_stabilizing_reagent = "epinephrine"
+ var/crit_stabilizing_reagent = /datum/reagent/medicine/epinephrine
@@ -301,13 +301,13 @@
var/bz_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/bz])
if(bz_pp > BZ_trip_balls_min)
H.hallucination += 10
- H.reagents.add_reagent("bz_metabolites",5)
+ H.reagents.add_reagent(/datum/reagent/bz_metabolites,5)
if(prob(33))
H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150)
else if(bz_pp > 0.01)
H.hallucination += 5
- H.reagents.add_reagent("bz_metabolites",1)
+ H.reagents.add_reagent(/datum/reagent/bz_metabolites,1)
// Tritium
@@ -331,15 +331,15 @@
H.adjustFireLoss(nitryl_pp/4)
gas_breathed = breath_gases[/datum/gas/nitryl]
if (gas_breathed > gas_stimulation_min)
- H.reagents.add_reagent("no2",1)
+ H.reagents.add_reagent(/datum/reagent/nitryl,1)
breath_gases[/datum/gas/nitryl]-=gas_breathed
// Stimulum
gas_breathed = breath_gases[/datum/gas/stimulum]
if (gas_breathed > gas_stimulation_min)
- var/existing = H.reagents.get_reagent_amount("stimulum")
- H.reagents.add_reagent("stimulum", max(0, 5 - existing))
+ var/existing = H.reagents.get_reagent_amount(/datum/reagent/stimulum)
+ H.reagents.add_reagent(/datum/reagent/stimulum, max(0, 5 - existing))
breath_gases[/datum/gas/stimulum]-=gas_breathed
// Miasma
@@ -459,7 +459,7 @@
/obj/item/organ/lungs/prepare_eat()
var/obj/S = ..()
- S.reagents.add_reagent("salbutamol", 5)
+ S.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 5)
return S
/obj/item/organ/lungs/plasmaman
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index a180bd947e..fcbed13d94 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -173,7 +173,7 @@
name = "appendix"
icon_state = "appendix"
icon = 'icons/obj/surgery.dmi'
- list_reagents = list("nutriment" = 5)
+ list_reagents = list(/datum/reagent/consumable/nutriment = 5)
foodtype = RAW | MEAT | GROSS
diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm
index 1415604aff..73ba785ec2 100644
--- a/code/modules/vehicles/cars/clowncar.dm
+++ b/code/modules/vehicles/cars/clowncar.dm
@@ -107,7 +107,7 @@
visible_message("[user] has pressed one of the colorful buttons on [src] and the clown car spews out a cloud of laughing gas.")
var/datum/reagents/R = new/datum/reagents(300)
R.my_atom = src
- R.add_reagent("superlaughter", 50)
+ R.add_reagent(/datum/reagent/consumable/superlaughter, 50)
var/datum/effect_system/smoke_spread/chem/smoke = new()
smoke.set_up(R, 4)
smoke.attach(src)
diff --git a/code/modules/vore/eating/voreitems.dm b/code/modules/vore/eating/voreitems.dm
index 741782545a..05ab1e5f8b 100644
--- a/code/modules/vore/eating/voreitems.dm
+++ b/code/modules/vore/eating/voreitems.dm
@@ -35,7 +35,6 @@
/*
/datum/reagent/medicine/ickypak
name = "Ickypak"
- id = "ickypak"
description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things."
reagent_state = LIQUID
color = "#0E900E"
@@ -57,6 +56,6 @@
/datum/chemical_reaction/ickypak
name = "Ickypak"
- id = "ickypak"
- results = list("ickypak" = 2)
- required_reagents = list("chlorine" = 2 , "oil" = 1) */
\ No newline at end of file
+ id = /datum/reagent/medicine/ickypak
+ results = list(/datum/reagent/medicine/ickypak = 2)
+ required_reagents = list(/datum/reagent/chlorine = 2 , /datum/reagent/oil = 1) */
\ No newline at end of file
diff --git a/code/modules/vore/resizing/sizechemicals.dm b/code/modules/vore/resizing/sizechemicals.dm
index f83ba2ce76..612e8c9fde 100644
--- a/code/modules/vore/resizing/sizechemicals.dm
+++ b/code/modules/vore/resizing/sizechemicals.dm
@@ -5,7 +5,6 @@
/datum/reagent/medicine/macrocillin
name = "Macrocillin"
- id = "macrocillin"
description = "Glowing yellow liquid."
reagent_state = LIQUID
color = "#FFFF00" // rgb: 255, 255, 0
@@ -17,13 +16,12 @@
M.sizescale(size)
M << "You grow!"
break
- if(M.reagents.has_reagent("macrocillin"))
- M.reagents.remove_reagent("macrocillin", 20)
+ if(M.reagents.has_reagent(/datum/reagent/medicine/macrocillin))
+ M.reagents.remove_reagent(/datum/reagent/medicine/macrocillin, 20)
..()
/datum/reagent/medicine/microcillin
name = "Microcillin"
- id = "microcillin"
description = "Murky purple liquid."
reagent_state = LIQUID
color = "#800080"
@@ -35,14 +33,13 @@
M.sizescale(size)
M << "You shrink!"
break;
- if(M.reagents.has_reagent("microcillin"))
- M.reagents.remove_reagent("microcillin", 20)
+ if(M.reagents.has_reagent(/datum/reagent/medicine/microcillin))
+ M.reagents.remove_reagent(/datum/reagent/medicine/microcillin, 20)
..()
/datum/reagent/medicine/normalcillin
name = "Normalcillin"
- id = "normalcillin"
description = "Translucent cyan liquid."
reagent_state = LIQUID
color = "#00FFFF"
@@ -62,14 +59,13 @@
M.sizescale(SIZESCALE_SMALL)
M << "You grow!"
- if(M.reagents.has_reagent("normalcillin"))
- M.reagents.remove_reagent("normalcillin", 20)
+ if(M.reagents.has_reagent(/datum/reagent/medicine/normalcillin))
+ M.reagents.remove_reagent(/datum/reagent/medicine/normalcillin, 20)
..()
/datum/reagent/medicine/sizeoxadone
name = "Sizeoxadone"
- id = "sizeoxadone"
description = "A volatile liquid used as a precursor to size-altering chemicals. Causes dizziness if taken unprocessed."
reagent_state = LIQUID
color = "#1E90FF"
@@ -93,7 +89,6 @@
/datum/reagent/medicine/ickypak
name = "Ickypak"
- id = "ickypak"
description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things."
reagent_state = LIQUID
color = "#0E900E"
diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi
index d3bdc1b1ea..93acc07453 100644
Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 8adc7c0745..4449ca801a 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -179,7 +179,7 @@
/datum/status_effect/chem/astral_insurance/tick(mob/living/carbon/M)
. = ..()
- if(owner.reagents.has_reagent("astral"))
+ if(owner.reagents.has_reagent(/datum/reagent/fermi/astral))
return
if(owner.mind == originalmind) //If they're home, let the chem deal with deletion.
return
@@ -284,15 +284,15 @@
var/mob/living/carbon/M = owner
//chem calculations
- if(!owner.reagents.has_reagent("enthrall") && !owner.reagents.has_reagent("enthrallTest"))
+ if(!owner.reagents.has_reagent(/datum/chemical_reaction/fermi/enthrall) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall/test))
if (phase < 3 && phase != 0)
deltaResist += 3//If you've no chem, then you break out quickly
if(prob(5))
to_chat(owner, "Your mind starts to restore some of it's clarity as you feel the effects of the drug wain.")
if (mental_capacity <= 500 || phase == 4)
- if (owner.reagents.has_reagent("mannitol"))
+ if (owner.reagents.has_reagent(/datum/reagent/medicine/mannitol))
mental_capacity += 5
- if (owner.reagents.has_reagent("neurine"))
+ if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine))
mental_capacity += 10
//mindshield check
@@ -369,7 +369,7 @@
if(lewd && prob(1) && !customEcho)
to_chat(owner, "[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].")
if (4) //mindbroken
- if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent("MKUltra"))
+ if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall))
phase = 2
mental_capacity = 500
customTriggers = list()
@@ -739,18 +739,18 @@
deltaResist*= 0.5-(((2/200)*M.arousalloss)/1)//more aroused you are, the weaker resistance you can give, the less you are, the more you gain. (+/- 0.5)
//chemical resistance, brain and annaphros are the key to undoing, but the subject has to to be willing to resist.
- if (owner.reagents.has_reagent("mannitol"))
+ if (owner.reagents.has_reagent(/datum/reagent/medicine/mannitol))
deltaResist *= 1.25
- if (owner.reagents.has_reagent("neurine"))
+ if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine))
deltaResist *= 1.5
if (!(owner.client?.prefs.cit_toggles & NO_APHRO) && M.canbearoused && lewd)
- if (owner.reagents.has_reagent("anaphro"))
+ if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiac))
deltaResist *= 1.5
- if (owner.reagents.has_reagent("anaphro+"))
+ if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiacplus))
deltaResist *= 2
- if (owner.reagents.has_reagent("aphro"))
+ if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiac))
deltaResist *= 0.75
- if (owner.reagents.has_reagent("aphro+"))
+ if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiacplus))
deltaResist *= 0.5
//Antag resistance
//cultists are already brainwashed by their god
diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm
index 8d70464a2d..d5daf24f8a 100644
--- a/modular_citadel/code/modules/arousal/genitals.dm
+++ b/modular_citadel/code/modules/arousal/genitals.dm
@@ -8,7 +8,7 @@
var/orgasm_verb = "cumming" //present continous
var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this?
var/size = 2 //can vary between num or text, just used in icon_state strings
- var/fluid_id = null
+ var/datum/reagent/fluid_id = null
var/fluid_max_volume = 50
var/fluid_efficiency = 1
var/fluid_rate = CUM_RATE
diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm
index 105f5e157d..73d03eff3b 100644
--- a/modular_citadel/code/modules/arousal/organs/breasts.dm
+++ b/modular_citadel/code/modules/arousal/organs/breasts.dm
@@ -6,7 +6,7 @@
zone = BODY_ZONE_CHEST
slot = ORGAN_SLOT_BREASTS
size = "c" //refer to the breast_values static list below for the cups associated number values
- fluid_id = "milk"
+ fluid_id = /datum/reagent/consumable/milk
fluid_rate = MILK_RATE
shape = "pair"
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION
@@ -44,7 +44,7 @@
desc += " You estimate that they're [uppertext(size)]-cups."
if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) && aroused_state)
- desc += " They're leaking [fluid_id]."
+ desc += " They're leaking [initial(fluid_id.name)]."
var/string
if(owner)
if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"])
diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm
index 547674a5f1..a911eefe01 100644
--- a/modular_citadel/code/modules/arousal/organs/testicles.dm
+++ b/modular_citadel/code/modules/arousal/organs/testicles.dm
@@ -11,7 +11,7 @@
var/size_name = "average"
shape = "Single"
var/sack_size = BALLS_SACK_SIZE_DEF
- fluid_id = "semen"
+ fluid_id = /datum/reagent/consumable/semen
masturbation_verb = "massage"
layer_index = TESTICLES_LAYER_INDEX
diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm
index 9dfe811571..7f91310e3e 100644
--- a/modular_citadel/code/modules/arousal/organs/womb.dm
+++ b/modular_citadel/code/modules/arousal/organs/womb.dm
@@ -6,5 +6,5 @@
zone = BODY_ZONE_PRECISE_GROIN
slot = ORGAN_SLOT_WOMB
genital_flags = GENITAL_INTERNAL|GENITAL_FUID_PRODUCTION
- fluid_id = "femcum"
+ fluid_id = /datum/reagent/consumable/femcum
linked_organ_slot = ORGAN_SLOT_VAGINA
diff --git a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm
index 8cb56803b1..4ae3e5c488 100644
--- a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm
+++ b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm
@@ -4,7 +4,7 @@
id = "10mminc"
build_type = PROTOLATHE
materials = list(MAT_PLASMA = 50000, MAT_METAL = 18000)
- reagents_list = list("plasma" = 120, "napalm" = 240)
+ reagents_list = list(/datum/reagent/toxin/plasma = 120, /datum/reagent/napalm = 240)
build_path = /obj/item/ammo_box/magazine/m10mm/fire
category = list("Weapons")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
@@ -25,7 +25,7 @@
id = "10mmhp"
build_type = PROTOLATHE
materials = list(MAT_METAL = 40000, MAT_GLASS = 50000)
- reagents_list = list("sonic_powder" = 280)
+ reagents_list = list(/datum/reagent/sonic_powder = 280)
build_path = /obj/item/ammo_box/magazine/m10mm/hp
category = list("Ammo")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
index 65c652434b..0985b758c6 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
@@ -131,7 +131,6 @@ Creating a chem with a low purity will make you permanently fall in love with so
/datum/reagent/fermi/enthrall
name = "MKUltra"
- id = "enthrall"
description = "A forbidden deep red mixture that increases a person's succeptability to another's words. When taken by the creator, it will enhance the draw of their voice to those affected by it."
color = "#660015" // rgb: , 0, 255
taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses"
@@ -149,7 +148,6 @@ Creating a chem with a low purity will make you permanently fall in love with so
/datum/reagent/fermi/enthrall/test
name = "MKUltraTest"
- id = "enthrallTest"
description = "A forbidden deep red mixture that makes you like Fermis a little too much. Unobtainable and due to be removed from the wiki."
data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Fermis Yakumo")
creatorID = "honkatonkbramblesnatch"//ckey
@@ -158,7 +156,6 @@ Creating a chem with a low purity will make you permanently fall in love with so
purity = 1
/datum/reagent/fermi/enthrall/test/on_new()
- id = "enthrall"
..()
creator = get_mob_by_key(creatorID)
@@ -171,7 +168,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
/datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M)
. = ..()
if(M.client?.prefs.cit_toggles & NEVER_HYPNO) // Just in case people are opting out of this
- holder.remove_reagent(id, 10000000)
+ holder.del_reagent(type)
return
if(!ishuman(M))//Just to make sure screwy stuff doesn't happen.
return
@@ -221,7 +218,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
if(LAZYLEN(seen))
return
- M.reagents.remove_reagent(id, volume)
+ M.reagents.del_reagent(type)
FallInLove(M, pick(seen))
return
@@ -230,7 +227,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
if(M.has_status_effect(STATUS_EFFECT_INLOVE))
return
if((C in viewers(7, get_turf(M))) && (C.client))
- M.reagents.remove_reagent(id, volume)
+ M.reagents.del_reagent(type)
FallInLove(C, M)
return
if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it supresses the vocal effects, for stealth. NEVERMIND ADD THIS LATER I CAN'T GET IT TO WORK
@@ -282,7 +279,6 @@ Creating a chem with a low purity will make you permanently fall in love with so
//Creates a gas cloud when the reaction blows up, causing everyone in it to fall in love with someone/something while it's in their system.
/datum/reagent/fermi/enthrallExplo//Created in a gas cloud when it explodes
name = "Gaseous MKUltra"
- id = "enthrallExplo"
description = "A forbidden deep red gas that overwhelms a foreign body, causing the person they next lay their eyes on to become more interesting. Studies have shown that people are 66% more likely to make friends with this in the air. Produced when MKUltra explodes."
color = "#2C051A" // rgb: , 0, 255
metabolization_rate = 0.1
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm
index c72b702a97..87615ccb68 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm
@@ -39,7 +39,6 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
//Clone serum #chemClone
/datum/reagent/fermi/SDGF //vars, mostly only care about keeping track if there's a player in the clone or not.
name = "synthetic-derived growth factor"
- id = "SDGF"
description = "A rapidly diving mass of Embryonic stem cells. These cells are missing a nucleus and quickly replicate a host’s DNA before growing to form an almost perfect clone of the host. In some cases neural replication takes longer, though the underlying reason underneath has yet to be determined."
color = "#a502e0" // rgb: 96, 0, 255
var/playerClone = FALSE
@@ -49,9 +48,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
var/list/candies = list()
var/pollStarted = FALSE
var/startHunger
- impure_chem = "SDGFtox"
+ impure_chem = /datum/reagent/impure/SDGFtox
inverse_chem_val = 0.5
- inverse_chem = "SDZF"
+ inverse_chem = /datum/reagent/impure/SDZF
can_synth = TRUE
@@ -122,8 +121,8 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
SM.nutrition = startHunger/2
//Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger.
- SM.reagents.add_reagent("SDGFheal", volume)
- M.reagents.remove_reagent(id, volume)
+ SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume)
+ M.reagents.remove_reagent(type, volume)
log_game("FERMICHEM: [volume]u of SDGFheal has been transferred to the clone")
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Sentient clones made")
return ..()
@@ -141,7 +140,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
M.adjustBruteLoss(-1, 0)
M.adjustFireLoss(-1, 0)
M.heal_bodypart_damage(1,1)
- M.reagents.remove_reagent(id, 1)//faster rate of loss.
+ M.reagents.remove_reagent(type, 1)//faster rate of loss.
else //If there's no ghosts, but they've made a large amount, then proceed to make flavourful clone, where you become fat and useless until you split.
switch(current_cycle)
if(21)
@@ -185,7 +184,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
log_game("FERMICHEM: [M] ckey: [M.key] has created a mindless clone of themselves")
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Braindead clones made")
if(87 to INFINITY)
- M.reagents.remove_reagent(id, volume)//removes SGDF on completion. Has to do it this way because of how i've coded it. If some madlab gets over 1k of SDGF, they can have the clone healing.
+ M.reagents.remove_reagent(type, volume)//removes SGDF on completion. Has to do it this way because of how i've coded it. If some madlab gets over 1k of SDGF, they can have the clone healing.
..()
@@ -265,18 +264,17 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
SM.set_species(mutation)
//Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger.
- SM.reagents.add_reagent("SDGFheal", volume)
- M.reagents.remove_reagent(id, volume)
-
+ SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume)
+ log_combat(M, M, "SDGF clone-vived", src)
+ M.reagents.del_reagent(type)
SM.updatehealth()
SM.emote("gasp")
- log_combat(M, M, "SDGF clone-vived", src)
+ return
..()
//Unobtainable, used in clone spawn.
/datum/reagent/fermi/SDGFheal
name = "synthetic-derived healing factor"
- id = "SDGFheal"
description = "Leftover SDGF is transferred into the resulting clone, which quickly heals up the stresses from suddenly splitting. Restores blood, nutrition, and repaires brain and clone damage quickly. Only obtainable from using excess SDGF, and only enters the cloned body."
metabolization_rate = 0.8
can_synth = FALSE
@@ -292,7 +290,6 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
//Unobtainable, used if SDGF is impure but not too impure
/datum/reagent/impure/SDGFtox
name = "Synthetic-derived apoptosis factor"
- id = "SDGFtox"
description = "Impure synthetic-derived growth factor causes certain cells to undergo cell death, causing clone damage, and damaging blood cells."//i.e. tell me please, figure it's a good way to get pinged for bugfixes.
metabolization_rate = 1
can_synth = FALSE
@@ -305,7 +302,6 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
//Fail state of SDGF
/datum/reagent/impure/SDZF
name = "synthetic-derived zombie factor"
- id = "SDZF"
description = "A horribly peverse mass of Embryonic stem cells made real by the hands of a failed chemist. Emulates normal synthetic-derived growth factor, but produces a hostile zombie at the end of it."
color = "#a502e0" // rgb: 96, 0, 255
metabolization_rate = 0.2 * REAGENTS_METABOLISM
@@ -338,7 +334,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
M.adjustToxLoss(1, 0)// the warning!
if(86)//mean clone time!
- if (!M.reagents.has_reagent("pen_acid"))//Counterplay is pent.)
+ if (!M.reagents.has_reagent(/datum/reagent/medicine/pen_acid))//Counterplay is pent.)
message_admins("(non-infectious) SDZF: Zombie spawned at [M] [COORD(M)]!")
M.nutrition = startHunger - 500//YOU BEST BE RUNNING AWAY AFTER THIS YOU BADDIE
M.next_move_modifier = 1
@@ -352,7 +348,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
ZI.name = M.real_name
ZI.desc = "[M]'s clone, gone horribly wrong."
log_game("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying zombie instead")
- M.reagents.remove_reagent(id, 20)
+ M.reagents.remove_reagent(type, 20)
else//easier to deal with
to_chat(M, "The pentetic acid seems to have stopped the decay for now, clumping up the cells into a horrifying tumour!")
@@ -362,12 +358,12 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
S.name = "Living teratoma"
S.real_name = "Living teratoma"//horrifying!!
S.rabid = 1//Make them an angery boi
- M.reagents.remove_reagent(id, volume)
+ M.reagents.remove_reagent(type, volume)
to_chat(M, "A large glob of the tumour suddenly splits itself from your body. You feel grossed out and slimey...")
log_game("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying teratoma instead")
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Zombie clones made!")
if(87 to INFINITY)
M.adjustToxLoss(2, 0)
- M.reagents.remove_reagent(id, 1)
+ M.reagents.remove_reagent(type, 1)
..()
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm
index 7e094eddda..a8ac66ef20 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm
@@ -15,7 +15,6 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
/datum/reagent/fermi/astral // Gives you the ability to astral project for a moment!
name = "Astrogen"
- id = "astral"
description = "An opalescent murky liquid that is said to distort your soul from your being."
color = "#A080H4" // rgb: , 0, 255
taste_description = "your mind"
@@ -41,7 +40,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
if(origin.mind && origin.mind != originalmind)
to_chat(originalmind.current, "There's a foreign presence in your body blocking your return!")
return ..()
- if(origin.reagents.has_reagent("astral") )
+ if(origin.reagents.has_reagent(/datum/reagent/fermi/astral) )
var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in origin.reagents.reagent_list
if(As.current_cycle < 10)
to_chat(originalmind.current, "The intensity of the astrogen in your body is too much allow you to return to yourself yet!")
@@ -90,7 +89,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
if(prob(50))
to_chat(G, "The high conentration of Astrogen in your blood causes you to lapse your concentration for a moment, bringing your projection back to yourself!")
do_teleport(G, M.loc)
- M.reagents.remove_reagent(id, current_cycle/10, FALSE)//exponent
+ metabolization_rate = current_cycle/10 //exponential
sleepytime+=5
if(G)//This is a mess because of how slow qdel is, so this is all to stop runtimes.
if(G.mind)
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm
index 5f3fc61fa7..6262dc1a28 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm
@@ -11,7 +11,6 @@
/datum/reagent/fermi/eigenstate
name = "Eigenstasium"
- id = "eigenstate"
description = "A strange mixture formed from a controlled reaction of bluespace with plasma, that causes localised eigenstate fluxuations within the patient"
taste_description = "wiggly cosmic dust."
color = "#5020F4" // rgb: 50, 20, 255
@@ -69,7 +68,7 @@
/datum/reagent/fermi/eigenstate/on_mob_delete(mob/living/M) //returns back to original location
do_sparks(5,FALSE,M)
to_chat(M, "You feel your wavefunction collapse!")
- if(!M.reagents.has_reagent("stabilizing_agent"))
+ if(!M.reagents.has_reagent(/datum/reagent/stabilizing_agent))
do_teleport(M, location_return, 0, asoundin = 'sound/effects/phasein.ogg') //Teleports home
do_sparks(5,FALSE,M)
qdel(Eigenstate)
@@ -169,7 +168,7 @@
if(prob(20))
do_sparks(5,FALSE,M)
- SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[id]_overdose")//holdover until above fix works
+ SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[type]_overdose")//holdover until above fix works
..()
/datum/reagent/fermi/eigenstate/reaction_turf(turf/T, reac_volume)
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
index 6732fb06a5..b6b9c0bf34 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm
@@ -20,15 +20,14 @@
/datum/reagent/fermi/breast_enlarger
name = "Succubus milk"
- id = "breast_enlarger"
description = "A volatile collodial mixture derived from milk that encourages mammary production via a potent estrogen mix."
color = "#E60584" // rgb: 96, 0, 255
taste_description = "a milky ice cream like flavour."
overdose_threshold = 17
metabolization_rate = 0.25
- impure_chem = "BEsmaller" //If you make an inpure chem, it stalls growth
+ impure_chem = /datum/reagent/fermi/BEsmaller //If you make an inpure chem, it stalls growth
inverse_chem_val = 0.35
- inverse_chem = "BEsmaller" //At really impure vols, it just becomes 100% inverse
+ inverse_chem = /datum/reagent/fermi/BEsmaller //At really impure vols, it just becomes 100% inverse
can_synth = FALSE
var/message_spam = FALSE
@@ -44,7 +43,7 @@
M.Knockdown(50)
M.Stun(50)
B.throw_at(T2, 8, 1)
- M.reagents.remove_reagent(id, volume)
+ M.reagents.del_reagent(type)
return
var/mob/living/carbon/human/H = M
if(!H.getorganslot(ORGAN_SLOT_BREASTS) && H.emergent_genital_call())
@@ -78,7 +77,7 @@
B.cached_size = 0
B.prev_size = 0
to_chat(H, "Your chest feels warm, tingling with newfound sensitivity.")
- H.reagents.remove_reagent(id, 5)
+ H.reagents.remove_reagent(type, 5)
B.Insert(H)
//If they have them, increase size. If size is comically big, limit movement and rip clothes.
@@ -122,7 +121,6 @@
/datum/reagent/fermi/BEsmaller
name = "Modesty milk"
- id = "BEsmaller"
description = "A volatile collodial mixture derived from milk that encourages mammary reduction via a potent estrogen mix. Produced by reacting impure Succubus milk."
color = "#E60584" // rgb: 96, 0, 255
taste_description = "a milky ice cream like flavour."
@@ -140,7 +138,6 @@
/datum/reagent/fermi/BEsmaller_hypo
name = "Rectify milk" //Rectify
- id = "BEsmaller_hypo"
color = "#E60584"
taste_description = "a milky ice cream like flavour."
metabolization_rate = 0.25
@@ -179,15 +176,14 @@
//Since someone else made this in the time it took me to PR it, I merged them.
/datum/reagent/fermi/penis_enlarger // Due to popular demand...!
name = "Incubus draft"
- id = "penis_enlarger"
description = "A volatile collodial mixture derived from various masculine solutions that encourages a larger gentleman's package via a potent testosterone mix, formula derived from a collaboration from Fermichem and Doctor Ronald Hyatt, who is well known for his phallus palace." //The toxic masculinity thing is a joke because I thought it would be funny to include it in the reagents, but I don't think many would find it funny? dumb
color = "#888888" // This is greyish..?
taste_description = "chinese dragon powder"
overdose_threshold = 17 //ODing makes you male and removes female genitals
metabolization_rate = 0.5
- impure_chem = "PEsmaller" //If you make an inpure chem, it stalls growth
+ impure_chem = /datum/reagent/fermi/PEsmaller //If you make an inpure chem, it stalls growth
inverse_chem_val = 0.35
- inverse_chem = "PEsmaller" //At really impure vols, it just becomes 100% inverse and shrinks instead.
+ inverse_chem = /datum/reagent/fermi/PEsmaller //At really impure vols, it just becomes 100% inverse and shrinks instead.
can_synth = FALSE
var/message_spam = FALSE
@@ -203,7 +199,7 @@
M.Knockdown(50)
M.Stun(50)
P.throw_at(T2, 8, 1)
- M.reagents.remove_reagent(id, volume)
+ M.reagents.del_reagent(type)
return
var/mob/living/carbon/human/H = M
if(!H.getorganslot(ORGAN_SLOT_PENIS) && H.emergent_genital_call())
@@ -228,7 +224,7 @@
P.length = 1
to_chat(H, "Your groin feels warm, as you feel a newly forming bulge down below.")
P.prev_length = 1
- H.reagents.remove_reagent(id, 5)
+ H.reagents.remove_reagent(type, 5)
P.Insert(H)
P.modify_size(0.1)
@@ -271,7 +267,6 @@
/datum/reagent/fermi/PEsmaller // Due to cozmo's request...!
name = "Chastity draft"
- id = "PEsmaller"
description = "A volatile collodial mixture derived from various masculine solutions that encourages a smaller gentleman's package via a potent testosterone mix. Produced by reacting impure Incubus draft."
color = "#888888" // This is greyish..?
taste_description = "chinese dragon powder"
@@ -293,7 +288,6 @@
/datum/reagent/fermi/PEsmaller_hypo
name = "Rectify draft"
- id = "PEsmaller_hypo"
color = "#888888" // This is greyish..?
taste_description = "chinese dragon powder"
description = "A medicine used to treat organomegaly in a patient's penis."
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
index b3ee8f5b7f..e9c5733584 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -3,13 +3,12 @@
/datum/reagent/fermi
name = "Fermi" //This should never exist, but it does so that it can exist in the case of errors..
- id = "fermi"
taste_description = "affection and love!"
can_synth = FALSE
value = 20
- impure_chem = "fermiTox"// What chemical is metabolised with an inpure reaction
+ impure_chem = /datum/reagent/impure/fermiTox // What chemical is metabolised with an inpure reaction
inverse_chem_val = 0.25 // If the impurity is below 0.5, replace ALL of the chem with inverse_chemupon metabolising
- inverse_chem = "fermiTox"
+ inverse_chem = /datum/reagent/impure/fermiTox
//This should process fermichems to find out how pure they are and what effect to do.
@@ -32,7 +31,6 @@
/datum/reagent/fermi/hatmium //for hatterhat
name = "Hat growth serium"
- id = "hatmium"
description = "A strange substance that draws in a hat from the hat dimention."
color = "#7c311a" // rgb: , 0, 255
taste_description = "like jerky, whiskey and an off aftertaste of a crypt."
@@ -80,7 +78,6 @@
/datum/reagent/fermi/furranium
name = "Furranium"
- id = "furranium"
description = "OwO whats this?"
color = "#f9b9bc" // rgb: , 0, 255
taste_description = "dewicious degenyewacy"
@@ -170,13 +167,12 @@
/datum/reagent/fermi/nanite_b_gone
name = "Nanite bane"
- id = "nanite_b_gone"
description = "A stablised EMP that is highly volatile, shocking small nano machines that will kill them off at a rapid rate in a patient's system."
color = "#708f8f"
overdose_threshold = 15
- impure_chem = "nanite_b_goneTox" //If you make an inpure chem, it stalls growth
+ impure_chem = /datum/reagent/fermi/nanite_b_goneTox //If you make an inpure chem, it stalls growth
inverse_chem_val = 0.25
- inverse_chem = "nanite_b_goneTox" //At really impure vols, it just becomes 100% inverse
+ inverse_chem = /datum/reagent/fermi/nanite_b_goneTox //At really impure vols, it just becomes 100% inverse
taste_description = "what can only be described as licking a battery."
pH = 9
value = 90
@@ -214,7 +210,6 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
/datum/reagent/fermi/nanite_b_goneTox
name = "Electromagnetic crystals"
- id = "nanite_b_goneTox"
description = "Causes items upon the patient to sometimes short out, as well as causing a shock in the patient, if the residual charge between the crystals builds up to sufficient quantities"
metabolization_rate = 0.5
chemical_flags = REAGENT_INVISIBLE
@@ -237,7 +232,6 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
/datum/reagent/fermi/fermiAcid
name = "Acid vapour"
- id = "fermiAcid"
description = "Someone didn't do like an otter, and add acid to water."
taste_description = "acid burns, ow"
color = "#FFFFFF"
@@ -280,7 +274,6 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
/datum/reagent/fermi/fermiTest
name = "Fermis Test Reagent"
- id = "fermiTest"
description = "You should be really careful with this...! Also, how did you get this?"
chemical_flags = REAGENT_FORCEONNEW
can_synth = FALSE
@@ -290,7 +283,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
if(LAZYLEN(holder.reagent_list) == 1)
return
else
- holder.remove_reagent("fermiTest", volume)//Avoiding recurrsion
+ holder.del_reagent(type)//Avoiding recurrsion
var/location = get_turf(holder.my_atom)
if(cached_purity < 0.34 || cached_purity == 1)
var/datum/effect_system/foam_spread/s = new()
@@ -303,10 +296,10 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
if(cached_purity >= 0.67)
for (var/datum/reagent/reagent in holder.reagent_list)
if (istype(reagent, /datum/reagent/fermi))
- var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id]
+ var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.type]
Ferm.FermiExplode(src, holder.my_atom, holder, holder.total_volume, holder.chem_temp, holder.pH)
else
- var/datum/chemical_reaction/Ferm = GLOB.chemical_reagents_list[reagent.id]
+ var/datum/chemical_reaction/Ferm = GLOB.chemical_reagents_list[reagent.type]
Ferm.on_reaction(holder, reagent.volume)
for(var/mob/M in viewers(8, location))
to_chat(M, "The solution reacts dramatically, with a meow!")
@@ -315,7 +308,6 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
/datum/reagent/fermi/acidic_buffer
name = "Acidic buffer"
- id = "acidic_buffer"
description = "This reagent will consume itself and move the pH of a beaker towards acidity when added to another."
color = "#fbc314"
pH = 0
@@ -323,7 +315,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
//Consumes self on addition and shifts pH
/datum/reagent/fermi/acidic_buffer/on_new(datapH)
- if(holder.has_reagent("stabilizing_agent"))
+ if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return ..()
data = datapH
if(LAZYLEN(holder.reagent_list) == 1)
@@ -333,19 +325,18 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
for(var/mob/M in seen)
to_chat(M, "The beaker fizzes as the pH changes!")
playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1)
- holder.remove_reagent(id, volume, ignore_pH = TRUE)
+ holder.remove_reagent(type, volume, ignore_pH = TRUE)
..()
/datum/reagent/fermi/basic_buffer
name = "Basic buffer"
- id = "basic_buffer"
description = "This reagent will consume itself and move the pH of a beaker towards alkalinity when added to another."
color = "#3853a4"
pH = 14
can_synth = TRUE
/datum/reagent/fermi/basic_buffer/on_new(datapH)
- if(holder.has_reagent("stabilizing_agent"))
+ if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return ..()
data = datapH
if(LAZYLEN(holder.reagent_list) == 1)
@@ -355,14 +346,13 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
for(var/mob/M in seen)
to_chat(M, "The beaker froths as the pH changes!")
playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1)
- holder.remove_reagent(id, volume, ignore_pH = TRUE)
+ holder.remove_reagent(type, volume, ignore_pH = TRUE)
..()
//Turns you into a cute catto while it's in your system.
//If you manage to gamble perfectly, makes you have cat ears after you transform back. But really, you shouldn't end up with that with how random it is.
/datum/reagent/fermi/secretcatchem //Should I hide this from code divers? A secret cit chem?
name = "secretcatchem" //an attempt at hiding it
- id = "secretcatchem"
description = "An illegal and hidden chem that turns people into cats. It's said that it's so rare and unstable that having it means you've been blessed. If used on someone in crit, it will turn them into a cat permanently, until the cat is killed."
taste_description = "hairballs and cream"
color = "#ffc224"
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
index fa4f48172b..8668ef76f0 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
@@ -1,14 +1,13 @@
/datum/reagent/fermi/yamerol
name = "Yamerol"
- id = "yamerol"
description = "For when you've trouble speaking or breathing, just yell YAMEROL! A chem that helps soothe any congestion problems and at high concentrations restores damaged lungs and tongues!"
taste_description = "a weird, syrupy flavour, yamero"
color = "#68e83a"
pH = 8.6
overdose_threshold = 35
- impure_chem = "yamerol_tox"
+ impure_chem = /datum/reagent/impure/yamerol_tox
inverse_chem_val = 0.4
- inverse_chem = "yamerol_tox"
+ inverse_chem = /datum/reagent/impure/yamerol_tox
can_synth = TRUE
/datum/reagent/fermi/yamerol/on_mob_life(mob/living/carbon/C)
@@ -34,7 +33,7 @@
qdel(T)
nT.Insert(C)
to_chat(C, "You feel your tongue.... unfluffify...?")
- holder.remove_reagent(src.id, "10")
+ holder.remove_reagent(type, 10)
..()
/datum/reagent/fermi/yamerol/overdose_process(mob/living/carbon/C)
@@ -50,7 +49,7 @@
T = new()
T.Insert(C)
to_chat(C, "You feel your tongue reform in your mouth.")
- holder.remove_reagent(src.id, "10")
+ holder.remove_reagent(type, 10)
else
if((oT.name == "fluffy tongue") && (purity == 1))
var/obj/item/organ/tongue/T
@@ -62,19 +61,18 @@
qdel(oT)
T.Insert(C)
to_chat(C, "You feel your tongue.... unfluffify...?")
- holder.remove_reagent(src.id, "10")
+ holder.remove_reagent(type, 10)
if(!C.getorganslot(ORGAN_SLOT_LUNGS))
var/obj/item/organ/lungs/yamerol/L = new()
L.Insert(C)
to_chat(C, "You feel the yamerol merge in your chest.")
- holder.remove_reagent(src.id, "10")
+ holder.remove_reagent(type, 10)
C.adjustOxyLoss(-3)
..()
/datum/reagent/impure/yamerol_tox
name = "Yamer oh no"
- id = "yamerol_tox"
description = "A dangerous, cloying toxin that stucks to a patient’s respiratory system, damaging their tongue, lungs and causing suffocation."
taste_description = "a weird, syrupy flavour, yamero"
color = "#68e83a"
@@ -96,7 +94,6 @@
/datum/reagent/synthtissue
name = "Synthtissue"
- id = "synthtissue"
description = "Synthetic tissue used for grafting onto damaged organs during surgery, or for treating limb damage. Has a very tight growth window between 305-320, any higher and the temperature will cause the cells to die. Additionally, growth time is considerably long, so chemists are encouraged to leave beakers with said reaction ongoing, while they tend to their other duties."
pH = 7.6
metabolization_rate = 0.05 //Give them time to graft
@@ -143,7 +140,7 @@
if(data["grown_volume"] > 175) //I don't think this is even possible, but damn to I want to see if someone can (bare in mind it takes 2s to grow 0.05u)
if(volume >= 14)
if(C.regenerate_organs(only_one = TRUE))
- C.reagents.remove_reagent(id, 15)
+ C.reagents.remove_reagent(type, 15)
to_chat(C, "You feel something reform inside of you!")
data["injected_vol"] -= metabolization_rate
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm
index c8ebde11d9..87f9d71ce2 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -1,6 +1,5 @@
/datum/reagent/syndicateadrenals
name = "Syndicate Adrenaline"
- id = "syndicateadrenals"
description = "Regenerates your stamina and increases your reaction time."
color = "#E62111"
overdose_threshold = 6
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index 5ea1fc77be..31e319edd3 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -9,19 +9,19 @@
/datum/chemical_reaction/proc/FermiFinish(datum/reagents/holder, var/atom/my_atom, reactVol)
if(clear_conversion == REACTION_CLEAR_IMPURE | REACTION_CLEAR_INVERSE)
for(var/id in results)
- var/datum/reagent/R = my_atom.reagents.has_reagent("[id]")
+ var/datum/reagent/R = my_atom.reagents.has_reagent(id)
if(R.purity == 1)
continue
var/cached_volume = R.volume
if(clear_conversion == REACTION_CLEAR_INVERSE && R.inverse_chem)
if(R.inverse_chem_val > R.purity)
- my_atom.reagents.remove_reagent(R.id, cached_volume, FALSE)
+ my_atom.reagents.remove_reagent(R.type, cached_volume, FALSE)
my_atom.reagents.add_reagent(R.inverse_chem, cached_volume, FALSE, other_purity = 1)
else if (clear_conversion == REACTION_CLEAR_IMPURE && R.impure_chem)
var/impureVol = cached_volume * (1 - R.purity)
- my_atom.reagents.remove_reagent(R.id, (impureVol), FALSE)
+ my_atom.reagents.remove_reagent(R.type, (impureVol), FALSE)
my_atom.reagents.add_reagent(R.impure_chem, impureVol, FALSE, other_purity = 1)
R.cached_purity = R.purity
R.purity = 1
@@ -76,14 +76,15 @@
var/datum/effect_system/smoke_spread/chem/s = new()
R.my_atom = my_atom //Give the gas a fingerprint
- for (var/datum/reagent/reagent in R0.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding
- R.add_reagent(reagent.id, reagent.volume/3) //Seems fine? I think I fixed the infinite explosion bug.
+ for (var/A in R0.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding
+ var/datum/reagent/R2 = A
+ R.add_reagent(R2.type, R2.volume/3) //Seems fine? I think I fixed the infinite explosion bug.
- if (reagent.purity < 0.6)
- ImpureTot = (ImpureTot + (1-reagent.purity)) / 2
+ if (R2.purity < 0.6)
+ ImpureTot = (ImpureTot + (1-R2.purity)) / 2
if(pH < 4) //if acidic, make acid spray
- R.add_reagent("fermiAcid", (volume/3))
+ R.add_reagent(/datum/reagent/impure/fermiTox, (volume/3))
if(R.reagent_list)
s.set_up(R, (volume/5), my_atom)
s.start()
@@ -103,9 +104,9 @@
/datum/chemical_reaction/fermi/eigenstate
name = "Eigenstasium"
- id = "eigenstate"
- results = list("eigenstate" = 1)
- required_reagents = list("bluespace" = 1, "stable_plasma" = 1, "caramel" = 1)
+ id = /datum/reagent/fermi/eigenstate
+ results = list(/datum/reagent/fermi/eigenstate = 1)
+ required_reagents = list(/datum/reagent/bluespace = 1, /datum/reagent/stable_plasma = 1, /datum/reagent/consumable/caramel = 1)
mix_message = "the reaction zaps suddenly!"
//FermiChem vars:
OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions
@@ -137,9 +138,9 @@
//serum
/datum/chemical_reaction/fermi/SDGF
name = "Synthetic-derived growth factor"
- id = "SDGF"
- results = list("SDGF" = 3)
- required_reagents = list("stable_plasma" = 1.5, "clonexadone" = 1.5, "uranium" = 1.5, "synthflesh" = 1.5)
+ id = /datum/reagent/fermi/SDGF
+ results = list(/datum/reagent/fermi/SDGF = 3)
+ required_reagents = list(/datum/reagent/stable_plasma = 1.5, /datum/reagent/medicine/clonexadone = 1.5, /datum/reagent/uranium = 1.5, /datum/reagent/medicine/synthflesh = 1.5)
mix_message = "the reaction gives off a blorble!"
required_temp = 1
//FermiChem vars:
@@ -178,9 +179,9 @@
/datum/chemical_reaction/fermi/breast_enlarger
name = "Sucubus milk"
- id = "breast_enlarger"
- results = list("breast_enlarger" = 8)
- required_reagents = list("salglu_solution" = 1, "milk" = 1, "synthflesh" = 2, "silicon" = 3, "aphro" = 3)
+ id = /datum/reagent/fermi/breast_enlarger
+ results = list(/datum/reagent/fermi/breast_enlarger = 8)
+ required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/silicon = 3, /datum/reagent/drug/aphrodisiac = 3)
mix_message = "the reaction gives off a mist of milk."
//FermiChem vars:
OptimalTempMin = 200
@@ -203,8 +204,8 @@
var/datum/reagent/fermi/breast_enlarger/BE = locate(/datum/reagent/fermi/breast_enlarger) in my_atom.reagents.reagent_list
var/cached_volume = BE.volume
if(BE.purity < 0.35)
- holder.remove_reagent(src.id, cached_volume)
- holder.add_reagent("BEsmaller", cached_volume)
+ holder.remove_reagent(type, cached_volume)
+ holder.add_reagent(/datum/reagent/fermi/BEsmaller, cached_volume)
/datum/chemical_reaction/fermi/breast_enlarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
@@ -218,9 +219,9 @@
/datum/chemical_reaction/fermi/penis_enlarger
name = "Incubus draft"
- id = "penis_enlarger"
- results = list("penis_enlarger" = 8)
- required_reagents = list("blood" = 5, "synthflesh" = 2, "carbon" = 2, "aphro" = 2, "salglu_solution" = 1)
+ id = /datum/reagent/fermi/penis_enlarger
+ results = list(/datum/reagent/fermi/penis_enlarger = 8)
+ required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/carbon = 2, /datum/reagent/drug/aphrodisiac = 2, /datum/reagent/medicine/salglu_solution = 1)
mix_message = "the reaction gives off a spicy mist."
//FermiChem vars:
OptimalTempMin = 200
@@ -252,14 +253,14 @@
var/datum/reagent/fermi/penis_enlarger/PE = locate(/datum/reagent/fermi/penis_enlarger) in my_atom.reagents.reagent_list
var/cached_volume = PE.volume
if(PE.purity < 0.35)
- holder.remove_reagent(src.id, cached_volume)
- holder.add_reagent("PEsmaller", cached_volume)
+ holder.remove_reagent(type, cached_volume)
+ holder.add_reagent(/datum/reagent/fermi/PEsmaller, cached_volume)
/datum/chemical_reaction/fermi/astral
name = "Astrogen"
- id = "astral"
- results = list("astral" = 5)
- required_reagents = list("eigenstate" = 1, "plasma" = 3, "synaptizine" = 1, "aluminium" = 5)
+ id = /datum/reagent/fermi/astral
+ results = list(/datum/reagent/fermi/astral = 5)
+ required_reagents = list(/datum/reagent/fermi/eigenstate = 1, /datum/reagent/toxin/plasma = 3, /datum/reagent/medicine/synaptizine = 1, /datum/reagent/aluminium = 5)
//FermiChem vars:
OptimalTempMin = 700
OptimalTempMax = 800
@@ -278,12 +279,12 @@
PurityMin = 0.25
-/datum/chemical_reaction/fermi/enthrall/ //check this
+/datum/chemical_reaction/fermi/enthrall //check this
name = "MKUltra"
- id = "enthrall"
- results = list("enthrall" = 5)
- required_reagents = list("cocoa" = 1, "bluespace" = 1, "mindbreaker" = 1, "psicodine" = 1, "happiness" = 1)
- required_catalysts = list("blood" = 1)
+ id = /datum/reagent/fermi/enthrall
+ results = list(/datum/reagent/fermi/enthrall = 5)
+ required_reagents = list(/datum/reagent/consumable/coco = 1, /datum/reagent/bluespace = 1, /datum/reagent/toxin/mindbreaker = 1, /datum/reagent/medicine/psicodine = 1, /datum/reagent/drug/happiness = 1)
+ required_catalysts = list(/datum/reagent/blood = 1)
mix_message = "the reaction gives off a burgundy plume of smoke!"
//FermiChem vars:
OptimalTempMin = 780
@@ -325,7 +326,8 @@
//So slimes can play too.
/datum/chemical_reaction/fermi/enthrall/slime
- required_catalysts = list("jellyblood" = 1)
+ id = "enthrall2"
+ required_catalysts = list(/datum/reagent/blood/jellyblood = 1)
/datum/chemical_reaction/fermi/enthrall/slime/FermiFinish(datum/reagents/holder, var/atom/my_atom)
var/datum/reagent/blood/jellyblood/B = locate(/datum/reagent/blood/jellyblood) in my_atom.reagents.reagent_list//The one line change.
@@ -350,16 +352,16 @@
var/turf/T = get_turf(my_atom)
var/datum/reagents/R = new/datum/reagents(1000)
var/datum/effect_system/smoke_spread/chem/s = new()
- R.add_reagent("enthrallExplo", volume)
+ R.add_reagent(/datum/reagent/fermi/enthrallExplo, volume)
s.set_up(R, volume/2, T)
s.start()
my_atom.reagents.clear_reagents()
/datum/chemical_reaction/fermi/hatmium // done
name = "Hat growth serum"
- id = "hatmium"
- results = list("hatmium" = 5)
- required_reagents = list("ethanol" = 1, "nutriment" = 3, "cooking_oil" = 2, "iron" = 1, "gold" = 3)
+ id = /datum/reagent/fermi/hatmium
+ results = list(/datum/reagent/fermi/hatmium = 5)
+ required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/iron = 1, /datum/reagent/gold = 3)
//mix_message = ""
//FermiChem vars:
OptimalTempMin = 500
@@ -392,9 +394,9 @@
/datum/chemical_reaction/fermi/furranium
name = "Furranium"
- id = "furranium"
- results = list("furranium" = 5)
- required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 2, "salglu_solution" = 1)
+ id = /datum/reagent/fermi/furranium
+ results = list(/datum/reagent/fermi/furranium = 5)
+ required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/moonsugar = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1)
mix_message = "You think you can hear a howl come from the beaker."
//FermiChem vars:
OptimalTempMin = 350
@@ -413,7 +415,8 @@
PurityMin = 0.3
/datum/chemical_reaction/fermi/furranium/organic
- required_reagents = list("aphro" = 1, "catnip" = 1, "silver" = 2, "salglu_solution" = 1)
+ id = "furranium_organic"
+ required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/pax/catnip = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1)
//FOR INSTANT REACTIONS - DO NOT MULTIPLY LIMIT BY 10.
//There's a weird rounding error or something ugh.
@@ -421,9 +424,9 @@
//Nano-b-gone
/datum/chemical_reaction/fermi/nanite_b_gone//done test
name = "Naninte bain"
- id = "nanite_b_gone"
- results = list("nanite_b_gone" = 4)
- required_reagents = list("synthflesh" = 1, "uranium" = 1, "iron" = 1, "salglu_solution" = 1)
+ id = /datum/reagent/fermi/nanite_b_gone
+ results = list(/datum/reagent/fermi/nanite_b_gone = 4)
+ required_reagents = list(/datum/reagent/medicine/synthflesh = 1, /datum/reagent/uranium = 1, /datum/reagent/iron = 1, /datum/reagent/medicine/salglu_solution = 1)
mix_message = "the reaction gurgles, encapsulating the reagents in flesh before the emp can be set off."
required_temp = 450//To force fermireactions before EMP.
//FermiChem vars:
@@ -443,9 +446,9 @@
/datum/chemical_reaction/fermi/acidic_buffer//done test
name = "Acetic acid buffer"
- id = "acidic_buffer"
- results = list("acidic_buffer" = 10) //acetic acid
- required_reagents = list("salglu_solution" = 1, "ethanol" = 3, "oxygen" = 3, "water" = 3)
+ id = /datum/reagent/fermi/acidic_buffer
+ results = list(/datum/reagent/fermi/acidic_buffer = 10) //acetic acid
+ required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/ethanol = 3, /datum/reagent/oxygen = 3, /datum/reagent/water = 3)
//FermiChem vars:
OptimalTempMin = 250
OptimalTempMax = 500
@@ -470,10 +473,10 @@
/datum/chemical_reaction/fermi/basic_buffer//done test
name = "Ethyl Ethanoate buffer"
- id = "basic_buffer"
- results = list("basic_buffer" = 5)
- required_reagents = list("lye" = 1, "ethanol" = 2, "water" = 2)
- required_catalysts = list("sacid" = 1) //vagely acetic
+ id = /datum/reagent/fermi/basic_buffer
+ results = list(/datum/reagent/fermi/basic_buffer = 5)
+ required_reagents = list(/datum/reagent/lye = 1, /datum/reagent/consumable/ethanol = 2, /datum/reagent/water = 2)
+ required_catalysts = list(/datum/reagent/toxin/acid = 1) //vagely acetic
//FermiChem vars:
OptimalTempMin = 250
OptimalTempMax = 500
@@ -502,10 +505,10 @@
//ChemReactionVars:
/datum/chemical_reaction/fermi/secretcatchem //DONE
name = "secretcatchem"
- id = "secretcatchem"
- results = list("secretcatchem" = 5)
- required_reagents = list("stable_plasma" = 1, "caramel" = 1, "cream" = 1, "clonexadone" = 1)//Yes this will make a kitty if you don't lucky guess. It'll eat all your reagents too.
- required_catalysts = list("SDGF" = 1)
+ id = /datum/reagent/fermi/secretcatchem
+ results = list(/datum/reagent/fermi/secretcatchem = 5)
+ required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/consumable/caramel = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/medicine/clonexadone = 1)//Yes this will make a kitty if you don't lucky guess. It'll eat all your reagents too.
+ required_catalysts = list(/datum/reagent/fermi/SDGF = 1)
required_temp = 500
mix_message = "the reaction gives off a meow!"
mix_sound = "modular_citadel/sound/voice/merowr.ogg"
@@ -536,8 +539,8 @@
HIonRelease += (rand(-25, 25)/100)
RateUpLim += (rand(1, 1000)/100)
PurityMin += (rand(-1, 1)/10)
- var/additions = list("aluminium", "silver", "gold", "plasma", "silicon", "uranium", "milk")
- required_reagents[pick(additions)] = rand(1, 5)//weird
+ var/picked = pick(/datum/reagent/aluminium, /datum/reagent/silver, /datum/reagent/gold, /datum/reagent/toxin/plasma, /datum/reagent/silicon, /datum/reagent/uranium, /datum/reagent/consumable/milk)
+ required_reagents[picked] = rand(1, 5)//weird
/datum/chemical_reaction/fermi/secretcatchem/FermiFinish(datum/reagents/holder, var/atom/my_atom)
SSblackbox.record_feedback("tally", "catgirlium")//log
@@ -555,9 +558,9 @@
/datum/chemical_reaction/fermi/yamerol//done test
name = "Yamerol"
- id = "yamerol"
- results = list("yamerol" = 3)
- required_reagents = list("perfluorodecalin" = 1, "salbutamol" = 1, "water" = 1)
+ id = /datum/reagent/fermi/yamerol
+ results = list(/datum/reagent/fermi/yamerol = 3)
+ required_reagents = list(/datum/reagent/medicine/perfluorodecalin = 1, /datum/reagent/medicine/salbutamol = 1, /datum/reagent/water = 1)
//FermiChem vars:
OptimalTempMin = 300
OptimalTempMax = 500
diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
index f6b70eb7b6..b907c27329 100644
--- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
+++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
@@ -1,7 +1,6 @@
//body bluids
/datum/reagent/consumable/semen
name = "Semen"
- id = "semen"
description = "Sperm from some animal. I bet you'll drink this out of a bucket someday."
taste_description = "something salty"
taste_mult = 2 //Not very overpowering flavor
@@ -45,7 +44,6 @@
/datum/reagent/consumable/femcum
name = "Female Ejaculate"
- id = "femcum"
description = "Vaginal lubricant found in most mammals and other animals of similar nature. Where you found this is your own business."
taste_description = "something with a tang" // wew coders who haven't eaten out a girl.
taste_mult = 2
@@ -93,7 +91,6 @@
/datum/reagent/drug/aphrodisiac
name = "Crocin"
- id = "aphro"
description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac."
taste_description = "strawberry roofies"
taste_mult = 2 //Hide the roofies in stronger flavors
@@ -112,7 +109,6 @@
/datum/reagent/drug/aphrodisiacplus
name = "Hexacrocin"
- id = "aphro+"
description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive in most animals.\
Addiction withdrawals can cause brain damage and shortness of breath. Overdosage can lead to brain damage and a \
permanent increase in libido (commonly referred to as 'bimbofication')."
@@ -167,7 +163,6 @@
/datum/reagent/drug/anaphrodisiac
name = "Camphor"
- id = "anaphro"
description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When injested by most animals, it acts as an anaphrodisiac\
, reducing libido and calming them. Non-habit forming and not addictive."
taste_description = "dull bitterness"
@@ -182,7 +177,6 @@
/datum/reagent/drug/anaphrodisiacplus
name = "Hexacamphor"
- id = "anaphro+"
description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive."
taste_description = "tranquil celibacy"
color = "#D9D9D9"//rgb(217, 217, 217)
@@ -206,32 +200,32 @@
//recipes
/datum/chemical_reaction/aphro
name = "crocin"
- id = "aphro"
- results = list("aphro" = 6)
- required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1)
+ id = /datum/reagent/drug/aphrodisiac
+ results = list(/datum/reagent/drug/aphrodisiac = 6)
+ required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/water = 1)
required_temp = 400
mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin
/datum/chemical_reaction/aphroplus
name = "hexacrocin"
- id = "aphro+"
- results = list("aphro+" = 1)
- required_reagents = list("aphro" = 6, "phenol" = 1)
+ id = /datum/reagent/drug/aphrodisiacplus
+ results = list(/datum/reagent/drug/aphrodisiacplus = 1)
+ required_reagents = list(/datum/reagent/drug/aphrodisiac = 6, /datum/reagent/phenol = 1)
required_temp = 400
mix_message = "The mixture rapidly condenses and darkens in color..."
/datum/chemical_reaction/anaphro
name = "camphor"
- id = "anaphro"
- results = list("anaphro" = 6)
- required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "sulfur" = 1)
+ id = /datum/reagent/drug/anaphrodisiac
+ results = list(/datum/reagent/drug/anaphrodisiac = 6)
+ required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/sulfur = 1)
required_temp = 400
mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor
/datum/chemical_reaction/anaphroplus
name = "pentacamphor"
- id = "anaphro+"
- results = list("anaphro+" = 1)
- required_reagents = list("anaphro" = 5, "acetone" = 1)
+ id = /datum/reagent/drug/anaphrodisiacplus
+ results = list(/datum/reagent/drug/anaphrodisiacplus = 1)
+ required_reagents = list(/datum/reagent/drug/aphrodisiac = 5, /datum/reagent/acetone = 1)
required_temp = 300
mix_message = "The mixture thickens and heats up slighty..."
|