diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm
index e2b541d9c53..a2da3fb63d6 100644
--- a/code/modules/mob/living/simple_animal/slime/powers.dm
+++ b/code/modules/mob/living/simple_animal/slime/powers.dm
@@ -182,7 +182,9 @@
var/new_powerlevel = round(powerlevel / 4)
for(var/i=1,i<=4,i++)
var/mob/living/simple_animal/slime/M = new /mob/living/simple_animal/slime/(loc)
- if(prob(mutation_chance))
+ if(mutation_chance >= 100)
+ M.colour = "rainbow"
+ else if(prob(mutation_chance))
M.colour = slime_mutation[rand(1,4)]
else
M.colour = colour
diff --git a/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm b/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm
index 996604a0822..98f34ef9f73 100644
--- a/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm
+++ b/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm
@@ -11,10 +11,9 @@
/datum/chemical_reaction/slimespawn/on_reaction(var/datum/reagents/holder)
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
- for(var/mob/O in viewers(get_turf(holder.my_atom), null))
- O.show_message(text("Infused with plasma, the core begins to quiver and grow, and soon a new baby slime emerges from it!"), 1)
var/mob/living/simple_animal/slime/S = new /mob/living/simple_animal/slime
S.loc = 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/slimeinaprov
name = "Slime epinephrine"
@@ -618,3 +617,20 @@
var/obj/P = new chosen
if(P)
P.loc = get_turf(holder.my_atom)
+
+//Rainbow :o)
+/datum/chemical_reaction/slimeRNG
+ name = "Random Core"
+ id = "slimerng"
+ result = null
+ required_reagents = list("plasma" = 1)
+ result_amount = 1
+ required_other = 1
+ required_container = /obj/item/slime_extract/rainbow
+
+/datum/chemical_reaction/slimeRNG/on_reaction(var/datum/reagents/holder)
+ feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
+ var/mob/living/simple_animal/slime/S = new /mob/living/simple_animal/slime
+ S.colour = pick("grey","orange", "metal", "blue", "purple", "dark purple", "dark blue", "green", "silver", "yellow", "gold", "yellow", "red", "silver", "pink", "cerulean", "sepia", "bluespace", "pyrite", "light pink", "oil", "adamantine", "black")
+ S.loc = 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!")
diff --git a/html/changelogs/incoming5643-rainbowslime.yml b/html/changelogs/incoming5643-rainbowslime.yml
new file mode 100644
index 00000000000..da966da01d7
--- /dev/null
+++ b/html/changelogs/incoming5643-rainbowslime.yml
@@ -0,0 +1,9 @@
+author: Incoming5643
+
+
+delete-after: True
+
+
+changes:
+ - rscadd: "The secrets of the rainbow slimes have finally been revealed. To attain this rare blob you must breed a slime with a 100% mutation chance!"
+ - rscadd: "Rainbow slime cores will generate a randomly colored slime when injected with plasma. It's a good plan B if the slimes aren't cooperating in terms of colors. You can get any color slime this way, pray to the RNG!"