diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm
index 904803ff26c..88b876e102e 100644
--- a/code/modules/mob/living/simple_animal/slime/life.dm
+++ b/code/modules/mob/living/simple_animal/slime/life.dm
@@ -147,19 +147,6 @@
temp_change = (temperature - current)
return temp_change
-/mob/living/simple_animal/slime/handle_chemicals_in_body()
-
- if(reagents)
- reagents.metabolize(src)
-
- if (reagents.get_reagent_amount("plasma")>=5)
- mutation_chance = min(mutation_chance + 5,50) //Prevents mutation chance going >50%
- reagents.remove_reagent("plasma", 5)
- if (reagents.get_reagent_amount("epinephrine")>=5)
- 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..e2b541d9c53 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 = Clamp(mutation_chance+(rand(5,-5)),0,100)
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 b71b86e23ac..e3a8d4fcdef 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -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 = FALSE //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..f6693492790 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,54 @@
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 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 = Clamp(M.mutation_chance-15,0,100)
+ 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 slimes!"
+ return ..()
+ if(M.stat)
+ user << " The slime is dead!"
+ return..()
+ if(M.mutator_used)
+ 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 = Clamp(M.mutation_chance+12,0,100)
+ M.mutator_used = TRUE
+ qdel(src)
+
+
+
////////Adamantine Golem stuff I dunno where else to put it
// This will eventually be removed.
@@ -362,4 +417,4 @@
G.loc = src.loc
G.key = ghost.key
G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost."
- qdel(src)
\ No newline at end of file
+ qdel(src)