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