From 87d1b821d8be3d432288deac91feef8298bb0f3c Mon Sep 17 00:00:00 2001 From: XDTM Date: Wed, 12 Oct 2016 04:48:59 +0200 Subject: [PATCH] Slime cores deleted on use (#20902) Exhausted slime extracts will now dissolve instead of leaving useless used slime extracts. Slime cores won't be consumed if the reaction outputs chemicals, or if the slime core has extra uses from a cerulean slime. --- .../chemistry/recipes/slime_extracts.dm | 256 +++++++++++------- 1 file changed, 159 insertions(+), 97 deletions(-) diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index b126e44344b..cc5077f30b8 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -1,21 +1,30 @@ +/datum/chemical_reaction/slime + +/datum/chemical_reaction/slime/on_reaction(datum/reagents/holder) + var/obj/item/slime_extract/M = holder.my_atom + if(M.Uses <= 0) + if (!results.len) //if the slime doesn't output chemicals + qdel(M) + //Grey -/datum/chemical_reaction/slimespawn +/datum/chemical_reaction/slime/slimespawn name = "Slime Spawn" id = "m_spawn" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/grey required_other = 1 -/datum/chemical_reaction/slimespawn/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimespawn/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/mob/living/simple_animal/slime/S S = new(get_turf(holder.my_atom), "grey") S.visible_message("Infused with plasma, the \ core begins to quiver and grow, and soon a new baby slime \ emerges from it!") + ..() -/datum/chemical_reaction/slimeinaprov +/datum/chemical_reaction/slime/slimeinaprov name = "Slime epinephrine" id = "m_inaprov" results = list("epinephrine" = 3) @@ -23,24 +32,26 @@ required_other = 1 required_container = /obj/item/slime_extract/grey -/datum/chemical_reaction/slimeinaprov/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimeinaprov/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") + ..() -/datum/chemical_reaction/slimemonkey +/datum/chemical_reaction/slime/slimemonkey name = "Slime Monkey" id = "m_monkey" required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/grey required_other = 1 -/datum/chemical_reaction/slimemonkey/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimemonkey/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") for(var/i = 1, i <= 3, i++) var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube M.loc = get_turf(holder.my_atom) + ..() //Green -/datum/chemical_reaction/slimemutate +/datum/chemical_reaction/slime/slimemutate name = "Mutation Toxin" id = "mutationtoxin" results = list("mutationtoxin" = 1) @@ -48,11 +59,12 @@ required_other = 1 required_container = /obj/item/slime_extract/green -/datum/chemical_reaction/slimemutate/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimemutate/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") + ..() //Mutated Green -/datum/chemical_reaction/slimemutate_unstable +/datum/chemical_reaction/slime/slimemutate_unstable name = "Unstable Mutation Toxin" id = "unstablemutationtoxin" results = list("unstablemutationtoxin" = 1) @@ -61,78 +73,87 @@ required_container = /obj/item/slime_extract/green mix_message = "The mixture rapidly expands and contracts, its appearance shifting into a sickening green." -/datum/chemical_reaction/slimemutate_unstable/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimemutate_unstable/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") + ..() //Metal -/datum/chemical_reaction/slimemetal +/datum/chemical_reaction/slime/slimemetal name = "Slime Metal" id = "m_metal" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/metal required_other = 1 -/datum/chemical_reaction/slimemetal/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimemetal/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/turf/location = get_turf(holder.my_atom) new /obj/item/stack/sheet/plasteel (location, 5) new /obj/item/stack/sheet/metal (location, 15) + ..() -/datum/chemical_reaction/slimeglass +/datum/chemical_reaction/slime/slimeglass name = "Slime Glass" id = "m_glass" required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/metal required_other = 1 -/datum/chemical_reaction/slimeglass/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimeglass/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/turf/location = get_turf(holder.my_atom) new /obj/item/stack/sheet/rglass (location, 5) new /obj/item/stack/sheet/glass (location, 15) + ..() //Gold -/datum/chemical_reaction/slimecrit +/datum/chemical_reaction/slime/slimecrit name = "Slime Crit" id = "m_tele" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/gold required_other = 1 -/datum/chemical_reaction/slimecrit/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimecrit/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/turf/T = get_turf(holder.my_atom) T.visible_message("The slime extract begins to vibrate violently !") addtimer(src, "chemical_mob_spawn", 50, FALSE, holder, 5, "Gold Slime") + spawn(60) + ..() -/datum/chemical_reaction/slimecritlesser +/datum/chemical_reaction/slime/slimecritlesser name = "Slime Crit Lesser" id = "m_tele3" required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/gold required_other = 1 -/datum/chemical_reaction/slimecritlesser/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimecritlesser/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/turf/T = get_turf(holder.my_atom) T.visible_message("The slime extract begins to vibrate violently !") addtimer(src, "chemical_mob_spawn", 50, FALSE, holder, 3, "Lesser Gold Slime", "neutral") + spawn(60) + ..() -/datum/chemical_reaction/slimecritfriendly +/datum/chemical_reaction/slime/slimecritfriendly name = "Slime Crit Friendly" id = "m_tele5" required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/gold required_other = 1 -/datum/chemical_reaction/slimecritfriendly/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimecritfriendly/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/turf/T = get_turf(holder.my_atom) T.visible_message("The slime extract begins to vibrate adorably !") addtimer(src, "chemical_mob_spawn", 50, FALSE, holder, 1, "Friendly Gold Slime", "neutral") + spawn(60) + ..() //Silver -/datum/chemical_reaction/slimebork +/datum/chemical_reaction/slime/slimebork name = "Slime Bork" id = "m_tele2" required_reagents = list("plasma" = 1) @@ -177,16 +198,17 @@ if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) step(B, pick(NORTH,SOUTH,EAST,WEST)) + ..() -/datum/chemical_reaction/slimebork2 +/datum/chemical_reaction/slime/slimebork2 name = "Slime Bork 2" id = "m_tele4" required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/silver required_other = 1 -/datum/chemical_reaction/slimebork2/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimebork2/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/list/borks = subtypesof(/obj/item/weapon/reagent_containers/food/drinks) @@ -205,10 +227,11 @@ if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) step(B, pick(NORTH,SOUTH,EAST,WEST)) + ..() //Blue -/datum/chemical_reaction/slimefrost +/datum/chemical_reaction/slime/slimefrost name = "Slime Frost Oil" id = "m_frostoil" results = list("frostoil" = 10) @@ -216,24 +239,26 @@ required_container = /obj/item/slime_extract/blue required_other = 1 -/datum/chemical_reaction/slimefrost/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimefrost/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") + ..() -/datum/chemical_reaction/slimestabilizer +/datum/chemical_reaction/slime/slimestabilizer name = "Slime Stabilizer" id = "m_slimestabilizer" required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/blue required_other = 1 -/datum/chemical_reaction/slimestabilizer/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimestabilizer/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/slimepotion/stabilizer/P = new /obj/item/slimepotion/stabilizer P.loc = get_turf(holder.my_atom) + ..() -/datum/chemical_reaction/slimefoam +/datum/chemical_reaction/slime/slimefoam name = "Slime Foam" id = "m_foam" results = list("fluorosurfactant" = 20, "water" = 20) @@ -241,44 +266,50 @@ required_container = /obj/item/slime_extract/blue required_other = 1 -/datum/chemical_reaction/slimefoam/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimefoam/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") + ..() //Dark Blue -/datum/chemical_reaction/slimefreeze +/datum/chemical_reaction/slime/slimefreeze name = "Slime Freeze" id = "m_freeze" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/darkblue required_other = 1 -/datum/chemical_reaction/slimefreeze/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimefreeze/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/turf/T = get_turf(holder.my_atom) T.visible_message("The slime extract begins to vibrate adorably!") addtimer(src, "freeze", 50, FALSE, holder) -/datum/chemical_reaction/slimefreeze/proc/freeze(datum/reagents/holder) + spawn(60) + ..() + +/datum/chemical_reaction/slime/slimefreeze/proc/freeze(datum/reagents/holder) if(holder && holder.my_atom) var/turf/open/T = get_turf(holder.my_atom) if(istype(T)) T.atmos_spawn_air("freon=50;TEMP=120") -/datum/chemical_reaction/slimefireproof + +/datum/chemical_reaction/slime/slimefireproof name = "Slime Fireproof" id = "m_fireproof" required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/darkblue required_other = 1 -/datum/chemical_reaction/slimefireproof/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimefireproof/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/slimepotion/fireproof/P = new /obj/item/slimepotion/fireproof P.loc = get_turf(holder.my_atom) + ..() //Orange -/datum/chemical_reaction/slimecasp +/datum/chemical_reaction/slime/slimecasp name = "Slime Capsaicin Oil" id = "m_capsaicinoil" results = list("capsaicin" = 10) @@ -286,31 +317,33 @@ required_container = /obj/item/slime_extract/orange required_other = 1 -/datum/chemical_reaction/slimecasp/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimecasp/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") + ..() -/datum/chemical_reaction/slimefire +/datum/chemical_reaction/slime/slimefire name = "Slime fire" id = "m_fire" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/orange required_other = 1 -/datum/chemical_reaction/slimefire/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimefire/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/turf/TU = get_turf(holder.my_atom) TU.visible_message("The slime extract begins to vibrate adorably!") addtimer(src, "slime_burn", 50, FALSE, holder) + spawn(60) + ..() - -/datum/chemical_reaction/slimefire/proc/slime_burn(datum/reagents/holder) +/datum/chemical_reaction/slime/slimefire/proc/slime_burn(datum/reagents/holder) if(holder && holder.my_atom) var/turf/open/T = get_turf(holder.my_atom) if(istype(T)) T.atmos_spawn_air("plasma=50;TEMP=1000") -/datum/chemical_reaction/slimesmoke +/datum/chemical_reaction/slime/slimesmoke name = "Slime Smoke" id = "m_smoke" results = list("phosphorus" = 10, "potassium" = 10, "sugar" = 10) @@ -318,64 +351,69 @@ required_container = /obj/item/slime_extract/orange required_other = 1 -/datum/chemical_reaction/slimesmoke/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimesmoke/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") + ..() //Yellow -/datum/chemical_reaction/slimeoverload +/datum/chemical_reaction/slime/slimeoverload name = "Slime EMP" id = "m_emp" required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/yellow required_other = 1 -/datum/chemical_reaction/slimeoverload/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/slime/slimeoverload/on_reaction(datum/reagents/holder, created_volume) feedback_add_details("slime_cores_used","[type]") empulse(get_turf(holder.my_atom), 3, 7) + ..() -/datum/chemical_reaction/slimecell +/datum/chemical_reaction/slime/slimecell name = "Slime Powercell" id = "m_cell" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/yellow required_other = 1 -/datum/chemical_reaction/slimecell/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/slime/slimecell/on_reaction(datum/reagents/holder, created_volume) feedback_add_details("slime_cores_used","[type]") var/obj/item/weapon/stock_parts/cell/high/slime/P = new /obj/item/weapon/stock_parts/cell/high/slime P.loc = get_turf(holder.my_atom) + ..() -/datum/chemical_reaction/slimeglow +/datum/chemical_reaction/slime/slimeglow name = "Slime Glow" id = "m_glow" required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/yellow required_other = 1 -/datum/chemical_reaction/slimeglow/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimeglow/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/turf/T = get_turf(holder.my_atom) T.visible_message("The slime begins to emit a soft light. Squeezing it will cause it to grow brightly.") var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime F.loc = get_turf(holder.my_atom) + ..() //Purple -/datum/chemical_reaction/slimepsteroid +/datum/chemical_reaction/slime/slimepsteroid name = "Slime Steroid" id = "m_steroid" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/purple required_other = 1 -/datum/chemical_reaction/slimepsteroid/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimepsteroid/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/slimepotion/steroid/P = new /obj/item/slimepotion/steroid P.loc = get_turf(holder.my_atom) + ..() -/datum/chemical_reaction/slimejam +/datum/chemical_reaction/slime/slimejam name = "Slime Jam" id = "m_jam" results = list("slimejelly" = 10) @@ -383,91 +421,98 @@ required_container = /obj/item/slime_extract/purple required_other = 1 -/datum/chemical_reaction/slimejam/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimejam/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") + ..() //Dark Purple -/datum/chemical_reaction/slimeplasma +/datum/chemical_reaction/slime/slimeplasma name = "Slime Plasma" id = "m_plasma" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/darkpurple required_other = 1 -/datum/chemical_reaction/slimeplasma/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimeplasma/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/turf/location = get_turf(holder.my_atom) new /obj/item/stack/sheet/mineral/plasma (location, 3) + ..() //Red -/datum/chemical_reaction/slimemutator +/datum/chemical_reaction/slime/slimemutator name = "Slime Mutator" id = "m_slimemutator" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/red required_other = 1 -/datum/chemical_reaction/slimemutator/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimemutator/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/slimepotion/mutator/P = new /obj/item/slimepotion/mutator P.loc = get_turf(holder.my_atom) + ..() -/datum/chemical_reaction/slimebloodlust +/datum/chemical_reaction/slime/slimebloodlust name = "Bloodlust" id = "m_bloodlust" required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/red required_other = 1 -/datum/chemical_reaction/slimebloodlust/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimebloodlust/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") for(var/mob/living/simple_animal/slime/slime in viewers(get_turf(holder.my_atom), null)) slime.rabid = 1 slime.visible_message("The [slime] is driven into a frenzy!") + ..() -/datum/chemical_reaction/slimespeed +/datum/chemical_reaction/slime/slimespeed name = "Slime Speed" id = "m_speed" required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/red required_other = 1 -/datum/chemical_reaction/slimespeed/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimespeed/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/slimepotion/speed/P = new /obj/item/slimepotion/speed P.loc = get_turf(holder.my_atom) + ..() //Pink -/datum/chemical_reaction/docility +/datum/chemical_reaction/slime/docility name = "Docility Potion" id = "m_potion" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/pink required_other = 1 -/datum/chemical_reaction/docility/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/docility/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/slimepotion/docility/P = new /obj/item/slimepotion/docility P.loc = get_turf(holder.my_atom) + ..() -/datum/chemical_reaction/gender +/datum/chemical_reaction/slime/gender name = "Gender Potion" id = "m_gender" required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/pink required_other = 1 -/datum/chemical_reaction/gender/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/gender/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/slimepotion/genderchange/G = new /obj/item/slimepotion/genderchange G.loc = get_turf(holder.my_atom) + ..() //Black -/datum/chemical_reaction/slimemutate2 +/datum/chemical_reaction/slime/slimemutate2 name = "Advanced Mutation Toxin" id = "mutationtoxin2" results = list("amutationtoxin" = 1) @@ -475,18 +520,19 @@ required_other = 1 required_container = /obj/item/slime_extract/black -/datum/chemical_reaction/slimemutate2/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimemutate2/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") + ..() //Oil -/datum/chemical_reaction/slimeexplosion +/datum/chemical_reaction/slime/slimeexplosion name = "Slime Explosion" id = "m_explosion" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/oil required_other = 1 -/datum/chemical_reaction/slimeexplosion/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimeexplosion/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/turf/T = get_turf(holder.my_atom) var/lastkey = holder.my_atom.fingerprintslast @@ -498,13 +544,15 @@ log_game("Slime Explosion reaction started at [T.loc.name] ([T.x],[T.y],[T.z]). Last Fingerprint: [lastkey ? lastkey : "N/A"].") T.visible_message("The slime extract begins to vibrate violently !") addtimer(src, "boom", 50, FALSE, holder) + spawn(60) + ..() -/datum/chemical_reaction/slimeexplosion/proc/boom(datum/reagents/holder) +/datum/chemical_reaction/slime/slimeexplosion/proc/boom(datum/reagents/holder) if(holder && holder.my_atom) explosion(get_turf(holder.my_atom), 1 ,3, 6) -/datum/chemical_reaction/slimecornoil +/datum/chemical_reaction/slime/slimecornoil name = "Slime Corn Oil" id = "m_cornoil" results = list("cornoil" = 10) @@ -512,194 +560,208 @@ required_container = /obj/item/slime_extract/oil required_other = 1 -/datum/chemical_reaction/slimecornoil/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimecornoil/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") + ..() //Light Pink -/datum/chemical_reaction/slimepotion2 +/datum/chemical_reaction/slime/slimepotion2 name = "Slime Potion 2" id = "m_potion2" required_container = /obj/item/slime_extract/lightpink required_reagents = list("plasma" = 1) required_other = 1 -/datum/chemical_reaction/slimepotion2/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimepotion2/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/slimepotion/sentience/P = new /obj/item/slimepotion/sentience P.loc = get_turf(holder.my_atom) + ..() //Adamantine -/datum/chemical_reaction/slimegolem +/datum/chemical_reaction/slime/slimegolem name = "Slime Golem" id = "m_golem" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/adamantine required_other = 1 -/datum/chemical_reaction/slimegolem/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimegolem/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/effect/golemrune/Z = new /obj/effect/golemrune Z.loc = get_turf(holder.my_atom) notify_ghosts("Golem rune created in [get_area(Z)].", 'sound/effects/ghost2.ogg', source = Z) + ..() //Bluespace -/datum/chemical_reaction/slimefloor2 +/datum/chemical_reaction/slime/slimefloor2 name = "Bluespace Floor" id = "m_floor2" required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/bluespace required_other = 1 -/datum/chemical_reaction/slimefloor2/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/slime/slimefloor2/on_reaction(datum/reagents/holder, created_volume) feedback_add_details("slime_cores_used","[type]") var/obj/item/stack/tile/bluespace/P = new /obj/item/stack/tile/bluespace P.amount = 25 P.loc = get_turf(holder.my_atom) + ..() -/datum/chemical_reaction/slimecrystal +/datum/chemical_reaction/slime/slimecrystal name = "Slime Crystal" id = "m_crystal" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/bluespace required_other = 1 -/datum/chemical_reaction/slimecrystal/on_reaction(datum/reagents/holder, created_volume) +/datum/chemical_reaction/slime/slimecrystal/on_reaction(datum/reagents/holder, created_volume) feedback_add_details("slime_cores_used","[type]") if(holder.my_atom) var/obj/item/weapon/ore/bluespace_crystal/BC = new(get_turf(holder.my_atom)) BC.visible_message("The [BC.name] appears out of thin air!") + ..() //Cerulean -/datum/chemical_reaction/slimepsteroid2 +/datum/chemical_reaction/slime/slimepsteroid2 name = "Slime Steroid 2" id = "m_steroid2" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/cerulean required_other = 1 -/datum/chemical_reaction/slimepsteroid2/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimepsteroid2/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/slimepotion/enhancer/P = new /obj/item/slimepotion/enhancer P.loc = get_turf(holder.my_atom) + ..() -/datum/chemical_reaction/slime_territory +/datum/chemical_reaction/slime/slime_territory name = "Slime Territory" id = "s_territory" required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/cerulean required_other = 1 -/datum/chemical_reaction/slime_territory/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slime_territory/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/areaeditor/blueprints/slime/P = new /obj/item/areaeditor/blueprints/slime P.loc = get_turf(holder.my_atom) + ..() //Sepia -/datum/chemical_reaction/slimestop +/datum/chemical_reaction/slime/slimestop name = "Slime Stop" id = "m_stop" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/sepia required_other = 1 -/datum/chemical_reaction/slimestop/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimestop/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/mob/mob = get_mob_by_key(holder.my_atom.fingerprintslast) var/obj/effect/timestop/T = new /obj/effect/timestop T.loc = get_turf(holder.my_atom) T.immune += mob T.timestop() + ..() -/datum/chemical_reaction/slimecamera +/datum/chemical_reaction/slime/slimecamera name = "Slime Camera" id = "m_camera" required_reagents = list("water" = 1) required_container = /obj/item/slime_extract/sepia required_other = 1 -/datum/chemical_reaction/slimecamera/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimecamera/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/device/camera/P = new /obj/item/device/camera P.loc = get_turf(holder.my_atom) var/obj/item/device/camera_film/Z = new /obj/item/device/camera_film Z.loc = get_turf(holder.my_atom) + ..() -/datum/chemical_reaction/slimefloor +/datum/chemical_reaction/slime/slimefloor name = "Sepia Floor" id = "m_floor" required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/sepia required_other = 1 -/datum/chemical_reaction/slimefloor/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimefloor/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/stack/tile/sepia/P = new /obj/item/stack/tile/sepia P.amount = 25 P.loc = get_turf(holder.my_atom) + ..() //Pyrite -/datum/chemical_reaction/slimepaint +/datum/chemical_reaction/slime/slimepaint name = "Slime Paint" id = "s_paint" required_reagents = list("plasma" = 1) required_container = /obj/item/slime_extract/pyrite required_other = 1 -/datum/chemical_reaction/slimepaint/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimepaint/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/list/paints = subtypesof(/obj/item/weapon/paint) var/chosen = pick(paints) var/obj/P = new chosen if(P) P.loc = get_turf(holder.my_atom) + ..() -/datum/chemical_reaction/slimecrayon +/datum/chemical_reaction/slime/slimecrayon name = "Slime Crayon" id = "s_crayon" required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/pyrite required_other = 1 -/datum/chemical_reaction/slimecrayon/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimecrayon/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/list/crayons = difflist(subtypesof(/obj/item/toy/crayon),typesof(/obj/item/toy/crayon/spraycan)) var/chosen = pick(crayons) var/obj/P = new chosen if(P) P.loc = get_turf(holder.my_atom) + ..() //Rainbow :o) -/datum/chemical_reaction/slimeRNG +/datum/chemical_reaction/slime/slimeRNG name = "Random Core" id = "slimerng" required_reagents = list("plasma" = 1) required_other = 1 required_container = /obj/item/slime_extract/rainbow -/datum/chemical_reaction/slimeRNG/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slimeRNG/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/mob/living/simple_animal/slime/random/S S = new(get_turf(holder.my_atom)) S.visible_message("Infused with plasma, the \ core begins to quiver and grow, and soon a new baby slime emerges \ from it!") + ..() -/datum/chemical_reaction/slime_transfer +/datum/chemical_reaction/slime/slime_transfer name = "Transfer Potion" id = "slimetransfer" required_reagents = list("blood" = 1) required_other = 1 required_container = /obj/item/slime_extract/rainbow -/datum/chemical_reaction/slime_transfer/on_reaction(datum/reagents/holder) +/datum/chemical_reaction/slime/slime_transfer/on_reaction(datum/reagents/holder) feedback_add_details("slime_cores_used","[type]") var/obj/item/slimepotion/transference/P = new /obj/item/slimepotion/transference P.loc = get_turf(holder.my_atom) + ..()