diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index 4a86f57fcd..c95896d853 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -97,6 +97,9 @@ GLOBAL_VAR_INIT(cmp_field, "name") /proc/cmp_numbered_displays_name_dsc(datum/numbered_display/A, datum/numbered_display/B) return sorttext(B.sample_object.name, A.sample_object.name) +/proc/cmp_reagents_asc(datum/reagent/a, datum/reagent/b) + return sorttext(initial(b.name),initial(a.name)) + /proc/cmp_quirk_asc(datum/quirk/A, datum/quirk/B) var/a_sign = num2sign(initial(A.value) * -1) var/b_sign = num2sign(initial(B.value) * -1) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index feac1de972..dfaa6f061d 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -947,21 +947,25 @@ if(A.reagents) var/chosen_id - var/list/reagent_options = sortList(GLOB.chemical_reagents_list) - switch(alert(usr, "Choose a method.", "Add Reagents", "Enter ID", "Choose ID")) - if("Enter ID") + switch(alert(usr, "Choose a method.", "Add Reagents", "Search", "Choose from a list", "I'm feeling lucky")) + if("Search") var/valid_id while(!valid_id) - chosen_id = stripped_input(usr, "Enter the ID of the reagent you want to add.") - if(!chosen_id) //Get me out of here! + chosen_id = input(usr, "Enter the ID of the reagent you want to add.", "Search reagents") as null|text + if(isnull(chosen_id)) //Get me out of here! break - for(var/ID in reagent_options) - if(ID == chosen_id) - valid_id = 1 + if(!ispath(text2path(chosen_id))) + chosen_id = pick_closest_path(chosen_id, make_types_fancy(subtypesof(/datum/reagent))) + if(ispath(chosen_id)) + valid_id = TRUE + else + valid_id = TRUE if(!valid_id) to_chat(usr, "A reagent with that ID doesn't exist!") - if("Choose ID") - chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in reagent_options + if("Choose from a list") + chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in subtypesof(/datum/reagent) + if("I'm feeling lucky") + chosen_id = pick(subtypesof(/datum/reagent)) if(chosen_id) var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", A.reagents.maximum_volume) as num if(amount) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 8a6966666e..056f99c7a4 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -103,7 +103,7 @@ if(!(spread_flags & DISEASE_SPREAD_AIRBORNE) && !force_spread) return - if(affected_mob.reagents.has_reagent("spaceacillin") || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) + if(affected_mob.reagents.has_reagent(/datum/reagent/medicine/spaceacillin) || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) return var/spread_range = 2 diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 8d5e915b31..a844254ef9 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -36,37 +36,41 @@ // The order goes from easy to cure to hard to cure. Keep in mind that sentient diseases pick two cures from tier 6 and up, ensure they wont react away in bodies. var/static/list/advance_cures = list( list( // level 1 - "copper", "silver", "iodine", "iron", "carbon" + /datum/reagent/copper, /datum/reagent/silver, /datum/reagent/iodine, /datum/reagent/iron, /datum/reagent/carbon ), list( // level 2 - "potassium", "ethanol", "lithium", "silicon", "bromine" + /datum/reagent/potassium, /datum/reagent/consumable/ethanol, /datum/reagent/lithium, + /datum/reagent/silicon, /datum/reagent/bromine ), list( // level 3 - "sodiumchloride", "sugar", "orangejuice", "tomatojuice", "milk" + /datum/reagent/consumable/sodiumchloride, /datum/reagent/consumable/sugar, /datum/reagent/consumable/orangejuice, + /datum/reagent/consumable/tomatojuice, /datum/reagent/consumable/milk ), list( //level 4 - "spaceacillin", "salglu_solution", "epinephrine", "charcoal" + /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution, + /datum/reagent/medicine/epinephrine, /datum/reagent/medicine/charcoal ), list( //level 5 - "oil", "synaptizine", "mannitol", "space_drugs", "cryptobiolin" + /datum/reagent/oil, /datum/reagent/medicine/synaptizine, /datum/reagent/medicine/mannitol, + /datum/reagent/drug/space_drugs, /datum/reagent/cryptobiolin ), list( // level 6 - "phenol", "inacusiate", "oculine", "antihol" + /datum/reagent/phenol, /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/oculine, /datum/reagent/medicine/antihol ), list( // level 7 - "leporazine", "mindbreaker", "corazone" + /datum/reagent/medicine/leporazine, /datum/reagent/toxin/mindbreaker, /datum/reagent/medicine/corazone ), list( // level 8 - "pax", "happiness", "ephedrine" + /datum/reagent/pax, /datum/reagent/drug/happiness, /datum/reagent/medicine/ephedrine ), list( // level 9 - "lipolicide", "sal_acid" + /datum/reagent/toxin/lipolicide, /datum/reagent/medicine/sal_acid ), list( // level 10 - "haloperidol", "aranesp", "diphenhydramine" + /datum/reagent/medicine/haloperidol, /datum/reagent/drug/aranesp, /datum/reagent/medicine/diphenhydramine ), list( //level 11 - "modafinil", "anacea" + /datum/reagent/medicine/modafinil, /datum/reagent/toxin/anacea ) ) diff --git a/code/datums/diseases/advance/symptoms/choking.dm b/code/datums/diseases/advance/symptoms/choking.dm index a54b132de1..069c62cf3f 100644 --- a/code/datums/diseases/advance/symptoms/choking.dm +++ b/code/datums/diseases/advance/symptoms/choking.dm @@ -138,7 +138,7 @@ Bonus var/get_damage = rand(15,21) * power M.adjustOxyLoss(get_damage) if(paralysis) - M.reagents.add_reagent_list(list("pancuronium" = 3, "sodium_thiopental" = 3)) + M.reagents.add_reagent_list(list(/datum/reagent/toxin/pancuronium = 3, /datum/reagent/toxin/sodium_thiopental = 3)) return 1 /datum/symptom/asphyxiation/proc/Asphyxiate_death(mob/living/M, datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index f85024a7a9..6429db9439 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -156,7 +156,7 @@ Bonus M.adjust_fire_stacks(get_stacks) M.adjustFireLoss(get_stacks/2) if(chems) - M.reagents.add_reagent("clf3", 2 * power) + M.reagents.add_reagent(/datum/reagent/clf3, 2 * power) return 1 /datum/symptom/alkali/proc/Alkali_fire_stage_5(mob/living/M, datum/disease/advance/A) @@ -164,5 +164,5 @@ Bonus M.adjust_fire_stacks(get_stacks) M.adjustFireLoss(get_stacks) if(chems) - M.reagents.add_reagent_list(list("napalm" = 4 * power, "clf3" = 4 * power)) + M.reagents.add_reagent_list(list(/datum/reagent/napalm = 4 * power, /datum/reagent/clf3 = 4 * power)) return 1 diff --git a/code/datums/diseases/advance/symptoms/flesh_eating.dm b/code/datums/diseases/advance/symptoms/flesh_eating.dm index c38acc8e9e..d1e9d3fdca 100644 --- a/code/datums/diseases/advance/symptoms/flesh_eating.dm +++ b/code/datums/diseases/advance/symptoms/flesh_eating.dm @@ -124,7 +124,7 @@ Bonus var/get_damage = rand(6,10) M.adjustBruteLoss(get_damage) if(chems) - M.reagents.add_reagent_list(list("heparin" = 2, "lipolicide" = 2)) + M.reagents.add_reagent_list(list(/datum/reagent/toxin/heparin = 2, /datum/reagent/toxin/lipolicide = 2)) if(zombie) - M.reagents.add_reagent("romerol", 1) + M.reagents.add_reagent(/datum/reagent/romerol, 1) return 1 \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 8b205db756..d41e0bf225 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -117,8 +117,9 @@ power = 2 /datum/symptom/heal/chem/Heal(mob/living/M, datum/disease/advance/A, actual_power) - for(var/datum/reagent/R in M.reagents.reagent_list) //Not just toxins! - M.reagents.remove_reagent(R.id, actual_power) + for(var/E in M.reagents.reagent_list) //Not just toxins! + var/datum/reagent/R = E + M.reagents.remove_reagent(R.type, actual_power) if(food_conversion) M.nutrition += 0.3 if(prob(2)) @@ -329,11 +330,11 @@ if(M.fire_stacks < 0) M.fire_stacks = min(M.fire_stacks + 1 * absorption_coeff, 0) . += power - if(M.reagents.has_reagent("holywater")) - M.reagents.remove_reagent("holywater", 0.5 * absorption_coeff) + if(M.reagents.has_reagent(/datum/reagent/water/holywater)) + M.reagents.remove_reagent(/datum/reagent/water/holywater, 0.5 * absorption_coeff) . += power * 0.75 - else if(M.reagents.has_reagent("water")) - M.reagents.remove_reagent("water", 0.5 * absorption_coeff) + else if(M.reagents.has_reagent(/datum/reagent/water)) + M.reagents.remove_reagent(/datum/reagent/water, 0.5 * absorption_coeff) . += power * 0.5 /datum/symptom/heal/water/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) @@ -392,7 +393,7 @@ plasmamount = environment.gases[/datum/gas/plasma] if(plasmamount && plasmamount > GLOB.meta_gas_visibility[/datum/gas/plasma]) //if there's enough plasma in the air to see . += power * 0.5 - if(M.reagents.has_reagent("plasma")) + if(M.reagents.has_reagent(/datum/reagent/toxin/plasma)) . += power * 0.75 /datum/symptom/heal/plasma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index 2705e0b168..1f8cc8d7af 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -44,10 +44,10 @@ if(A.stage >= 4) M.drowsyness = max(0, M.drowsyness - 2) - if(M.reagents.has_reagent("mindbreaker")) - M.reagents.remove_reagent("mindbreaker", 5) - if(M.reagents.has_reagent("histamine")) - M.reagents.remove_reagent("histamine", 5) + if(M.reagents.has_reagent(/datum/reagent/toxin/mindbreaker)) + M.reagents.remove_reagent(/datum/reagent/toxin/mindbreaker, 5) + if(M.reagents.has_reagent(/datum/reagent/toxin/histamine)) + M.reagents.remove_reagent(/datum/reagent/toxin/histamine, 5) M.hallucination = max(0, M.hallucination - 10) if(A.stage >= 5) diff --git a/code/datums/diseases/anxiety.dm b/code/datums/diseases/anxiety.dm index 2d96157bb0..20ecceb224 100644 --- a/code/datums/diseases/anxiety.dm +++ b/code/datums/diseases/anxiety.dm @@ -5,7 +5,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Ethanol" - cures = list("ethanol") + cures = list(/datum/reagent/consumable/ethanol) agent = "Excess Lepidopticides" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate butterflies." diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm index ab64fd515c..edd6f151c9 100644 --- a/code/datums/diseases/beesease.dm +++ b/code/datums/diseases/beesease.dm @@ -5,7 +5,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Sugar" - cures = list("sugar") + cures = list(/datum/reagent/consumable/sugar) agent = "Apidae Infection" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate bees." diff --git a/code/datums/diseases/brainrot.dm b/code/datums/diseases/brainrot.dm index 98ae74270b..1028d1fff4 100644 --- a/code/datums/diseases/brainrot.dm +++ b/code/datums/diseases/brainrot.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Mannitol" - cures = list("mannitol") + cures = list(/datum/reagent/medicine/mannitol) agent = "Cryptococcus Cosmosis" viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 15//higher chance to cure, since two reagents are required diff --git a/code/datums/diseases/cold.dm b/code/datums/diseases/cold.dm index 22d45ffb29..8bbb05e17c 100644 --- a/code/datums/diseases/cold.dm +++ b/code/datums/diseases/cold.dm @@ -2,7 +2,7 @@ name = "The Cold" max_stages = 3 cure_text = "Rest & Spaceacillin" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) agent = "XY-rhinovirus" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) permeability_mod = 0.5 diff --git a/code/datums/diseases/cold9.dm b/code/datums/diseases/cold9.dm index da5e67a4fb..eea3147107 100644 --- a/code/datums/diseases/cold9.dm +++ b/code/datums/diseases/cold9.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Common Cold Anti-bodies & Spaceacillin" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) agent = "ICE9-rhinovirus" viable_mobtypes = list(/mob/living/carbon/human) desc = "If left untreated the subject will slow, as if partly frozen." diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 267dd711a3..972a7f4e18 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Mutadone" - cures = list("mutadone") + cures = list(/datum/reagent/medicine/mutadone) disease_flags = CAN_CARRY|CAN_RESIST|CURABLE agent = "S4E1 retrovirus" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/fake_gbs.dm b/code/datums/diseases/fake_gbs.dm index add60c73f1..70bcc67d21 100644 --- a/code/datums/diseases/fake_gbs.dm +++ b/code/datums/diseases/fake_gbs.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Synaptizine & Sulfur" - cures = list("synaptizine","sulfur") + cures = list(/datum/reagent/medicine/synaptizine,/datum/reagent/sulfur) agent = "Gravitokinetic Bipotential SADS-" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated death will occur." diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm index e1943937ba..4fc646a590 100644 --- a/code/datums/diseases/flu.dm +++ b/code/datums/diseases/flu.dm @@ -3,7 +3,7 @@ max_stages = 3 spread_text = "Airborne" cure_text = "Spaceacillin" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) cure_chance = 10 agent = "H13N1 flu virion" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) diff --git a/code/datums/diseases/fluspanish.dm b/code/datums/diseases/fluspanish.dm index 9577ca43d0..1557ddfbd8 100644 --- a/code/datums/diseases/fluspanish.dm +++ b/code/datums/diseases/fluspanish.dm @@ -3,7 +3,7 @@ max_stages = 3 spread_text = "Airborne" cure_text = "Spaceacillin & Anti-bodies to the common flu" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) cure_chance = 10 agent = "1nqu1s1t10n flu virion" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm index 0487b1c815..8a6eab6048 100644 --- a/code/datums/diseases/gbs.dm +++ b/code/datums/diseases/gbs.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Synaptizine & Sulfur" - cures = list("synaptizine","sulfur") + cures = list(/datum/reagent/medicine/synaptizine,/datum/reagent/sulfur) cure_chance = 15//higher chance to cure, since two reagents are required agent = "Gravitokinetic Bipotential SADS+" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/heart_failure.dm b/code/datums/diseases/heart_failure.dm index 2389052a54..196cd95f69 100644 --- a/code/datums/diseases/heart_failure.dm +++ b/code/datums/diseases/heart_failure.dm @@ -58,7 +58,7 @@ H.visible_message("[H] clutches at [H.p_their()] chest as if [H.p_their()] heart is stopping!") H.adjustStaminaLoss(60) H.set_heartattack(TRUE) - H.reagents.add_reagent("corazone", 3) // To give the victim a final chance to shock their heart before losing consciousness + H.reagents.add_reagent(/datum/reagent/medicine/corazone, 3) // To give the victim a final chance to shock their heart before losing consciousness cure() else diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 7c5f05c440..cb00f571aa 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "Iron" - cures = list("iron") + cures = list(/datum/reagent/iron) agent = "Fukkos Miracos" viable_mobtypes = list(/mob/living/carbon/human) disease_flags = CAN_CARRY|CAN_RESIST|CURABLE diff --git a/code/datums/diseases/parrotpossession.dm b/code/datums/diseases/parrotpossession.dm index d9c4b324f6..68e962055a 100644 --- a/code/datums/diseases/parrotpossession.dm +++ b/code/datums/diseases/parrotpossession.dm @@ -5,7 +5,7 @@ spread_flags = DISEASE_SPREAD_SPECIAL disease_flags = CURABLE cure_text = "Holy Water." - cures = list("holywater") + cures = list(/datum/reagent/water/holywater) cure_chance = 20 agent = "Avian Vengence" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm index b2241d59ba..392e1bc85f 100644 --- a/code/datums/diseases/pierrot_throat.dm +++ b/code/datums/diseases/pierrot_throat.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "Banana products, especially banana bread." - cures = list("banana") + cures = list(/datum/reagent/consumable/banana) cure_chance = 75 agent = "H0NI<42 Virus" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/retrovirus.dm b/code/datums/diseases/retrovirus.dm index fe099e495b..5854249e54 100644 --- a/code/datums/diseases/retrovirus.dm +++ b/code/datums/diseases/retrovirus.dm @@ -17,7 +17,7 @@ ..() agent = "Virus class [pick("A","B","C","D","E","F")][pick("A","B","C","D","E","F")]-[rand(50,300)]" if(prob(40)) - cures = list("mutadone") + cures = list(/datum/reagent/medicine/mutadone) else restcure = 1 diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index 52e9c2e19f..da6e7da8df 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Chick Chicky Boom!" - cures = list("plasma") + cures = list(/datum/reagent/toxin/plasma) agent = "Unknown" viable_mobtypes = list(/mob/living/carbon/human) permeability_mod = 1 diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 083a1f9c6c..1c214c8516 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -93,7 +93,7 @@ /datum/disease/transformation/jungle_fever name = "Jungle Fever" cure_text = "Death." - cures = list("adminordrazine") + cures = list(/datum/reagent/medicine/adminordrazine) spread_text = "Monkey Bites" spread_flags = DISEASE_SPREAD_SPECIAL viable_mobtypes = list(/mob/living/carbon/monkey, /mob/living/carbon/human) @@ -156,7 +156,7 @@ name = "Robotic Transformation" cure_text = "An injection of copper." - cures = list("copper") + cures = list(/datum/reagent/copper) cure_chance = 5 agent = "R2D2 Nanomachines" desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg." @@ -189,7 +189,7 @@ name = "Xenomorph Transformation" cure_text = "Spaceacillin & Glycerol" - cures = list("spaceacillin", "glycerol") + cures = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/glycerol) cure_chance = 5 agent = "Rip-LEY Alien Microbes" desc = "This disease changes the victim into a xenomorph." @@ -218,7 +218,7 @@ /datum/disease/transformation/slime name = "Advanced Mutation Transformation" cure_text = "frost oil" - cures = list("frostoil") + cures = list(/datum/reagent/consumable/frostoil) cure_chance = 80 agent = "Advanced Mutation Toxin" desc = "This highly concentrated extract converts anything into more of itself." @@ -247,7 +247,7 @@ /datum/disease/transformation/corgi name = "The Barkening" cure_text = "Death" - cures = list("adminordrazine") + cures = list(/datum/reagent/medicine/adminordrazine) agent = "Fell Doge Majicks" desc = "This disease transforms the victim into a corgi." severity = DISEASE_SEVERITY_BIOHAZARD @@ -272,7 +272,7 @@ /datum/disease/transformation/morph name = "Gluttony's Blessing" cure_text = "nothing" - cures = list("adminordrazine") + cures = list(/datum/reagent/medicine/adminordrazine) agent = "Gluttony's Blessing" desc = "A 'gift' from somewhere terrible." stage_prob = 20 @@ -289,7 +289,7 @@ /datum/disease/transformation/gondola name = "Gondola Transformation" cure_text = "Condensed Capsaicin, ingested or injected." //getting pepper sprayed doesn't help - cures = list("condensedcapsaicin") //beats the hippie crap right out of your system + cures = list(/datum/reagent/consumable/condensedcapsaicin) //beats the hippie crap right out of your system cure_chance = 80 stage_prob = 5 agent = "Tranquility" @@ -310,17 +310,17 @@ if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent_list(list("pax" = 5)) + affected_mob.reagents.add_reagent(/datum/reagent/pax, 5) if(3) if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent_list(list("pax" = 5)) + affected_mob.reagents.add_reagent(/datum/reagent/pax, 5) if(4) if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent_list(list("pax" = 5)) + affected_mob.reagents.add_reagent(/datum/reagent/pax, 5) if (prob(2)) to_chat(affected_mob, "You let go of what you were holding.") var/obj/item/I = affected_mob.get_active_held_item() diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm index 788107c4b6..23902603ce 100644 --- a/code/datums/diseases/tuberculosis.dm +++ b/code/datums/diseases/tuberculosis.dm @@ -4,7 +4,7 @@ max_stages = 5 spread_text = "Airborne" cure_text = "Spaceacillin & salbutamol" - cures = list("spaceacillin", "salbutamol") + cures = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salbutamol) agent = "Fungal Tubercle bacillus Cosmosis" viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 5//like hell are you getting out of hell diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index b288046380..244cc819d8 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "The Manly Dorf" - cures = list("manlydorf") + cures = list(/datum/reagent/consumable/ethanol/manly_dorf) cure_chance = 100 agent = "Rincewindus Vulgaris" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index 0ceb4443de..c4d0d6f9c6 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -88,7 +88,7 @@ var/obj/result_obj = new result(container) for (var/obj/O in (container.contents-result_obj)) if (O.reagents) - O.reagents.del_reagent("nutriment") + O.reagents.del_reagent(/datum/reagent/consumable/nutriment) O.reagents.update_total() O.reagents.trans_to(result_obj, O.reagents.total_volume) qdel(O) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index f5f012e7f9..6e8dec4179 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -302,7 +302,7 @@ /datum/status_effect/cultghost/tick() if(owner.reagents) - owner.reagents.del_reagent("holywater") //can't be deconverted + owner.reagents.del_reagent(/datum/reagent/water/holywater) //can't be deconverted /datum/status_effect/crusher_mark id = "crusher_mark" diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 3319259381..c5217d8e4b 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -289,7 +289,7 @@ medical_record_text = "Patient suffers from acute Reality Dissociation Syndrome and experiences vivid hallucinations." /datum/quirk/insanity/on_process() - if(quirk_holder.reagents.has_reagent("mindbreaker")) + if(quirk_holder.reagents.has_reagent(/datum/reagent/toxin/mindbreaker)) quirk_holder.hallucination = 0 return if(prob(2)) //we'll all be mad soon enough diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 520721560a..2b043822f3 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -18,10 +18,10 @@ var/list/available_chems var/controls_inside = FALSE var/list/possible_chems = list( - list("epinephrine", "morphine", "salbutamol", "bicaridine", "kelotane"), - list("oculine","inacusiate"), - list("antitoxin", "mutadone", "mannitol", "pen_acid"), - list("omnizine") + list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/morphine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane), + list(/datum/reagent/medicine/oculine,/datum/reagent/medicine/inacusiate), + list(/datum/reagent/medicine/antitoxin, /datum/reagent/medicine/mutadone, /datum/reagent/medicine/mannitol, /datum/reagent/medicine/pen_acid), + list(/datum/reagent/medicine/omnizine) ) var/list/chem_buttons //Used when emagged to scramble which chem is used, eg: antitoxin -> morphine var/scrambled_chems = FALSE //Are chem buttons scrambled? used as a warning @@ -106,7 +106,7 @@ return if(is_operational() && occupant) var/datum/reagent/R = pick(reagents.reagent_list) - inject_chem(R.id, occupant) + inject_chem(R.type, occupant) open_machine() //Is this too much? if(severity == EMP_HEAVY) @@ -219,7 +219,7 @@ R = GLOB.chemical_reagents_list[chem] data["synthchems"] += list(list("name" = R.name, "id" = R.id, "synth_allowed" = synth_allowed(chem))) for(var/datum/reagent/R in reagents.reagent_list) - data["chems"] += list(list("name" = R.name, "id" = R.id, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.id))) + data["chems"] += list(list("name" = R.name, "id" = R.type, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.type))) data["occupant"] = list() var/mob/living/mob_occupant = occupant @@ -289,23 +289,23 @@ open_machine() . = TRUE if("inject") - var/chem = params["chem"] + var/chem = text2path(params["chem"]) var/amount = text2num(params["volume"]) - if(!is_operational() || !mob_occupant) + if(!is_operational() || !mob_occupant || isnull(chem)) return - if(mob_occupant.health < min_health && chem != "epinephrine") + if(mob_occupant.health < min_health && chem != /datum/reagent/medicine/epinephrine) return if(inject_chem(chem, usr, amount)) . = TRUE if(scrambled_chems && prob(5)) to_chat(usr, "Chemical system re-route detected, results may not be as expected!") if("synth") - var/chem = params["chem"] + var/chem = text2path(params["chem"]) if(!is_operational()) return reagents.add_reagent(chem_buttons[chem], 10) //other_purity = 0.75 for when the mechanics are in if("purge") - var/chem = params["chem"] + var/chem = text2path(params["chem"]) if(allowed(usr)) if(!is_operational()) return @@ -342,7 +342,7 @@ if(!mob_occupant || !mob_occupant.reagents) return var/amount = mob_occupant.reagents.get_reagent_amount(chem) + 10 <= 20 * efficiency - var/occ_health = mob_occupant.health > min_health || chem == "epinephrine" + var/occ_health = mob_occupant.health > min_health || chem == /datum/reagent/medicine/epinephrine return amount && occ_health /obj/machinery/sleeper/proc/synth_allowed(chem) diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm index c92e55084d..39992c59dd 100644 --- a/code/game/machinery/bloodbankgen.dm +++ b/code/game/machinery/bloodbankgen.dm @@ -130,8 +130,8 @@ beep_stop_pumping() return var/bonus = bag.blood_type == "SY" ? 0 : 5 * efficiency //no infinite loops using synthetics. - reagents.add_reagent("syntheticblood", amount + bonus) - bag.reagents.remove_reagent("blood", amount) + reagents.add_reagent(/datum/reagent/blood/synthetics, amount + bonus) + bag.reagents.remove_reagent(/datum/reagent/blood, amount) update_icon() if(filling) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 394cc4593d..044775fb6b 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -342,9 +342,9 @@ current_screen = href_list["text"] if("rejuv") if(viable_occupant && viable_occupant.reagents) - var/potassiodide_amount = viable_occupant.reagents.get_reagent_amount("potass_iodide") + var/potassiodide_amount = viable_occupant.reagents.get_reagent_amount(/datum/reagent/medicine/potass_iodide) var/can_add = max(min(REJUVENATORS_MAX - potassiodide_amount, REJUVENATORS_INJECT), 0) - viable_occupant.reagents.add_reagent("potass_iodide", can_add) + viable_occupant.reagents.add_reagent(/datum/reagent/medicine/potass_iodide, can_add) if("setbufferlabel") var/text = sanitize(input(usr, "Input a new label:", "Input an Text", null) as text|null) if(num && text) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 794509801b..bf9400219b 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -89,7 +89,7 @@ selected_category = href_list["category"] if(href_list["disposeI"]) //Get rid of a reagent incase you add the wrong one by mistake - reagents.del_reagent(href_list["disposeI"]) + reagents.del_reagent(text2path(href_list["disposeI"])) if(href_list["make"]) @@ -100,10 +100,10 @@ return - var/synth_cost = being_built.reagents_list["synthflesh"]*prod_coeff + var/synth_cost = being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff var/power = max(2000, synth_cost/5) - if(reagents.has_reagent("synthflesh", being_built.reagents_list["synthflesh"]*prod_coeff)) + if(reagents.has_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) busy = TRUE use_power(power) flick("limbgrower_fill",src) @@ -117,8 +117,8 @@ return /obj/machinery/limbgrower/proc/build_item() - if(reagents.has_reagent("synthflesh", being_built.reagents_list["synthflesh"]*prod_coeff)) //sanity check, if this happens we are in big trouble - reagents.remove_reagent("synthflesh",being_built.reagents_list["synthflesh"]*prod_coeff) + if(reagents.has_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) //sanity check, if this happens we are in big trouble + reagents.remove_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff) var/buildpath = being_built.build_path if(ispath(buildpath, /obj/item/bodypart)) //This feels like spatgheti code, but i need to initilise a limb somehow build_limb(buildpath) @@ -198,7 +198,7 @@ for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
" + dat += "Purge
" dat += "" return dat @@ -208,12 +208,12 @@ return dat /obj/machinery/limbgrower/proc/can_build(datum/design/D) - return (reagents.has_reagent("synthflesh", D.reagents_list["synthflesh"]*prod_coeff)) //Return whether the machine has enough synthflesh to produce the design + return (reagents.has_reagent(/datum/reagent/medicine/synthflesh, D.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) //Return whether the machine has enough synthflesh to produce the design /obj/machinery/limbgrower/proc/get_design_cost(datum/design/D) var/dat if(D.reagents_list["synthflesh"]) - dat += "[D.reagents_list["synthflesh"] * prod_coeff] Synthetic flesh " + dat += "[D.reagents_list[/datum/reagent/medicine/synthflesh] * prod_coeff] Synthetic flesh " return dat /obj/machinery/limbgrower/emag_act(mob/user) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index ae3fdb15b4..4d6c94ac88 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -191,11 +191,11 @@ if(!R || !patient || !SG || !(SG in chassis.equipment)) return 0 var/to_inject = min(R.volume, inject_amount) - if(to_inject && patient.reagents.get_reagent_amount(R.id) + to_inject <= inject_amount*2) + if(to_inject && patient.reagents.get_reagent_amount(R.type) + to_inject <= inject_amount*2) occupant_message("Injecting [patient] with [to_inject] units of [R.name].") log_message("Injecting [patient] with [to_inject] units of [R.name].") log_combat(chassis.occupant, patient, "injected", "[name] ([R] - [to_inject] units)") - SG.reagents.trans_id_to(patient,R.id,to_inject) + SG.reagents.trans_id_to(patient,R.type,to_inject) update_equip_info() return @@ -228,8 +228,8 @@ M.AdjustStun(-80) M.AdjustKnockdown(-80) M.AdjustUnconscious(-80) - if(M.reagents.get_reagent_amount("epinephrine") < 5) - M.reagents.add_reagent("epinephrine", 5) + if(M.reagents.get_reagent_amount(/datum/reagent/medicine/epinephrine) < 5) + M.reagents.add_reagent(/datum/reagent/medicine/epinephrine, 5) chassis.use_power(energy_drain) update_equip_info() @@ -259,7 +259,7 @@ . = ..() create_reagents(max_volume, NO_REACT) syringes = new - known_reagents = list("epinephrine"="Epinephrine","charcoal"="Charcoal") + known_reagents = list(/datum/reagent/medicine/epinephrine = "Epinephrine", /datum/reagent/medicine/charcoal = "Charcoal") processed_reagents = new /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/detach() @@ -330,8 +330,7 @@ if(M.can_inject(null, 1)) if(mechsyringe.reagents) for(var/datum/reagent/A in mechsyringe.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," + R += "[A.name] ([num2text(A.volume)]" mechsyringe.icon_state = initial(mechsyringe.icon_state) mechsyringe.icon = initial(mechsyringe.icon) mechsyringe.reagents.reaction(M, INJECT) @@ -445,7 +444,7 @@ var/output for(var/datum/reagent/R in reagents.reagent_list) if(R.volume > 0) - output += "[R]: [round(R.volume,0.001)] - Purge Reagent
" + output += "[R]: [round(R.volume,0.001)] - Purge Reagent
" if(output) output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" return output || "None" @@ -481,7 +480,7 @@ return 0 occupant_message("Analyzing reagents...") for(var/datum/reagent/R in A.reagents.reagent_list) - if(R.can_synth && add_known_reagent(R.id,R.name)) + if(R.can_synth && add_known_reagent(R.type,R.name)) occupant_message("Reagent analyzed, identified as [R.name] and added to database.") send_byjax(chassis.occupant,"msyringegun.browser","reagents_form",get_reagents_form()) occupant_message("Analyzis complete.") diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 36708fcf90..d4b0be4946 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -171,7 +171,7 @@ /obj/item/mecha_parts/mecha_equipment/extinguisher/Initialize() . = ..() create_reagents(1000) - reagents.add_reagent("water", 1000) + reagents.add_reagent(/datum/reagent/water, 1000) /obj/item/mecha_parts/mecha_equipment/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch. if(!action_checks(target) || get_dist(chassis, target)>3) diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 62a62b569d..b702f871fc 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -287,9 +287,9 @@ playsound(src, 'sound/effects/spray2.ogg', 50, 1) if(target.reagents) if(target.reagents.get_reagent_amount("cryptobiolin") + force < force*2) - target.reagents.add_reagent("cryptobiolin", force/2) - if(target.reagents.get_reagent_amount("toxin") + force < force*2) - target.reagents.add_reagent("toxin", force/2.5) + target.reagents.add_reagent(/datum/reagent/cryptobiolin, force/2) + if(target.reagents.get_reagent_amount(/datum/reagent/toxin) + force < force*2) + target.reagents.add_reagent(/datum/reagent/toxin, force/2.5) /obj/mecha/mech_melee_attack(obj/mecha/M) diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index a4d0da1bbe..0c52f57ae9 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -9,7 +9,7 @@ /obj/effect/decal/cleanable/blood/gibs/xeno color = BLOOD_COLOR_XENO - gibs_reagent_id = "liquidxenogibs" + gibs_reagent_id = /datum/reagent/liquidgibs/xeno gibs_bloodtype = "X*" /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 03eeca7d0b..9680dc2034 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -6,7 +6,7 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE var/body_colors = "#e3ba84" //a default color just in case. - var/gibs_reagent_id = "liquidgibs" + var/gibs_reagent_id = /datum/reagent/liquidgibs var/gibs_bloodtype = "A+" /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) @@ -120,7 +120,6 @@ //Lizards /obj/effect/decal/cleanable/blood/gibs/human/lizard body_colors = "117720" - gibs_reagent_id = "liquidgibs" gibs_bloodtype = "L" /obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases) @@ -148,7 +147,7 @@ // Slime Gibs /obj/effect/decal/cleanable/blood/gibs/slime desc = "They look gooey and gruesome." - gibs_reagent_id = "liquidslimegibs" + gibs_reagent_id = /datum/reagent/liquidgibs/slime gibs_bloodtype = "GEL" /obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) @@ -187,7 +186,7 @@ /obj/effect/decal/cleanable/blood/gibs/synth desc = "They look sludgy and disgusting." - gibs_reagent_id = "liquidsyntheticgibs" + gibs_reagent_id = /datum/reagent/liquidgibs/synth gibs_bloodtype = "SY" /obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) @@ -198,7 +197,7 @@ /obj/effect/decal/cleanable/blood/gibs/ipc desc = "They look sharp yet oozing." body_colors = "00ff00" - gibs_reagent_id = "liquidoilgibs" + gibs_reagent_id = /datum/reagent/liquidgibs/oil gibs_bloodtype = "HF" /obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 9f072c48b6..5395f361ba 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -13,7 +13,7 @@ /obj/effect/decal/cleanable/ash/Initialize() . = ..() - reagents.add_reagent("ash", 30) + reagents.add_reagent(/datum/reagent/ash, 30) pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) @@ -27,7 +27,7 @@ /obj/effect/decal/cleanable/ash/large/Initialize() . = ..() - reagents.add_reagent("ash", 30) //double the amount of ash. + reagents.add_reagent(/datum/reagent/ash, 30) //double the amount of ash. /obj/effect/decal/cleanable/glass name = "tiny shards" @@ -126,12 +126,10 @@ playsound(get_turf(src), 'sound/items/drink.ogg', 50, 1) //slurp H.visible_message("[H] extends a small proboscis into the vomit pool, sucking it with a slurping sound.") if(reagents) - for(var/datum/reagent/R in reagents.reagent_list) - if (istype(R, /datum/reagent/consumable)) - var/datum/reagent/consumable/nutri_check = R - if(nutri_check.nutriment_factor >0) - H.nutrition += nutri_check.nutriment_factor * nutri_check.volume - reagents.remove_reagent(nutri_check.id,nutri_check.volume) + for(var/datum/reagent/consumable/R in reagents.reagent_list) + if(R.nutriment_factor > 0) + H.nutrition += R.nutriment_factor * R.volume + reagents.del_reagent(R.type) reagents.trans_to(H, reagents.total_volume) qdel(src) diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 02bf51bdd9..3e94abbf93 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -13,7 +13,7 @@ /obj/effect/decal/cleanable/robot_debris/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent("liquidoilgibs", 5) + reagents.add_reagent(/datum/reagent/liquidgibs, 5) /obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions) set waitfor = 0 @@ -53,8 +53,8 @@ /obj/effect/decal/cleanable/oil/Initialize() . = ..() - reagents.add_reagent("oil", 30) - reagents.add_reagent("liquidoilgibs", 5) + reagents.add_reagent(/datum/reagent/oil, 30) + reagents.add_reagent(/datum/reagent/liquidgibs/oil, 5) /obj/effect/decal/cleanable/oil/streak random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 10ee73915c..5c809a35f7 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -55,7 +55,7 @@ var/obj/effect/decal/cleanable/plasma/P = (locate(/obj/effect/decal/cleanable/plasma) in get_turf(src)) if(!P) P = new(loc) - P.reagents.add_reagent("stable_plasma", absorbed_plasma) + P.reagents.add_reagent(/datum/reagent/stable_plasma, absorbed_plasma) flick("[icon_state]-disolve", src) QDEL_IN(src, 5) diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 08f698e018..91133234d6 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -136,7 +136,7 @@ victim.put_in_hands(chainsaw, forced = TRUE) chainsaw.attack_self(victim) chainsaw.wield(victim) - victim.reagents.add_reagent("adminordrazine",25) + victim.reagents.add_reagent(/datum/reagent/medicine/adminordrazine,25) to_chat(victim, "KILL, KILL, KILL! YOU HAVE NO ALLIES ANYMORE, KILL THEM ALL!") victim.client.color = pure_red diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index a68f2ecff6..ba0766de00 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -182,7 +182,7 @@ RSF to_chat(user, "Fabricating Cookie..") var/obj/item/reagent_containers/food/snacks/cookie/S = new /obj/item/reagent_containers/food/snacks/cookie(T) if(toxin) - S.reagents.add_reagent("chloralhydrate", 10) + S.reagents.add_reagent(/datum/reagent/toxin/chloralhydrate, 10) if (iscyborg(user)) var/mob/living/silicon/robot/R = user R.cell.charge -= 100 diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index d8a21de35a..083246396b 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -68,7 +68,7 @@ // make some colorful reagent, and apply it to the lungs L.create_reagents(10) - L.reagents.add_reagent("colorful_reagent", 10) + L.reagents.add_reagent(/datum/reagent/colorful_reagent, 10) L.reagents.reaction(L, TOUCH, 1) // TODO maybe add some colorful vomit? @@ -81,7 +81,7 @@ return (TOXLOSS|OXYLOSS) else if(can_use(user) && !L) user.visible_message("[user] is spraying toner on [user.p_them()]self from [src]! It looks like [user.p_theyre()] trying to commit suicide.") - user.reagents.add_reagent("colorful_reagent", 1) + user.reagents.add_reagent(/datum/reagent/colorful_reagent, 1) user.reagents.reaction(user, TOUCH, 1) return TOXLOSS diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index cf8d38d9c9..fac79ae414 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -113,7 +113,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/lastHolder = null var/smoketime = 300 var/chem_volume = 30 - var/list/list_reagents = list("nicotine" = 15) + var/list/list_reagents = list(/datum/reagent/drug/nicotine = 15) heat = 1000 /obj/item/clothing/mask/cigarette/suicide_act(mob/user) @@ -268,29 +268,29 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/uplift desc = "An Uplift Smooth brand cigarette." - list_reagents = list("nicotine" = 7.5, "menthol" = 7.5) + list_reagents = list(/datum/reagent/drug/nicotine = 7.5, /datum/reagent/consumable/menthol = 7.5) /obj/item/clothing/mask/cigarette/robust desc = "A Robust brand cigarette." /obj/item/clothing/mask/cigarette/robustgold desc = "A Robust Gold brand cigarette." - list_reagents = list("nicotine" = 15, "gold" = 1) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/gold = 1) /obj/item/clothing/mask/cigarette/carp desc = "A Carp Classic brand cigarette." /obj/item/clothing/mask/cigarette/syndicate desc = "An unknown brand cigarette." - list_reagents = list("nicotine" = 15, "omnizine" = 15) + list_reagents = list(/datum/reagent/drug/nicotine = 15, "omnizine" = 15) /obj/item/clothing/mask/cigarette/shadyjims desc = "A Shady Jim's Super Slims cigarette." - list_reagents = list("nicotine" = 15, "lipolicide" = 4, "ammonia" = 2, "plantbgone" = 1, "toxin" = 1.5) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/toxin/lipolicide = 4, /datum/reagent/ammonia = 2, /datum/reagent/toxin/plantbgone = 1, /datum/reagent/toxin = 1.5) /obj/item/clothing/mask/cigarette/xeno desc = "A Xeno Filtered brand cigarette." - list_reagents = list ("nicotine" = 20, "regen_jelly" = 15, "krokodil" = 4) + list_reagents = list (/datum/reagent/drug/nicotine = 20, /datum/reagent/medicine/regen_jelly = 15, /datum/reagent/drug/krokodil = 4) // Rollies. @@ -313,17 +313,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM src.pixel_y = rand(-5, 5) /obj/item/clothing/mask/cigarette/rollie/nicotine - list_reagents = list("nicotine" = 15) + list_reagents = list(/datum/reagent/drug/nicotine = 15) /obj/item/clothing/mask/cigarette/rollie/trippy - list_reagents = list("nicotine" = 15, "mushroomhallucinogen" = 35) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/drug/mushroomhallucinogen = 35) starts_lit = TRUE /obj/item/clothing/mask/cigarette/rollie/cannabis - list_reagents = list("space_drugs" = 15, "lipolicide" = 35) + list_reagents = list(/datum/reagent/drug/space_drugs = 15, /datum/reagent/toxin/lipolicide = 35) /obj/item/clothing/mask/cigarette/rollie/mindbreaker - list_reagents = list("mindbreaker" = 35, "lipolicide" = 15) + list_reagents = list(/datum/reagent/toxin/mindbreaker = 35, /datum/reagent/toxin/lipolicide = 15) /obj/item/cigbutt/roach name = "roach" @@ -377,7 +377,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = "cigbutt" w_class = WEIGHT_CLASS_TINY throwforce = 0 - grind_results = list("carbon" = 2) + grind_results = list(/datum/reagent/carbon = 2) /obj/item/cigbutt/cigarbutt name = "cigar butt" @@ -719,7 +719,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/vape/Initialize(mapload, param_color) . = ..() create_reagents(chem_volume, NO_REACT) // so it doesn't react until you light it - reagents.add_reagent("nicotine", 50) + reagents.add_reagent(/datum/reagent/drug/nicotine, 50) if(!icon_state) if(!param_color) param_color = pick("red","blue","black","white","green","purple","yellow","orange") diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 41ab418cf2..143354b496 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -59,7 +59,7 @@ var/edible = TRUE // That doesn't mean eating it is a good idea - var/list/reagent_contents = list("nutriment" = 1) + var/list/reagent_contents = list(/datum/reagent/consumable/nutriment = 1) // If the user can toggle the colour, a la vanilla spraycan var/can_change_colour = FALSE @@ -485,63 +485,63 @@ icon_state = "crayonred" paint_color = "#DA0000" item_color = "red" - reagent_contents = list("nutriment" = 1, "redcrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/red = 1) /obj/item/toy/crayon/orange icon_state = "crayonorange" paint_color = "#FF9300" item_color = "orange" - reagent_contents = list("nutriment" = 1, "orangecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/orange = 1) /obj/item/toy/crayon/yellow icon_state = "crayonyellow" paint_color = "#FFF200" item_color = "yellow" - reagent_contents = list("nutriment" = 1, "yellowcrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/yellow = 1) /obj/item/toy/crayon/green icon_state = "crayongreen" paint_color = "#A8E61D" item_color = "green" - reagent_contents = list("nutriment" = 1, "greencrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/green = 1) /obj/item/toy/crayon/blue icon_state = "crayonblue" paint_color = "#00B7EF" item_color = "blue" - reagent_contents = list("nutriment" = 1, "bluecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/blue = 1) /obj/item/toy/crayon/purple icon_state = "crayonpurple" paint_color = "#DA00FF" item_color = "purple" - reagent_contents = list("nutriment" = 1, "purplecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/purple = 1) /obj/item/toy/crayon/black icon_state = "crayonblack" paint_color = "#1C1C1C" //Not completely black because total black looks bad. So Mostly Black. item_color = "black" - reagent_contents = list("nutriment" = 1, "blackcrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1) /obj/item/toy/crayon/white icon_state = "crayonwhite" paint_color = "#FFFFFF" item_color = "white" - reagent_contents = list("nutriment" = 1, "whitecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/white = 1) /obj/item/toy/crayon/mime icon_state = "crayonmime" desc = "A very sad-looking crayon." paint_color = "#FFFFFF" item_color = "mime" - reagent_contents = list("nutriment" = 1, "invisiblecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/invisible = 1) charges = -1 /obj/item/toy/crayon/rainbow icon_state = "crayonrainbow" paint_color = "#FFF000" item_color = "rainbow" - reagent_contents = list("nutriment" = 1, "colorful_reagent" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1) drawtype = RANDOM_ANY // just the default starter. charges = -1 @@ -621,7 +621,7 @@ can_change_colour = TRUE gang = TRUE //Gang check is true for all things upon the honored hierarchy of spraycans, except those that are FALSE. - reagent_contents = list("welding_fuel" = 1, "ethanol" = 1) + reagent_contents = list(/datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol = 1) pre_noise = TRUE post_noise = FALSE @@ -778,7 +778,7 @@ volume_multiplier = 25 charges = 100 - reagent_contents = list("clf3" = 1) + reagent_contents = list(/datum/reagent/clf3 = 1) actually_paints = FALSE paint_color = "#000000" @@ -791,7 +791,7 @@ use_overlays = FALSE gang = FALSE - reagent_contents = list("lube" = 1, "banana" = 1) + reagent_contents = list(/datum/reagent/lube = 1, /datum/reagent/consumable/banana = 1) volume_multiplier = 5 /obj/item/toy/crayon/spraycan/lubecan/isValidSurface(surface) @@ -811,7 +811,7 @@ pre_noise = FALSE post_noise = FALSE - reagent_contents = list("nothing" = 1, "mutetoxin" = 1) + reagent_contents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/toxin/mutetoxin = 1) /obj/item/toy/crayon/spraycan/gang charges = 20 // Charges back to 20, which is the default value for them. diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index 9b4842b291..db2b03f2e8 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -12,7 +12,8 @@ var/cleaning = FALSE var/cleaning_cycles = 10 var/patient_laststat = null - var/list/injection_chems = list("antitoxin", "epinephrine", "salbutamol", "bicaridine", "kelotane") + var/list/injection_chems = list(/datum/reagent/medicine/antitoxin, /datum/reagent/medicine/epinephrine, + /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane) var/eject_port = "ingestion" var/escape_in_progress = FALSE var/message_cooldown @@ -227,8 +228,8 @@ go_out(null, usr) . = TRUE if("inject") - var/chem = params["chem"] - if(!patient) + var/chem = text2path(params["chem"]) + if(!patient || !chem) return inject_chem(chem, usr) . = TRUE diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 00381b9838..12a6d6e96f 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -262,7 +262,7 @@ SLIME SCANNER temp_message += " Subject has abnormal brain fuctions." //Astrogen shenanigans - if(H.reagents.has_reagent("astral")) + if(H.reagents.has_reagent(/datum/reagent/fermi/astral)) if(H.mind) temp_message += " Warning: subject may be possesed." else @@ -465,19 +465,18 @@ SLIME SCANNER else msg += "Subject is not addicted to any reagents.\n" - if(M.reagents.has_reagent("fermiTox")) - var/datum/reagent/fermiTox = M.reagents.has_reagent("fermiTox") - switch(fermiTox.volume) - if(5 to 10) - msg += "Subject contains a low amount of toxic isomers.\n" - if(10 to 25) - msg += "Subject contains toxic isomers.\n" - if(25 to 50) - msg += "Subject contains a substantial amount of toxic isomers.\n" - if(50 to 95) - msg += "Subject contains a high amount of toxic isomers.\n" - if(95 to INFINITY) - msg += "Subject contains a extremely dangerous amount of toxic isomers.\n" + var/datum/reagent/impure/fermiTox/F = M.reagents.has_reagent(/datum/reagent/impure/fermiTox) + switch(F?.volume) + if(5 to 10) + msg += "Subject contains a low amount of toxic isomers.\n" + if(10 to 25) + msg += "Subject contains toxic isomers.\n" + if(25 to 50) + msg += "Subject contains a substantial amount of toxic isomers.\n" + if(50 to 95) + msg += "Subject contains a high amount of toxic isomers.\n" + if(95 to INFINITY) + msg += "Subject contains a extremely dangerous amount of toxic isomers.\n" msg += "*---------*" to_chat(user, msg) diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index b69d32617f..4585685cde 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -17,7 +17,7 @@ resistance_flags = FIRE_PROOF var/max_water = 50 var/last_use = 1 - var/chem = "water" + var/chem = /datum/reagent/water var/safety = TRUE var/refilling = FALSE var/tanktype = /obj/structure/reagent_dispensers/watertank diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 76d3a9fbf5..b5fee4e8d7 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -332,9 +332,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminium", 30) - B2.reagents.add_reagent("foaming_agent", 10) - B2.reagents.add_reagent("facid", 10) + B1.reagents.add_reagent(/datum/reagent/aluminium, 30) + B2.reagents.add_reagent(/datum/reagent/foaming_agent, 10) + B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 10) beakers += B1 beakers += B2 @@ -350,9 +350,9 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminium", 75) - B2.reagents.add_reagent("smart_foaming_agent", 25) - B2.reagents.add_reagent("facid", 25) + B1.reagents.add_reagent(/datum/reagent/aluminium, 75) + B2.reagents.add_reagent(/datum/reagent/smart_foaming_agent, 25) + B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 25) beakers += B1 beakers += B2 @@ -368,9 +368,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("stable_plasma", 25) - B2.reagents.add_reagent("sacid", 25) + B1.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/stable_plasma, 25) + B2.reagents.add_reagent(/datum/reagent/toxin/acid, 25) beakers += B1 beakers += B2 @@ -386,10 +386,10 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("plantbgone", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent(/datum/reagent/toxin/plantbgone, 25) + B1.reagents.add_reagent(/datum/reagent/potassium, 25) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) beakers += B1 beakers += B2 @@ -405,9 +405,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 40) - B2.reagents.add_reagent("water", 40) - B2.reagents.add_reagent("cleaner", 10) + B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 40) + B2.reagents.add_reagent(/datum/reagent/water, 40) + B2.reagents.add_reagent(/datum/reagent/space_cleaner, 10) beakers += B1 beakers += B2 @@ -423,9 +423,9 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 40) - B2.reagents.add_reagent("water", 40) - B2.reagents.add_reagent("ez_clean", 60) //ensures a t h i c c distribution + B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 40) + B2.reagents.add_reagent(/datum/reagent/water, 40) + B2.reagents.add_reagent(/datum/reagent/space_cleaner/ez_clean, 60) //ensures a t h i c c distribution beakers += B1 beakers += B2 @@ -442,10 +442,10 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("condensedcapsaicin", 60) - B1.reagents.add_reagent("potassium", 40) - B2.reagents.add_reagent("phosphorus", 40) - B2.reagents.add_reagent("sugar", 40) + B1.reagents.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 60) + B1.reagents.add_reagent(/datum/reagent/potassium, 40) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 40) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 40) beakers += B1 beakers += B2 @@ -461,11 +461,11 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("facid", 290) - B1.reagents.add_reagent("potassium", 10) - B2.reagents.add_reagent("phosphorus", 10) - B2.reagents.add_reagent("sugar", 10) - B2.reagents.add_reagent("facid", 280) + B1.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 290) + B1.reagents.add_reagent(/datum/reagent/potassium, 10) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 10) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 10) + B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 280) beakers += B1 beakers += B2 @@ -481,10 +481,10 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("colorful_reagent", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent(/datum/reagent/colorful_reagent, 25) + B1.reagents.add_reagent(/datum/reagent/potassium, 25) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) beakers += B1 beakers += B2 @@ -493,7 +493,7 @@ name = "generic glitter grenade" desc = "You shouldn't see this description." stage = READY - var/glitter_type = "glitter" + var/glitter_type = /datum/reagent/glitter /obj/item/grenade/chem_grenade/glitter/Initialize() . = ..() @@ -501,9 +501,9 @@ var/obj/item/reagent_containers/glass/beaker/B2 = new(src) B1.reagents.add_reagent(glitter_type, 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent(/datum/reagent/potassium, 25) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) beakers += B1 beakers += B2 @@ -511,17 +511,17 @@ /obj/item/grenade/chem_grenade/glitter/pink name = "pink glitter bomb" desc = "For that HOT glittery look." - glitter_type = "pink_glitter" + glitter_type = /datum/reagent/glitter/pink /obj/item/grenade/chem_grenade/glitter/blue name = "blue glitter bomb" desc = "For that COOL glittery look." - glitter_type = "blue_glitter" + glitter_type = /datum/reagent/glitter/blue /obj/item/grenade/chem_grenade/glitter/white name = "white glitter bomb" desc = "For that somnolent glittery look." - glitter_type = "white_glitter" + glitter_type = /datum/reagent/glitter/white /obj/item/grenade/chem_grenade/clf3 name = "clf3 grenade" @@ -533,10 +533,10 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 250) - B1.reagents.add_reagent("clf3", 50) - B2.reagents.add_reagent("water", 250) - B2.reagents.add_reagent("clf3", 50) + B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 250) + B1.reagents.add_reagent(/datum/reagent/clf3, 50) + B2.reagents.add_reagent(/datum/reagent/water, 250) + B2.reagents.add_reagent(/datum/reagent/clf3, 50) beakers += B1 beakers += B2 @@ -551,13 +551,13 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("cryptobiolin", 75) - B1.reagents.add_reagent("water", 50) - B1.reagents.add_reagent("mutetoxin", 50) - B1.reagents.add_reagent("spore", 75) - B1.reagents.add_reagent("itching_powder", 50) - B2.reagents.add_reagent("fluorosurfactant", 150) - B2.reagents.add_reagent("mutagen", 150) + B1.reagents.add_reagent(/datum/reagent/cryptobiolin, 75) + B1.reagents.add_reagent(/datum/reagent/water, 50) + B1.reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 50) + B1.reagents.add_reagent(/datum/reagent/toxin/spore, 75) + B1.reagents.add_reagent(/datum/reagent/toxin/itching_powder, 50) + B2.reagents.add_reagent(/datum/reagent/fluorosurfactant, 150) + B2.reagents.add_reagent(/datum/reagent/toxin/mutagen, 150) beakers += B1 beakers += B2 @@ -571,11 +571,11 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("potassium", 50) - B1.reagents.add_reagent("phosphorus", 50) - B1.reagents.add_reagent("fungalspores", 200) - B2.reagents.add_reagent("blood", 250) - B2.reagents.add_reagent("sugar", 50) + B1.reagents.add_reagent(/datum/reagent/potassium, 50) + B1.reagents.add_reagent(/datum/reagent/phosphorus, 50) + B1.reagents.add_reagent(/datum/reagent/fungalspores, 200) + B2.reagents.add_reagent(/datum/reagent/blood, 250) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 50) beakers += B1 beakers += B2 @@ -591,8 +591,8 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("potassium", 100) - B2.reagents.add_reagent("holywater", 100) + B1.reagents.add_reagent(/datum/reagent/potassium, 100) + B2.reagents.add_reagent(/datum/reagent/water/holywater, 100) beakers += B1 beakers += B2 diff --git a/code/game/objects/items/grenades/clusterbuster.dm b/code/game/objects/items/grenades/clusterbuster.dm index 923361de3c..c16b4a30a1 100644 --- a/code/game/objects/items/grenades/clusterbuster.dm +++ b/code/game/objects/items/grenades/clusterbuster.dm @@ -94,11 +94,11 @@ var/chem = pick(slime_chems) var/amount = 5 if(chem == "lesser plasma") //In the rare case we get another rainbow. - chem = "plasma" + chem = /datum/reagent/toxin/plasma amount = 4 if(chem == "holy water and uranium") - chem = "uranium" - reagents.add_reagent("holywater") + chem = /datum/reagent/uranium + reagents.add_reagent(/datum/reagent/water/holywater) reagents.add_reagent(chem,amount) /obj/effect/payload_spawner/random_slime/spawn_payload(type, numspawned) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 7a83893f8b..f2591a6839 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -789,7 +789,7 @@ praying = TRUE if(do_after(user, 20, target = M)) - M.reagents?.add_reagent("holywater", 5) + M.reagents?.add_reagent(/datum/reagent/water/holywater, 5) to_chat(M, "[user]'s prayer to [deity_name] has eased your pain!") M.adjustToxLoss(-5, TRUE, TRUE) M.adjustOxyLoss(-5) diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 40f2741a17..16ac2ad692 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -75,7 +75,7 @@ L.SetKnockdown(0) L.SetSleeping(0) L.SetUnconscious(0) - L.reagents.add_reagent("muscle_stimulant", CLAMP(5 - L.reagents.get_reagent_amount("muscle_stimulant"), 0, 5)) //If you don't have legs or get bola'd, tough luck! + L.reagents.add_reagent(/datum/reagent/medicine/muscle_stimulant, CLAMP(5 - L.reagents.get_reagent_amount(/datum/reagent/medicine/muscle_stimulant), 0, 5)) //If you don't have legs or get bola'd, tough luck! colorize(L) /obj/item/hot_potato/examine(mob/user) diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index 75b0c67798..6cdc5ee824 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -33,7 +33,7 @@ /obj/item/implant/adrenalin/activate() . = ..() uses-- - imp_in.do_adrenaline(150, TRUE, 0, 0, TRUE, list("inaprovaline" = 3, "synaptizine" = 10, "regen_jelly" = 10, "stimulants" = 10), "You feel a sudden surge of energy!") + imp_in.do_adrenaline(150, TRUE, 0, 0, TRUE, list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/stimulants = 10), "You feel a sudden surge of energy!") to_chat(imp_in, "You feel a sudden surge of energy!") if(!uses) qdel(src) diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index ef2aa825e7..6665d91c2b 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -41,10 +41,10 @@ if(forkload) if(M == user) M.visible_message("[user] eats a delicious forkful of omelette!") - M.reagents.add_reagent(forkload.id, 1) + M.reagents.add_reagent(forkload.type, 1) else M.visible_message("[user] feeds [M] a delicious forkful of omelette!") - M.reagents.add_reagent(forkload.id, 1) + M.reagents.add_reagent(forkload.type, 1) icon_state = "fork" forkload = null diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index 5d384a9346..a8b28f2544 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -25,7 +25,7 @@ /obj/item/mop/proc/clean(turf/A) - if(reagents.has_reagent("water", 1) || reagents.has_reagent("holywater", 1) || reagents.has_reagent("vodka", 1) || reagents.has_reagent("cleaner", 1)) + if(reagents.has_reagent(/datum/reagent/water, 1) || reagents.has_reagent(/datum/reagent/water/holywater, 1) || reagents.has_reagent(/datum/reagent/consumable/ethanol/vodka, 1) || reagents.has_reagent(/datum/reagent/space_cleaner, 1)) SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) A.clean_blood() for(var/obj/effect/O in A) @@ -98,7 +98,7 @@ stamusage = 1 var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water. var/refill_rate = 1 //Rate per process() tick mop refills itself - var/refill_reagent = "water" //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING + var/refill_reagent = /datum/reagent/water //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING /obj/item/mop/advanced/New() ..() diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index ddc49a456c..5fd9600a97 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -98,7 +98,7 @@ /obj/item/banner/medical/special_inspiration(mob/living/carbon/human/H) H.adjustToxLoss(-15) H.setOxyLoss(0) - H.reagents.add_reagent("inaprovaline", 5) + H.reagents.add_reagent(/datum/reagent/medicine/inaprovaline, 5) /obj/item/banner/science name = "sciencia banner" diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index bf363f959c..85f509a6b3 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -434,15 +434,15 @@ name = "medical cyborg expanded hypospray" desc = "An upgrade to the Medical module's hypospray, allowing it \ to treat a wider range of conditions and problems." - additional_reagents = list("mannitol", "oculine", "inacusiate", - "mutadone", "haloperidol") + additional_reagents = list(/datum/reagent/medicine/mannitol, /datum/reagent/medicine/oculine, /datum/reagent/medicine/inacusiate, + /datum/reagent/medicine/mutadone, /datum/reagent/medicine/haloperidol) /obj/item/borg/upgrade/hypospray/high_strength name = "medical cyborg high-strength hypospray" desc = "An upgrade to the Medical module's hypospray, containing \ stronger versions of existing chemicals." - additional_reagents = list("oxandrolone", "sal_acid", "rezadone", - "pen_acid") + additional_reagents = list(/datum/reagent/medicine/oxandrolone, /datum/reagent/medicine/sal_acid, + /datum/reagent/medicine/rezadone, /datum/reagent/medicine/pen_acid) /obj/item/borg/upgrade/piercing_hypospray name = "cyborg piercing hypospray" diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index c658eee3d5..e47021c1f6 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -163,16 +163,16 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", for(var/obj/effect/rune/R in orange(2,user)) R.invisibility = 0 if(user.mind && (user.mind.isholy)) - if(A.reagents && A.reagents.has_reagent("water")) // blesses all the water in the holder + if(A.reagents && A.reagents.has_reagent(/datum/reagent/water)) // blesses all the water in the holder to_chat(user, "You bless [A].") - var/water2holy = A.reagents.get_reagent_amount("water") - A.reagents.del_reagent("water") - A.reagents.add_reagent("holywater",water2holy) - if(A.reagents && A.reagents.has_reagent("unholywater")) // yeah yeah, copy pasted code - sue me + var/water2holy = A.reagents.get_reagent_amount(/datum/reagent/water) + A.reagents.del_reagent(/datum/reagent/water) + A.reagents.add_reagent(/datum/reagent/water/holywater,water2holy) + if(A.reagents && A.reagents.has_reagent(/datum/reagent/fuel/unholywater)) // yeah yeah, copy pasted code - sue me to_chat(user, "You purify [A].") - var/unholy2clean = A.reagents.get_reagent_amount("unholywater") - A.reagents.del_reagent("unholywater") - A.reagents.add_reagent("holywater",unholy2clean) + var/unholy2clean = A.reagents.get_reagent_amount(/datum/reagent/fuel/unholywater) + A.reagents.del_reagent(/datum/reagent/fuel/unholywater) + A.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean) if(istype(A, /obj/item/twohanded/required/cult_bastard) && !iscultist(user)) var/obj/item/twohanded/required/cult_bastard/sword = A to_chat(user, "You begin to exorcise [sword].") diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index f3be8cefc8..a77b47ae41 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -148,7 +148,7 @@ /obj/item/watertank/janitor/Initialize() . = ..() - reagents.add_reagent("cleaner", 500) + reagents.add_reagent(/datum/reagent/space_cleaner, 500) /obj/item/reagent_containers/spray/mister/janitor name = "janitor spray nozzle" @@ -184,7 +184,7 @@ /obj/item/watertank/atmos/Initialize() . = ..() - reagents.add_reagent("water", 200) + reagents.add_reagent(/datum/reagent/water, 200) /obj/item/watertank/atmos/make_noz() return new /obj/item/extinguisher/mini/nozzle(src) @@ -436,13 +436,13 @@ /obj/item/watertank/op/Initialize() . = ..() - reagents.add_reagent("mutagen",350) - reagents.add_reagent("napalm",125) - reagents.add_reagent("welding_fuel",125) - reagents.add_reagent("clf3",300) - reagents.add_reagent("cryptobiolin",350) - reagents.add_reagent("plasma",250) - reagents.add_reagent("condensedcapsaicin",500) + reagents.add_reagent(/datum/reagent/toxin/mutagen,350) + reagents.add_reagent(/datum/reagent/napalm,125) + reagents.add_reagent(/datum/reagent/fuel,125) + reagents.add_reagent(/datum/reagent/clf3,300) + reagents.add_reagent(/datum/reagent/cryptobiolin,350) + reagents.add_reagent(/datum/reagent/toxin/plasma,250) + reagents.add_reagent(/datum/reagent/consumable/condensedcapsaicin,500) /obj/item/reagent_containers/spray/mister/op desc = "A mister nozzle attached to several extended water tanks. It suspiciously has a compressor in the system and is labelled entirely in New Cyrillic." diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 65b240c528..f9160b81f5 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -37,7 +37,7 @@ /obj/item/weldingtool/Initialize() . = ..() create_reagents(max_fuel) - reagents.add_reagent("welding_fuel", max_fuel) + reagents.add_reagent(/datum/reagent/fuel, max_fuel) update_icon() @@ -142,7 +142,7 @@ /obj/item/weldingtool/attack_self(mob/user) - if(src.reagents.has_reagent("plasma")) + if(src.reagents.has_reagent(/datum/reagent/toxin/plasma)) message_admins("[ADMIN_LOOKUPFLW(user)] activated a rigged welder at [AREACOORD(user)].") explode() switched_on(user) @@ -154,7 +154,7 @@ // Returns the amount of fuel in the welder /obj/item/weldingtool/proc/get_fuel() - return reagents.get_reagent_amount("welding_fuel") + return reagents.get_reagent_amount(/datum/reagent/fuel) // Uses fuel from the welding tool. @@ -165,7 +165,7 @@ if(used) burned_fuel_for = 0 if(get_fuel() >= used) - reagents.remove_reagent("welding_fuel", used) + reagents.remove_reagent(/datum/reagent/fuel, used) check_fuel() return TRUE else @@ -333,7 +333,7 @@ /obj/item/weldingtool/abductor/process() if(get_fuel() <= max_fuel) - reagents.add_reagent("welding_fuel", 1) + reagents.add_reagent(/datum/reagent/fuel, 1) ..() /obj/item/weldingtool/hugetank @@ -377,7 +377,7 @@ ..() if(get_fuel() < max_fuel && nextrefueltick < world.time) nextrefueltick = world.time + 10 - reagents.add_reagent("welding_fuel", 1) + reagents.add_reagent(/datum/reagent/fuel, 1) /obj/item/weldingtool/advanced name = "advanced welding tool" @@ -390,7 +390,7 @@ /obj/item/weldingtool/advanced/process() if(get_fuel() <= max_fuel) - reagents.add_reagent("welding_fuel", 1) + reagents.add_reagent(/datum/reagent/fuel, 1) ..() #undef WELDER_FUEL_BURN_INTERVAL diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index b8137d831b..580f961d0b 100644 --- a/code/game/objects/structures/divine.dm +++ b/code/game/objects/structures/divine.dm @@ -39,7 +39,7 @@ return last_process = world.time to_chat(user, "The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards.") - user.reagents.add_reagent("godblood",20) + user.reagents.add_reagent(/datum/reagent/medicine/omnizine/godblood,20) update_icon() addtimer(CALLBACK(src, .proc/update_icon), time_between_uses) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 76c8f7f11f..343b33f964 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -101,7 +101,7 @@ if (!open) return var/obj/item/reagent_containers/RG = I - RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) + RG.reagents.add_reagent(/datum/reagent/water, min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) to_chat(user, "You fill [RG] from [src]. Gross.") else return ..() @@ -461,7 +461,7 @@ desc = "A sink used for washing one's hands and face." anchored = TRUE var/busy = FALSE //Something's being washed at the moment - var/dispensedreagent = "water" // for whenever plumbing happens + var/dispensedreagent = /datum/reagent/water // for whenever plumbing happens /obj/structure/sink/attack_hand(mob/living/user) @@ -536,7 +536,7 @@ return if(istype(O, /obj/item/mop)) - O.reagents.add_reagent("[dispensedreagent]", 5) + O.reagents.add_reagent(dispensedreagent, 5) to_chat(user, "You wet [O] in [src].") playsound(loc, 'sound/effects/slosh.ogg', 25, 1) return diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d618e457b0..ff7e61ad5d 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -554,12 +554,10 @@ clear_reagents_to_vomit_pool(C,V) /proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V) + for(var/datum/reagent/consumable/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food + if(R.nutriment_factor > 0) + M.reagents.del_reagent(R.type) M.reagents.trans_to(V, M.reagents.total_volume / 10) - for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food - if(istype(R, /datum/reagent/consumable)) - var/datum/reagent/consumable/nutri_check = R - if(nutri_check.nutriment_factor >0) - M.reagents.remove_reagent(R.id,R.volume) //Whatever happens after high temperature fire dies out or thermite reaction works. //Should return new turf diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 433f52306b..aeb803b96a 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -797,7 +797,7 @@ icon_state = "bed" can_buckle = 1 - var/static/list/injected_reagents = list("corazone") + var/static/list/injected_reagents = list(/datum/reagent/medicine/corazone) /obj/structure/table/optable/abductor/Crossed(atom/movable/AM) . = ..() diff --git a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm index 3cb90d64bb..182fcea0c2 100644 --- a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm @@ -143,9 +143,9 @@ create_reagents(10) if(overmind && overmind.blob_reagent_datum) - reagents.add_reagent(overmind.blob_reagent_datum.id, 10) + reagents.add_reagent(overmind.blob_reagent_datum.type, 10) else - reagents.add_reagent("spore", 10) + reagents.add_reagent(/datum/reagent/toxin/spore, 10) // Attach the smoke spreader and setup/start it. S.attach(location) diff --git a/code/modules/antagonists/changeling/powers/adrenaline.dm b/code/modules/antagonists/changeling/powers/adrenaline.dm index 256d3e89e3..ba40388844 100644 --- a/code/modules/antagonists/changeling/powers/adrenaline.dm +++ b/code/modules/antagonists/changeling/powers/adrenaline.dm @@ -13,5 +13,5 @@ //Recover from stuns. /obj/effect/proc_holder/changeling/adrenaline/sting_action(mob/living/user) - user.do_adrenaline(0, FALSE, 70, 0, TRUE, list("epinephrine" = 3, "changelingmeth" = 10, "mannitol" = 10, "regen_jelly" = 10, "changelingadrenaline" = 5), "Energy rushes through us.", 0, 0.75, 0) + user.do_adrenaline(0, FALSE, 70, 0, TRUE, list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/drug/methamphetamine/changeling = 10, /datum/reagent/medicine/mannitol = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/changelingadrenaline = 5), "Energy rushes through us.", 0, 0.75, 0) return TRUE \ No newline at end of file diff --git a/code/modules/antagonists/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm index 971c811074..332f543545 100644 --- a/code/modules/antagonists/changeling/powers/linglink.dm +++ b/code/modules/antagonists/changeling/powers/linglink.dm @@ -58,7 +58,7 @@ target.mind.linglink = 1 target.say("[MODE_TOKEN_CHANGELING] AAAAARRRRGGGGGHHHHH!!") to_chat(target, "You can now communicate in the changeling hivemind, say \"[MODE_TOKEN_CHANGELING] message\" to communicate!") - target.reagents.add_reagent("salbutamol", 40) // So they don't choke to death while you interrogate them + target.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 40) // So they don't choke to death while you interrogate them sleep(1800) SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]", "[i]")) if(!do_mob(user, target, 20)) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 92a4f28308..b2ab5caef8 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -500,7 +500,7 @@ /obj/item/clothing/suit/space/changeling/process() if(ishuman(loc)) var/mob/living/carbon/human/H = loc - H.reagents.add_reagent("salbutamol", REAGENTS_METABOLISM) + H.reagents.add_reagent(/datum/reagent/medicine/salbutamol, REAGENTS_METABOLISM) /obj/item/clothing/head/helmet/space/changeling name = "flesh mass" diff --git a/code/modules/antagonists/changeling/powers/panacea.dm b/code/modules/antagonists/changeling/powers/panacea.dm index 8d571d21e3..2a0451bc76 100644 --- a/code/modules/antagonists/changeling/powers/panacea.dm +++ b/code/modules/antagonists/changeling/powers/panacea.dm @@ -28,10 +28,10 @@ C.vomit(0, toxic = TRUE) O.forceMove(get_turf(user)) - user.reagents.add_reagent("mutadone", 10) - user.reagents.add_reagent("pen_jelly", 20) - user.reagents.add_reagent("antihol", 10) - user.reagents.add_reagent("mannitol", 25) + user.reagents.add_reagent(/datum/reagent/medicine/mutadone, 10) + user.reagents.add_reagent(/datum/reagent/medicine/pen_acid/pen_jelly, 20) + user.reagents.add_reagent(/datum/reagent/medicine/antihol, 10) + user.reagents.add_reagent(/datum/reagent/medicine/mannitol, 25) if(isliving(user)) var/mob/living/L = user diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index c58d934d6d..dc7887eee3 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -104,11 +104,11 @@ var/mob/living/carbon/C = target . = TRUE if(istype(C)) - if(C.reagents.has_reagent("changeling_sting_real")) - C.reagents.add_reagent("changeling_sting_real",120) + if(C.reagents.has_reagent(/datum/reagent/changeling_string)) + C.reagents.add_reagent(/datum/reagent/changeling_string,120) log_combat(user, target, "stung", "transformation sting", ", extending the duration.") else - C.reagents.add_reagent("changeling_sting_real",120,list("desired_dna" = selected_dna.dna)) + C.reagents.add_reagent(/datum/reagent/changeling_string,120,list("desired_dna" = selected_dna.dna)) log_combat(user, target, "stung", "transformation sting", " new identity is '[selected_dna.dna.real_name]'") @@ -243,8 +243,8 @@ /obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/target) log_combat(user, target, "stung", "LSD sting") if(target.reagents) - target.reagents.add_reagent("regenerative_materia", 5) - target.reagents.add_reagent("mindbreaker", 5) + target.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 5) + target.reagents.add_reagent(/datum/reagent/toxin/mindbreaker, 5) return TRUE /obj/effect/proc_holder/changeling/sting/cryo @@ -262,5 +262,5 @@ /obj/effect/proc_holder/changeling/sting/cryo/sting_action(mob/user, mob/target) log_combat(user, target, "stung", "cryo sting") if(target.reagents) - target.reagents.add_reagent("frostoil", 30) + target.reagents.add_reagent(/datum/reagent/consumable/frostoil, 30) return TRUE diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm index 1f616b7dbc..9f2ddfda47 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm @@ -100,7 +100,7 @@ var/burndamage = L.getFireLoss() var/oxydamage = L.getOxyLoss() var/totaldamage = brutedamage + burndamage + oxydamage - if(!totaldamage && (!L.reagents || !L.reagents.has_reagent("holywater"))) + if(!totaldamage && (!L.reagents || !L.reagents.has_reagent(/datum/reagent/water/holywater))) to_chat(ranged_ability_user, "\"[L] is unhurt and untainted.\"") return TRUE @@ -108,7 +108,7 @@ to_chat(ranged_ability_user, "You bathe [L == ranged_ability_user ? "yourself":"[L]"] in Inath-neq's power!") var/targetturf = get_turf(L) - var/has_holy_water = (L.reagents && L.reagents.has_reagent("holywater")) + var/has_holy_water = (L.reagents && L.reagents.has_reagent(/datum/reagent/water/holywater)) var/healseverity = max(round(totaldamage*0.05, 1), 1) //shows the general severity of the damage you just healed, 1 glow per 20 for(var/i in 1 to healseverity) new /obj/effect/temp_visual/heal(targetturf, "#1E8CE1") @@ -129,7 +129,7 @@ playsound(targetturf, 'sound/magic/staff_healing.ogg', 50, 1) if(has_holy_water) - L.reagents.remove_reagent("holywater", 1000) + L.reagents.del_reagent(/datum/reagent/water/holywater) remove_ranged_ability() diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index b4ddb9dbff..219186da7f 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -797,7 +797,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target if(H.stat != DEAD) - H.reagents.add_reagent("unholywater", 4) + H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 4) if(isshade(target) || isconstruct(target)) var/mob/living/simple_animal/M = target if(M.health+5 < M.maxHealth) @@ -898,7 +898,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target if(H.stat != DEAD) - H.reagents.add_reagent("unholywater", 7) + H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 7) if(isshade(target) || isconstruct(target)) var/mob/living/simple_animal/M = target if(M.health+15 < M.maxHealth) diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm index ff12a835ef..ba2a96289d 100644 --- a/code/modules/antagonists/cult/ritual.dm +++ b/code/modules/antagonists/cult/ritual.dm @@ -24,11 +24,11 @@ This file contains the cult dagger and rune list code /obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user) if(iscultist(M)) - if(M.reagents && M.reagents.has_reagent("holywater")) //allows cultists to be rescued from the clutches of ordained religion + if(M.reagents && M.reagents.has_reagent(/datum/reagent/water/holywater)) //allows cultists to be rescued from the clutches of ordained religion to_chat(user, "You remove the taint from [M]." ) - var/holy2unholy = M.reagents.get_reagent_amount("holywater") - M.reagents.del_reagent("holywater") - M.reagents.add_reagent("unholywater",holy2unholy) + var/holy2unholy = M.reagents.get_reagent_amount(/datum/reagent/water/holywater) + M.reagents.del_reagent(/datum/reagent/water/holywater) + M.reagents.add_reagent(/datum/reagent/fuel/unholywater,holy2unholy) log_combat(user, M, "smacked", src, " removing the holy water from them") return FALSE . = ..() diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index 2e38734b6f..951fe4e18a 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -384,14 +384,14 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", if(BANISH_WATER) if(iscarbon(body)) var/mob/living/carbon/H = body - return H.reagents.has_reagent("holy water") + return H.reagents.has_reagent(/datum/reagent/water/holywater) return 0 if(BANISH_COFFIN) return (body && istype(body.loc, /obj/structure/closet/crate/coffin)) if(BANISH_FORMALDYHIDE) if(iscarbon(body)) var/mob/living/carbon/H = body - return H.reagents.has_reagent("formaldehyde") + return H.reagents.has_reagent(/datum/reagent/toxin/formaldehyde) return 0 if(BANISH_RUNES) if(body) diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index e1c50a7cf5..2186e8b49e 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -513,7 +513,7 @@ /obj/machinery/nuclearbomb/beer/proc/fizzbuzz() var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = src - R.add_reagent("beer", 100) + R.add_reagent(/datum/reagent/consumable/ethanol/beer, 100) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(src), R) diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index d6582a294f..d2e71615e3 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -353,7 +353,7 @@ to_chat(H, "You feel [pick("suddenly sick", "a surge of nausea", "like your skin is wrong")].") else if(mob.reagents) - mob.reagents.add_reagent("plasma", 5) + mob.reagents.add_reagent(/datum/reagent/toxin/plasma, 5) else mob.adjustToxLoss(5) for(var/obj/structure/spacevine/vine in T) //Fucking with botanists, the ability. diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index aa1abe56b4..34deb4ab3b 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -175,7 +175,7 @@ if(C.reagents.total_volume >= C.volume) to_chat(user, "[C] is full.") return - C.reagents.add_reagent("plasma", rand(5, 10)) + C.reagents.add_reagent(/datum/reagent/toxin/plasma, rand(5, 10)) user.visible_message("[user] scoops some plasma from the [src] with \the [C].", "You scoop out some plasma from the [src] using \the [C].") /turf/open/lava/plasma/burn_stuff(AM) diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index 5137d0a6f3..ca76c80df7 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -12,7 +12,7 @@ /datum/bounty/reagent/applies_to(obj/O) if(!istype(O, /obj/item/reagent_containers)) return FALSE - if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.id)) + if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.type)) return FALSE if(O.flags_1 & HOLOGRAM_1) return FALSE @@ -21,7 +21,7 @@ /datum/bounty/reagent/ship(obj/O) if(!applies_to(O)) return - shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.id) + shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.type) if(shipped_volume > required_volume) shipped_volume = required_volume @@ -29,7 +29,7 @@ if(!istype(other_bounty, /datum/bounty/reagent)) return TRUE var/datum/bounty/reagent/R = other_bounty - return wanted_reagent.id != R.wanted_reagent.id + return wanted_reagent.type != R.wanted_reagent.type /datum/bounty/reagent/simple_drink name = "Simple Drink" diff --git a/code/modules/clothing/glasses/phantomthief.dm b/code/modules/clothing/glasses/phantomthief.dm index f5a15f7900..96f5cfc201 100644 --- a/code/modules/clothing/glasses/phantomthief.dm +++ b/code/modules/clothing/glasses/phantomthief.dm @@ -26,7 +26,7 @@ /obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate) if(istype(user) && combatmodestate && world.time >= nextadrenalinepop) nextadrenalinepop = world.time + 5 MINUTES - user.reagents.add_reagent("syndicateadrenals", 5) + user.reagents.add_reagent(/datum/reagent/syndicateadrenals, 5) user.playsound_local(user, 'sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE) /obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot) diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 29fd06dcaf..4c8f9bdab2 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -53,7 +53,7 @@ return var/obj/item/reagent_containers/glass/bucket/bucket = H.get_item_for_held_index(1) - bucket.reagents.add_reagent("water",70) + bucket.reagents.add_reagent(/datum/reagent/water,70) /datum/outfit/laser_tag name = "Laser Tag Red" diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 79487a024c..9075f693db 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -15,48 +15,46 @@ var/randomProbability = 1 var/reagentsAmount = 100 var/list/saferChems = list( - "water", - "carbon", - "flour", - "cleaner", - "nutriment", - "condensedcapsaicin", - "mushroomhallucinogen", - "lube", - "pink_glitter", - "cryptobiolin", - "plantbgone", - "blood", - "charcoal", - "space_drugs", - "morphine", - "holywater", - "ethanol", - "hot_coco", - "sacid", - "mindbreaker", - "rotatium", - "bluespace", - "pax", - "laughter", - "concentrated_barbers_aid", - "colorful_reagent", - "dizzysolution", - "tiresolution", - "sodiumchloride", - "beer", - "hair_dye", - "sugar", - "white_glitter", - "growthserum", - "cornoil", - "uranium", - "carpet", - "firefighting_foam", - "semen", - "femcum", - "tearjuice", - "strange_reagent" + /datum/reagent/water, + /datum/reagent/carbon, + /datum/reagent/consumable/flour, + /datum/reagent/space_cleaner, + /datum/reagent/consumable/nutriment, + /datum/reagent/consumable/condensedcapsaicin, + /datum/reagent/drug/mushroomhallucinogen, + /datum/reagent/lube, + /datum/reagent/glitter/pink, + /datum/reagent/cryptobiolin, + /datum/reagent/toxin/plantbgone, + /datum/reagent/blood, + /datum/reagent/medicine/charcoal, + /datum/reagent/drug/space_drugs, + /datum/reagent/medicine/morphine, + /datum/reagent/water/holywater, + /datum/reagent/consumable/ethanol, + /datum/reagent/consumable/hot_coco, + /datum/reagent/toxin/acid, + /datum/reagent/toxin/mindbreaker, + /datum/reagent/toxin/rotatium, + /datum/reagent/bluespace, + /datum/reagent/pax, + /datum/reagent/consumable/laughter, + /datum/reagent/concentrated_barbers_aid, + /datum/reagent/colorful_reagent, + /datum/reagent/peaceborg_confuse, + /datum/reagent/peaceborg_tire, + /datum/reagent/consumable/sodiumchloride, + /datum/reagent/consumable/ethanol/beer, + /datum/reagent/hair_dye, + /datum/reagent/consumable/sugar, + /datum/reagent/glitter/white, + /datum/reagent/growthserum, + /datum/reagent/consumable/cornoil, + /datum/reagent/uranium, + /datum/reagent/carpet, + /datum/reagent/firefighting_foam, + /datum/reagent/consumable/tearjuice, + /datum/reagent/medicine/strange_reagent ) //needs to be chemid unit checked at some point @@ -165,7 +163,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent("beer", reagentsAmount) + R.add_reagent(/datum/reagent/consumable/ethanol/beer, reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) @@ -180,7 +178,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent("semen", reagentsAmount) + R.add_reagent(/datum/reagent/consumable/semen, reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) @@ -195,7 +193,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent("femcum", reagentsAmount) + R.add_reagent(/datum/reagent/consumable/femcum, reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) diff --git a/code/modules/events/wizard/invincible.dm b/code/modules/events/wizard/invincible.dm index 209bdd26c1..6ba9b44ee1 100644 --- a/code/modules/events/wizard/invincible.dm +++ b/code/modules/events/wizard/invincible.dm @@ -8,5 +8,5 @@ /datum/round_event/wizard/invincible/start() for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - H.reagents.add_reagent("adminordrazine", 40) //100 ticks of absolute invinciblity (barring gibs) + H.reagents.add_reagent(/datum/reagent/medicine/adminordrazine, 40) //100 ticks of absolute invinciblity (barring gibs) to_chat(H, "You feel invincible, nothing can hurt you!") \ No newline at end of file diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 1e5c2eaf60..a5703c4671 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -103,7 +103,7 @@ to_chat(user, "[src] is full.") else to_chat(user, "You break [E] in [src].") - reagents.add_reagent("eggyolk", 5) + reagents.add_reagent(/datum/reagent/consumable/eggyolk, 5) qdel(E) return else diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 1d0b626d98..25d7d72085 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -153,11 +153,11 @@ if(!proximity) return if(isturf(target)) - if(!reagents.has_reagent("sodiumchloride", 2)) + if(!reagents.has_reagent(/datum/reagent/consumable/sodiumchloride, 2)) to_chat(user, "You don't have enough salt to make a pile!") return user.visible_message("[user] shakes some salt onto [target].", "You shake some salt onto [target].") - reagents.remove_reagent("sodiumchloride", 2) + reagents.remove_reagent(/datum/reagent/consumable/sodiumchloride, 2) new/obj/effect/decal/cleanable/salt(target) return diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 8724841643..072c14aea3 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -304,7 +304,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(get_turf(src)) A.initialize_custom_food(src, S, user) else diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index b8a63afb7f..4fd8ad2366 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -19,11 +19,9 @@ Here is an example of the new formatting for anyone who wants to add more food i name = "Xenoburger" //Name that displays in the UI. desc = "Smells caustic. Tastes like heresy." //Duh icon_state = "xburger" //Refers to an icon in food.dmi -/obj/item/reagent_containers/food/snacks/xenoburger/Initialize() //Don't mess with this. | nO I WILL MESS WITH THIS - . = ..() //Same here. - reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste - reagents.add_reagent("nutriment", 2) //this line of code for all the contents. - bitesize = 3 //This is the amount each bite consumes. + list_reagents = list(/datum/reagent/xenomicrobes = 10, + /datum/reagent/consumable/nutriment = 2) //What's inside the snack. + bitesize = 3 //This is the amount each bite consumes. ``` All foods are distributed among various categories. Use common sense. @@ -60,7 +58,7 @@ All foods are distributed among various categories. Use common sense. if(list_reagents) for(var/rid in list_reagents) var/amount = list_reagents[rid] - if(rid == "nutriment" || rid == "vitamin") + if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin) reagents.add_reagent(rid, amount, tastes.Copy()) else reagents.add_reagent(rid, amount) @@ -206,7 +204,7 @@ All foods are distributed among various categories. Use common sense. if(bonus_reagents && bonus_reagents.len) for(var/r_id in bonus_reagents) var/amount = bonus_reagents[r_id] - if(r_id == "nutriment" || r_id == "vitamin") + if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin) reagents.add_reagent(r_id, amount, tastes) else reagents.add_reagent(r_id, amount) @@ -285,7 +283,7 @@ All foods are distributed among various categories. Use common sense. if(S.bonus_reagents && S.bonus_reagents.len) for(var/r_id in S.bonus_reagents) var/amount = S.bonus_reagents[r_id] * cooking_efficiency - if(r_id == "nutriment" || r_id == "vitamin") + if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin) S.reagents.add_reagent(r_id, amount, tastes) else S.reagents.add_reagent(r_id, amount) diff --git a/code/modules/food_and_drinks/food/snacks_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm index 0f11fc8ed2..73f6231960 100644 --- a/code/modules/food_and_drinks/food/snacks_bread.dm +++ b/code/modules/food_and_drinks/food/snacks_bread.dm @@ -188,12 +188,12 @@ GLOBAL_VAR_INIT(frying_hardmode, TRUE) GLOBAL_VAR_INIT(frying_bad_chem_add_volume, TRUE) GLOBAL_LIST_INIT(frying_bad_chems, list( -"bad_food" = 10, -"clf3" = 2, -"aranesp" = 2, -"blackpowder" = 10, -"phlogiston" = 3, -"cyanide" = 3, +/datum/reagent/toxin/bad_food = 10, +/datum/reagent/clf3 = 2, +/datum/reagent/drug/aranesp = 2, +/datum/reagent/blackpowder = 10, +/datum/reagent/phlogiston = 3, +/datum/reagent/toxin/cyanide = 3, )) /obj/item/reagent_containers/food/snacks/deepfryholder/Initialize(mapload, obj/item/fried) diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm index 510783479e..83e447a308 100644 --- a/code/modules/food_and_drinks/food/snacks_egg.dm +++ b/code/modules/food_and_drinks/food/snacks_egg.dm @@ -129,7 +129,7 @@ "You take a piece of omelette with your fork.") var/datum/reagent/R = pick(reagents.reagent_list) - reagents.remove_reagent(R.id, 1) + reagents.remove_reagent(R.type, 1) F.forkload = R if(reagents.total_volume <= 0) qdel(src) diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index baf8e150c5..87ba994022 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -27,7 +27,7 @@ is_frosted = TRUE name = "frosted [name]" icon_state = frosted_icon //delish~! - reagents.add_reagent("sprinkles", 1) + reagents.add_reagent(/datum/reagent/consumable/sprinkles, 1) filling_color = "#FF69B4" return TRUE @@ -51,8 +51,11 @@ /obj/item/reagent_containers/food/snacks/donut/chaos/Initialize() . = ..() - extra_reagent = pick("nutriment", "capsaicin", "frostoil", "krokodil", "plasma", "cocoa", "slimejelly", "banana", "berryjuice", "omnizine") - reagents.add_reagent("[extra_reagent]", 3) + extra_reagent = pick(/datum/reagent/consumable/nutriment, /datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, + /datum/reagent/drug/krokodil, /datum/reagent/toxin/plasma, /datum/reagent/consumable/coco, + /datum/reagent/toxin/slimejelly, /datum/reagent/consumable/banana, /datum/reagent/consumable/berryjuice, + /datum/reagent/medicine/omnizine) + reagents.add_reagent(extra_reagent, 3) /obj/item/reagent_containers/food/snacks/donut/jelly name = "jelly donut" @@ -67,7 +70,7 @@ /obj/item/reagent_containers/food/snacks/donut/jelly/Initialize() . = ..() if(extra_reagent) - reagents.add_reagent("[extra_reagent]", 3) + reagents.add_reagent(extra_reagent, 3) /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly name = "jelly donut" @@ -260,10 +263,10 @@ if(fey) name = "exceptional plump helmet biscuit" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" - bonus_reagents = list("omnizine" = 5, "nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) . = ..() if(fey) - reagents.add_reagent("omnizine", 5) + reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) /obj/item/reagent_containers/food/snacks/cracker name = "cracker" diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index bc66d353e1..f30c4e8a7c 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -148,9 +148,9 @@ if(fey) name = "exceptional plump pie" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" - bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 4) if(fey) - reagents.add_reagent("omnizine", 5) + reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) /obj/item/reagent_containers/food/snacks/pie/xemeatpie diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index 5f01d3170e..93b1c083d9 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -26,8 +26,8 @@ desc = "A wish come true!" bonus_reagents = list("nutriment" = 9, "vitamin" = 1) if(wish_true) - reagents.add_reagent("nutriment", 9) - reagents.add_reagent("vitamin", 1) + reagents.add_reagent(/datum/reagent/consumable/nutriment, 9) + reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 1) foodtype = VEGETABLES /obj/item/reagent_containers/food/snacks/soup/meatball @@ -101,9 +101,11 @@ /obj/item/reagent_containers/food/snacks/soup/mystery/Initialize() . = ..() - extra_reagent = pick("capsaicin", "frostoil", "omnizine", "banana", "blood", "slimejelly", "toxin", "banana", "carbon", "oculine") - bonus_reagents = list("[extra_reagent]" = 5, "nutriment" = 6) - reagents.add_reagent("[extra_reagent]", 5) + extra_reagent = pick(/datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, + /datum/reagent/medicine/omnizine, /datum/reagent/consumable/banana, /datum/reagent/blood, + /datum/reagent/toxin/slimejelly, /datum/reagent/toxin, /datum/reagent/carbon, /datum/reagent/medicine/oculine) + bonus_reagents = list(extra_reagent = 5, /datum/reagent/consumable/nutriment = 6) + reagents.add_reagent(extra_reagent, 5) /obj/item/reagent_containers/food/snacks/soup/hotchili name = "hot chili" diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 1bc2e4bb89..27ee54815f 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -52,7 +52,7 @@ God bless America. /obj/machinery/deepfryer/Initialize() . = ..() create_reagents(50, OPENCONTAINER) - reagents.add_reagent("cooking_oil", 25) + reagents.add_reagent(/datum/reagent/consumable/cooking_oil, 25) component_parts = list() component_parts += new /obj/item/circuitboard/machine/deep_fryer(null) component_parts += new /obj/item/stock_parts/micro_laser(null) @@ -81,9 +81,9 @@ God bless America. qdel(I) return if(istype(I,/obj/item/clothing/head/mob_holder)) - to_chat(user, "This does not fit in the fryer.") // TODO: Deepfrying instakills mobs, spawns a whole deep-fried mob. + to_chat(user, "This does not fit in the fryer.") // TODO: Deepfrying instakills mobs, spawns a whole deep-fried mob. return - if(!reagents.has_reagent("cooking_oil")) + if(!reagents.has_reagent(/datum/reagent/consumable/cooking_oil)) to_chat(user, "[src] has no cooking oil to fry with!") return if(I.resistance_flags & INDESTRUCTIBLE) @@ -107,7 +107,7 @@ God bless America. /obj/machinery/deepfryer/process() ..() - var/datum/reagent/consumable/cooking_oil/C = reagents.has_reagent("cooking_oil") + var/datum/reagent/consumable/cooking_oil/C = reagents.has_reagent(/datum/reagent/consumable/cooking_oil) if(!C) return reagents.chem_temp = C.fry_temperature diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 4dda9dd773..68cc84c639 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -35,16 +35,16 @@ dat += "Portion: [portion]
" for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Purge" + dat += "Purge" if (glasses > 0) - dat += "Pour in a glass" - dat += "Add to the mixer
" + dat += "Pour in a glass" + dat += "Add to the mixer
" dat += "
MIXER CONTENTS
" for(var/datum/reagent/R in mixer.reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Transfer back" + dat += "Transfer back" if (glasses > 0) - dat += "Pour in a glass" + dat += "Pour in a glass" dat += "
" dat += "

