diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index d2cd53c5960..26309f885fa 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,/obj/item/slimepotion/mutator)
+ 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)
burn_state = FLAMMABLE
diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm
index 1ebd7f14c61..d9fd5265e3e 100644
--- a/code/modules/research/xenobiology/xenobio_camera.dm
+++ b/code/modules/research/xenobiology/xenobio_camera.dm
@@ -26,12 +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/datum/action/innate/transfer_potion/transfer_potion_action = new
var/list/stored_slimes = list()
var/max_slimes = 5
var/monkeys = 0
- var/mutators = 0
+ var/obj/item/slimepotion/current_potion
icon_screen = "slime_comp"
icon_keyboard = "rd_key"
@@ -65,10 +65,10 @@
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
+ if(transfer_potion_action)
+ transfer_potion_action.target = src
+ transfer_potion_action.Grant(user)
+ actions += transfer_potion_action
/obj/machinery/computer/camera_advanced/xenobio/attack_hand(mob/user)
@@ -78,17 +78,20 @@
/obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube))
- monkeys++
- to_chat(user, "You feed [O] to [src]. It now has [monkeys] monkey cubes stored.")
- 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
+ if(user.drop_item())
+ monkeys++
+ to_chat(user, "You feed [O] to [src]. It now has [monkeys] monkey cubes stored.")
+ qdel(O)
+ return
+ else if (istype(O, /obj/item/slimepotion))
+ var/replaced = FALSE
+ if(user.drop_item())
+ if(!QDELETED(current_potion))
+ current_potion.forceMove(drop_location())
+ replaced = TRUE
+ current_potion = O
+ to_chat(user, "You load [O] in the console's potion slot[replaced ? ", replacing the one that was there before" : ""].")
+ return
else if(istype(O, /obj/item/storage/bag))
var/obj/item/storage/P = O
var/loaded = 0
@@ -99,15 +102,6 @@
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
..()
@@ -195,27 +189,26 @@
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/transfer_potion
+ name = "Transfer Potion"
+ button_icon_state = "transfer_potion"
-/datum/action/innate/mutate_slime/Activate()
+/datum/action/innate/transfer_potion/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(QDELETED(X.current_potion))
+ to_chat(owner, "No potion loaded.")
+ return
+
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.
+ if(!QDELETED(X.current_potion))
+ X.current_potion.attack(S, C)
+ break
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 999e80761e5..fdc89eb09a6 100644
Binary files a/icons/mob/actions/actions.dmi and b/icons/mob/actions/actions.dmi differ