diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm
index 904803ff26c..9dc3ab4cfd4 100644
--- a/code/modules/mob/living/simple_animal/slime/life.dm
+++ b/code/modules/mob/living/simple_animal/slime/life.dm
@@ -147,7 +147,7 @@
temp_change = (temperature - current)
return temp_change
-/mob/living/simple_animal/slime/handle_chemicals_in_body()
+/*/mob/living/simple_animal/slime/handle_chemicals_in_body()
if(reagents)
reagents.metabolize(src)
@@ -159,7 +159,7 @@
mutation_chance = max(mutation_chance - 5,0) //Prevents muation chance going <0%
reagents.remove_reagent("epinephrine", 5)
updatehealth()
-
+*/
/mob/living/simple_animal/slime/handle_regular_status_updates()
if(..())
diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm
index b6f4ed34b86..3b1df681f67 100644
--- a/code/modules/mob/living/simple_animal/slime/powers.dm
+++ b/code/modules/mob/living/simple_animal/slime/powers.dm
@@ -191,6 +191,7 @@
if(i != 1) step_away(M,src)
M.Friends = Friends.Copy()
babies += M
+ M.mutation_chance = mutation_chance+(rand(-5,5))
feedback_add_details("slime_babies_born","slimebirth_[replacetext(M.colour," ","_")]")
var/mob/living/simple_animal/slime/new_slime = pick(babies)
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index 7dd50a1008d..9ce6e40676e 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -40,7 +40,7 @@
status_flags = CANPARALYSE|CANPUSH
var/cores = 1 // the number of /obj/item/slime_extract's the slime has left inside
- var/mutation_chance = 30 // Chance of mutating, should be between 25 and 35
+ var/mutation_chance = 27 // Chance of mutating, should be between 25 and 35
var/powerlevel = 0 // 1-10 controls how much electricity they are generating
var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces
@@ -61,6 +61,7 @@
var/list/speech_buffer = list() // Last phrase said near it and person who said it
var/mood = "" // To show its face
+ var/mutator_used = 0 //So you can't shove a dozen mutators into a single slime
///////////TIME FOR SUBSPECIES
@@ -80,7 +81,6 @@
icon_dead = "[icon_state] dead"
real_name = name
slime_mutation = mutation_table(colour)
- mutation_chance = rand(25, 35)
var/sanitizedcolour = replacetext(colour, " ", "")
coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]")
..()
diff --git a/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm b/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm
index cf323dd09e8..be029b2220a 100644
--- a/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm
+++ b/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm
@@ -218,6 +218,23 @@
/datum/chemical_reaction/slimefrost/on_reaction(var/datum/reagents/holder)
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
+
+/datum/chemical_reaction/slimestabilizer
+ name = "Slime Stabilizer"
+ id = "m_slimestabilizer"
+ result = null
+ required_reagents = list("blood" = 1)
+ result_amount = 1
+ required_container = /obj/item/slime_extract/blue
+ required_other = 1
+
+/datum/chemical_reaction/slimestabilizer/on_reaction(var/datum/reagents/holder)
+ feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
+ var/obj/item/weapon/slimestabilizer/P = new /obj/item/weapon/slimestabilizer
+ P.loc = get_turf(holder.my_atom)
+
+
+
//Dark Blue
/datum/chemical_reaction/slimefreeze
name = "Slime Freeze"
@@ -363,7 +380,7 @@
P.loc = get_turf(holder.my_atom)
//Red
-/datum/chemical_reaction/slimeglycerol
+/*/datum/chemical_reaction/slimeglycerol
name = "Slime Glycerol"
id = "m_glycerol"
result = "glycerol"
@@ -374,7 +391,21 @@
/datum/chemical_reaction/slimeglycerol/on_reaction(var/datum/reagents/holder)
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
+*/
+/datum/chemical_reaction/slimemutator
+ name = "Slime Mutator"
+ id = "m_slimemutator"
+ result = null
+ required_reagents = list("plasma" = 1)
+ result_amount = 1
+ required_container = /obj/item/slime_extract/red
+ required_other = 1
+
+/datum/chemical_reaction/slimemutator/on_reaction(var/datum/reagents/holder)
+ feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
+ var/obj/item/weapon/slimemutator/P = new /obj/item/weapon/slimemutator
+ P.loc = get_turf(holder.my_atom)
/datum/chemical_reaction/slimebloodlust
name = "Bloodlust"
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index f054bbb6867..7447861c0c8 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -236,6 +236,13 @@
M.cores = 3
qdel(src)
+
+/obj/item/weapon/slimesteroid3
+ name = "slime steroid"
+ desc = "A potent chemical mix that will cause a slime to generate more extract."
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "bottle16"
+
/obj/item/weapon/slimesteroid2
name = "extract enhancer"
desc = "A potent chemical mix that will give a slime extract three uses."
@@ -256,6 +263,58 @@
qdel(src)*/
+/obj/item/weapon/slimestabilizer
+ name = "slime stabilizer"
+ desc = "A potent chemical mix that will reduce the chance of a slime mutating."
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "bottle15"
+
+/obj/item/weapon/slimestabilizer/attack(mob/living/simple_animal/slime/M as mob, mob/user as mob)
+ if(!isslime(M))
+ user << " The stabilizer only works on baby slimes!"
+ return ..()
+ if(M.stat)
+ user << " The slime is dead!"
+ return..()
+ if(M.mutation_chance == 0)
+ user <<" The slime already has no chance of mutating!"
+ return..()
+
+ user <<"You feed the slime the stabilizer. It is now less likely to mutate."
+ M.mutation_chance -= 15
+ if(M.mutation_chance < 0)
+ M.mutation_chance = 0
+ qdel(src)
+
+/obj/item/weapon/slimemutator
+ name = "slime mutator"
+ desc = "A potent chemical mix that will increase the chance of a slime mutating."
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "bottle3"
+
+/obj/item/weapon/slimemutator/attack(mob/living/simple_animal/slime/M as mob, mob/user as mob)
+ if(!isslime(M))
+ user << " The mutator only works on baby slimes!"
+ return ..()
+ if(M.stat)
+ user << " The slime is dead!"
+ return..()
+ if(M.mutator_used == 1)
+ user << " This slime has already consumed a mutator, any more would be far too unstable!"
+ return..()
+ if(M.mutation_chance == 100)
+ user <<" The slime is already guaranteed to mutate!"
+ return..()
+
+ user <<"You feed the slime the mutator. It is now more likely to mutate."
+ M.mutation_chance += 5
+ if(M.mutation_chance < 0)
+ M.mutation_chance = 0
+ M.mutator_used = 1
+ qdel(src)
+
+
+
////////Adamantine Golem stuff I dunno where else to put it
// This will eventually be removed.