STORED FOOD
" 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/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 8db6956da9..1a33ce26db 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -39,23 +39,23 @@ /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!") @@ -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..73d4a4f514 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -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 diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index d71e7c0f6a..f7294ff87a 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) 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/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..bfd4204912 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -148,16 +148,16 @@ 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/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index 44373515c6..7e8baa9487 100644 --- a/code/modules/hydroponics/grown/cocoa_vanilla.dm +++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm @@ -97,7 +97,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/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 6ceb69536d..7325dc5b5c 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -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/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/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..65230d1f21 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -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 4132719389..1105a23ea5 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -195,7 +195,7 @@ 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/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 4077f21ea9..34b1fa392f 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -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/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 8195b3d84b..89c438f419 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 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 0bfd23cbff..4b9383eadf 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 6ecedba3be..b83bbb65f0 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -181,7 +181,7 @@ 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) @@ -517,7 +517,7 @@ add_splatter_floor(T) if(stun) adjustBruteLoss(3) - else if(src.reagents.has_reagent("blazaam")) + else if(src.reagents.has_reagent(/datum/reagent/consumable/ethanol/blazaam)) if(T) T.add_vomit_floor(src, VOMIT_PURPLE) else diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 9dcc5276e5..45e7637741 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -240,7 +240,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) @@ -316,18 +316,18 @@ else return - + else if(check_zone(M.zone_selected) == "r_arm" || check_zone(M.zone_selected) == "l_arm") M.visible_message( \ "[M] shakes [src]'s hand.", \ "You shake [src]'s hand.", ) - + else if(check_zone(M.zone_selected) == "mouth") // I ADDED BOOP-EH-DEH-NOSEH - Jon M.visible_message( \ "[M] boops [src]'s nose.", \ "You boop [src] on the nose.", ) playsound(src, 'sound/items/Nose_boop.ogg', 50, 0) - + else M.visible_message("[M] hugs [src] to make [p_them()] feel better!", \ "You hug [src] to make [p_them()] feel better!") diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 310ab6beeb..d1a483bb1d 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 67d7cb585e..e24f734a13 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1267,7 +1267,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.id == 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..1f681cda9f 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.id == /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/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index ceadb28115..f42c36fe32 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -47,9 +47,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 722c984309..ab32f4d66e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -369,7 +369,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 ece7fe9ecb..d934550149 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -751,17 +751,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 c0a9a2082f..b033d4ecc0 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 3cbf036270..53ec3a64d3 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -292,8 +292,8 @@ /mob/living/simple_animal/pet/cat/cak/attack_hand(mob/living/L) ..() 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 b2971e8d01..76f8093e38 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/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/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 89c4f70f69..d0497bf6ce 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) @@ -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..68b5c123d7 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) 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 514edf896b..47ad018b67 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -185,6 +185,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 d1e10ea693..333428b406 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..d4d63b2e66 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -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/power/cell.dm b/code/modules/power/cell.dm index ded99d6fa6..4692a1a598 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -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..fbe262c5e3 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -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/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index bdbf706448..5e32401645 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.id)) -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..15a62825e7 100644 --- a/code/modules/reagents/chem_wiki_render.dm +++ b/code/modules/reagents/chem_wiki_render.dm @@ -332,11 +332,11 @@ //Description, OD, Addict, Meta outstring += "[R.description] |
" 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..53da4d65c4 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -64,7 +64,7 @@ if(R.id == "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/_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..c1d539f3ef 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -193,7 +193,7 @@ 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 @@ -229,13 +229,13 @@ 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 @@ -272,7 +272,7 @@ 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/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..86d2a9c2f7 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,7 +331,7 @@ 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 @@ -339,7 +339,7 @@ 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)) + 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/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index a2a9c37cfd..58c483491d 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/resizing/sizechemicals.dm b/code/modules/vore/resizing/sizechemicals.dm index f83ba2ce76..5015216230 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,8 +33,8 @@ 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) ..() @@ -62,14 +60,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 +90,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/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 5d9010a7bd..2231a1f0bf 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 @@ -281,15 +281,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 @@ -368,7 +368,7 @@ if(owner.client?.prefs.lewdchem && !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() @@ -738,18 +738,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 (!HAS_TRAIT(owner, TRAIT_CROCRIN_IMMUNE) && M.canbearoused && owner.client?.prefs.lewdchem) - 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/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm index 35d13b3aa6..c5b9f16bc9 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm @@ -218,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 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm index c72b702a97..0e53225aff 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm @@ -49,9 +49,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,7 +122,7 @@ 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) + SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume) M.reagents.remove_reagent(id, volume) log_game("FERMICHEM: [volume]u of SDGFheal has been transferred to the clone") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Sentient clones made") @@ -265,7 +265,7 @@ 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) + SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume) M.reagents.remove_reagent(id, volume) SM.updatehealth() @@ -338,7 +338,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 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm index d7ff42a9eb..8f267e58c7 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm @@ -41,7 +41,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 +90,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..91b65af869 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm @@ -69,7 +69,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) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 7d358b4149..0b686d1a34 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -26,9 +26,9 @@ 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 +44,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 +78,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. @@ -192,9 +192,9 @@ 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 @@ -210,7 +210,7 @@ M.Knockdown(50) M.Stun(50) P.throw_at(T2, 8, 1) - M.reagents.remove_reagent(id, volume) + M.reagents.del_reagent(id) return var/mob/living/carbon/human/H = M if(!H.getorganslot(ORGAN_SLOT_PENIS) && H.emergent_genital_call()) @@ -236,7 +236,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) 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..36eee1cf33 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -7,9 +7,9 @@ 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. @@ -174,9 +174,9 @@ 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 @@ -290,7 +290,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() @@ -323,7 +323,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,7 +333,7 @@ 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 @@ -345,7 +345,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) 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,7 +355,7 @@ 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. diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index fa4f48172b..3e9ed259ac 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -6,9 +6,9 @@ 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 +34,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 +50,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,13 +62,13 @@ 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) ..() @@ -143,7 +143,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/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index fcde3a8b79..56f793cd66 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() @@ -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) @@ -252,8 +253,8 @@ 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" @@ -350,7 +351,7 @@ 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()