From 334e4d5eaa1f947d150b951e8ccd5ccf6cbe9e1a Mon Sep 17 00:00:00 2001 From: cacogen <25089914+cacogen@users.noreply.github.com> Date: Wed, 21 Aug 2019 20:43:31 +1200 Subject: [PATCH] Can swap out seeds and disks in the plant DNA manipulator with a click (#45975) Either click the machine itself or the UI fields when it already has seeds or a disk in it --- code/modules/hydroponics/gene_modder.dm | 57 ++++++++++++++----------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index 7853ff3acc9..e3ae896782c 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -75,22 +75,22 @@ return if(istype(I, /obj/item/seeds)) - if(seed) - to_chat(user, "A sample is already loaded into the machine!") - else - if(!user.temporarilyRemoveItemFromInventory(I)) - return - insert_seed(I) - to_chat(user, "You add [I] to the machine.") - interact(user) - return + if (operation) + to_chat(user, "Please complete current operation.") + return + if(!user.transferItemToLoc(I, src)) + return + eject_seed() + insert_seed(I) + to_chat(user, "You add [I] to the machine.") + interact(user) else if(istype(I, /obj/item/disk/plantgene)) if (operation) to_chat(user, "Please complete current operation.") return - eject_disk() if(!user.transferItemToLoc(I, src)) return + eject_disk() disk = I to_chat(user, "You add [I] to the machine.") interact(user) @@ -254,28 +254,25 @@ usr.set_machine(src) if(href_list["eject_seed"] && !operation) - if (seed) - seed.forceMove(drop_location()) - seed.verb_pickup() - seed = null - update_genes() - update_icon() + var/obj/item/I = usr.get_active_held_item() + if(istype(I, /obj/item/seeds)) + if(!usr.transferItemToLoc(I, src)) + return + eject_seed() + insert_seed(I) + to_chat(usr, "You add [I] to the machine.") else - var/obj/item/I = usr.get_active_held_item() - if (istype(I, /obj/item/seeds)) - if(!usr.temporarilyRemoveItemFromInventory(I)) - return - insert_seed(I) - to_chat(usr, "You add [I] to the machine.") - update_icon() + eject_seed() else if(href_list["eject_disk"] && !operation) var/obj/item/I = usr.get_active_held_item() - eject_disk() if(istype(I, /obj/item/disk/plantgene)) if(!usr.transferItemToLoc(I, src)) return + eject_disk() disk = I to_chat(usr, "You add [I] to the machine.") + else + eject_disk() else if(href_list["op"] == "insert" && disk && disk.gene && seed) if(!operation) // Wait for confirmation operation = "insert" @@ -365,7 +362,7 @@ /obj/machinery/plantgenes/proc/eject_disk() if (disk && !operation) - if(Adjacent(usr) && !issilicon(usr)) + if(Adjacent(usr) && !issiliconoradminghost(usr)) if (!usr.put_in_hands(disk)) disk.forceMove(drop_location()) else @@ -373,6 +370,16 @@ disk = null update_genes() +/obj/machinery/plantgenes/proc/eject_seed() + if (seed && !operation) + if(Adjacent(usr) && !issiliconoradminghost(usr)) + if (!usr.put_in_hands(seed)) + seed.forceMove(drop_location()) + else + seed.forceMove(drop_location()) + seed = null + update_genes() + /obj/machinery/plantgenes/proc/update_genes() core_genes = list() reagent_genes = list()