From a3e70b3cf2884ace048ef95e93bf8d9fd4b8007c Mon Sep 17 00:00:00 2001 From: as334 Date: Sat, 27 Dec 2014 01:38:31 -0500 Subject: [PATCH] Prevents certain chemical reactions occuring in mobs. --- .../modules/food&drinks/food/snacks/food_mixtures.dm | 3 +++ code/modules/reagents/Chemistry-Holder.dm | 4 +++- code/modules/reagents/Chemistry-Recipes.dm | 12 ++++++------ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/code/modules/food&drinks/food/snacks/food_mixtures.dm b/code/modules/food&drinks/food/snacks/food_mixtures.dm index a2b65c55b6b..99d56ccd89e 100644 --- a/code/modules/food&drinks/food/snacks/food_mixtures.dm +++ b/code/modules/food&drinks/food/snacks/food_mixtures.dm @@ -8,6 +8,7 @@ required_reagents = list("soymilk" = 10) required_catalysts = list("enzyme" = 5) result_amount = 1 + mob_react=1 /datum/chemical_reaction/tofu/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) @@ -32,6 +33,7 @@ result = null required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2) result_amount = 1 + mob_react = 1 /datum/chemical_reaction/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) @@ -84,6 +86,7 @@ result = null required_reagents = list("blood" = 5, "clonexadone" = 1) result_amount = 1 + mob_react = 1 /datum/chemical_reaction/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location) diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 9e4da4d8a40..4d9cdcd42e1 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -247,7 +247,9 @@ datum/reagents/proc/handle_reactions() else if(my_atom.type == C.required_container) matching_container = 1 - + if (isliving(my_atom)) //Makes it so certain chemical reactions don't occur in mobs + if (C.mob_react) + return if(!C.required_other) matching_other = 1 diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index d419e7c2c70..b7f5a754c50 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -12,7 +12,7 @@ var/result_amount = 0 var/secondary = 0 // set to nonzero if secondary reaction - + var/mob_react = 0 //Determines if a chemical reaction can occur inside a mob /datum/chemical_reaction/proc/on_reaction(var/datum/reagents/holder, var/created_volume) return @@ -384,7 +384,7 @@ silicate required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1) result_amount = null secondary = 1 - + mob_react = 1 /datum/chemical_reaction/chemsmoke/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) var/datum/effect/effect/system/chem_smoke_spread/S = new /datum/effect/effect/system/chem_smoke_spread @@ -448,7 +448,7 @@ silicate result = null required_reagents = list("iron" = 5, "frostoil" = 5, "plasma" = 20) result_amount = 1 - + mob_react = 1 /datum/chemical_reaction/plasmasolidification/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) new /obj/item/stack/sheet/mineral/plasma(location) @@ -537,7 +537,7 @@ silicate result = null required_reagents = list("fluorosurfactant" = 1, "water" = 1) result_amount = 2 - + mob_react = 1 /datum/chemical_reaction/foam/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -566,7 +566,7 @@ silicate result = null required_reagents = list("aluminium" = 3, "foaming_agent" = 1, "pacid" = 1) result_amount = 5 - + mob_react = 1 /datum/chemical_reaction/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -586,7 +586,7 @@ silicate result = null required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1) result_amount = 5 - + mob_react = 1 /datum/chemical_reaction/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume)