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()