diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index 26309f885fa..d2cd53c5960 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -486,5 +486,5 @@
storage_slots = 25
max_combined_w_class = 200
w_class = WEIGHT_CLASS_TINY
- can_hold = list(/obj/item/slime_extract,/obj/item/reagent_containers/food/snacks/monkeycube,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/blood,/obj/item/reagent_containers/hypospray/autoinjector)
+ can_hold = list(/obj/item/slime_extract,/obj/item/reagent_containers/food/snacks/monkeycube,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/blood,/obj/item/reagent_containers/hypospray/autoinjector,/obj/item/slimepotion/mutator)
burn_state = FLAMMABLE
diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm
index 29a3cd26600..1ebd7f14c61 100644
--- a/code/modules/research/xenobiology/xenobio_camera.dm
+++ b/code/modules/research/xenobiology/xenobio_camera.dm
@@ -26,10 +26,12 @@
var/datum/action/innate/slime_pick_up/slime_up_action = new
var/datum/action/innate/feed_slime/feed_slime_action = new
var/datum/action/innate/monkey_recycle/monkey_recycle_action = new
+ var/datum/action/innate/mutate_slime/mutate_slime_action = new
var/list/stored_slimes = list()
var/max_slimes = 5
var/monkeys = 0
+ var/mutators = 0
icon_screen = "slime_comp"
icon_keyboard = "rd_key"
@@ -62,6 +64,11 @@
monkey_recycle_action.target = src
monkey_recycle_action.Grant(user)
actions += monkey_recycle_action
+
+ if(mutate_slime_action)
+ mutate_slime_action.target = src
+ mutate_slime_action.Grant(user)
+ actions += mutate_slime_action
/obj/machinery/computer/camera_advanced/xenobio/attack_hand(mob/user)
@@ -76,6 +83,12 @@
user.drop_item()
qdel(O)
return
+ else if (istype(O, /obj/item/slimepotion/mutator))
+ mutators++
+ to_chat(user, "You feed [O] to [src]. It now has [mutators] slime mutation potions stored.")
+ user.drop_item()
+ qdel(O)
+ return
else if(istype(O, /obj/item/storage/bag))
var/obj/item/storage/P = O
var/loaded = 0
@@ -86,6 +99,15 @@
qdel(MC)
if(loaded)
to_chat(user, "You fill [src] with the monkey cubes stored in [O]. [src] now has [monkeys] monkey cubes stored.")
+ loaded = 0
+
+ for(var/obj/item/slimepotion/mutator/M in P.contents)
+ loaded = 1
+ mutators++
+ P.remove_from_storage(M)
+ qdel(M)
+ if(loaded)
+ to_chat(user, "You fill [src] with the slime mutation potions stored in [O]. [src] now has [mutators] slime mutation potions stored.")
return
..()
@@ -170,5 +192,30 @@
M.visible_message("[M] vanishes as [M.p_theyre()] reclaimed for recycling!")
X.monkeys = round(X.monkeys + 0.2,0.1)
qdel(M)
+ else
+ to_chat(owner, "Target is not near a camera. Cannot proceed.")
+
+/datum/action/innate/mutate_slime
+ name = "Mutate Slimes"
+ button_icon_state = "mutate_slimes"
+
+/datum/action/innate/mutate_slime/Activate()
+ if(!target || !ishuman(owner))
+ return
+ var/mob/living/carbon/human/C = owner
+ var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
+ var/obj/machinery/computer/camera_advanced/xenobio/X = target
+
+ if(cameranet.checkTurfVis(remote_eye.loc))
+ for(var/mob/living/carbon/slime/S in remote_eye.loc)
+ if(X.mutators)
+ var/obj/item/slimepotion/mutator/M = new /obj/item/slimepotion/mutator
+ if(!M.attack(S, owner))
+ X.mutators--
+ to_chat(owner, "[X] now has [X.mutators] slime mutation potions left.")
+ else
+ qdel(M)
+ else
+ //to_chat(ownder, "The console contains 0 slime mutators!") Leaving this out because the monkey feeder thing doesn't have one of these if you don't have any monkeys left.
else
to_chat(owner, "Target is not near a camera. Cannot proceed.")
\ No newline at end of file
diff --git a/icons/mob/actions/actions.dmi b/icons/mob/actions/actions.dmi
index 08e645c5c9b..999e80761e5 100644
Binary files a/icons/mob/actions/actions.dmi and b/icons/mob/actions/actions.dmi differ