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