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