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) + ..()