diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm
index b1bec0bb7d..c489f6c9c9 100644
--- a/code/game/machinery/bloodbankgen.dm
+++ b/code/game/machinery/bloodbankgen.dm
@@ -208,20 +208,20 @@
if(!panel_open)
if(bag && outbag)
to_chat(user, "This machine already has bags attached.")
+
+ if(!bag && !outbag)
+ var/choice = alert(user, "Choose where to place [O]", "", "Input", "Cancel", "Output")
+ switch(choice)
+ if("Cancel")
+ return FALSE
+ if("Input")
+ attachinput(O, user)
+ if("Output")
+ attachoutput(O, user)
else if(!bag)
- if(!user.transferItemToLoc(O, src))
- return
- bag = O
- to_chat(user, "You add the container to the machine's input slot.")
- update_icon()
- updateUsrDialog()
+ attachinput(O, user)
else if(!outbag)
- if(!user.transferItemToLoc(O, src))
- return
- outbag = O
- to_chat(user, "You add the container to the machine's output slot.")
- update_icon()
- updateUsrDialog()
+ attachoutput(O, user)
else
to_chat(user, "Close the maintenance panel first.")
return
@@ -303,15 +303,41 @@
/obj/machinery/bloodbankgen/proc/detachinput()
if(bag)
bag.forceMove(drop_location())
+ if(usr && Adjacent(usr) && !issiliconoradminghost(usr))
+ usr.put_in_hands(bag)
bag = null
update_icon()
/obj/machinery/bloodbankgen/proc/detachoutput()
if(outbag)
outbag.forceMove(drop_location())
+ if(usr && Adjacent(usr) && !issiliconoradminghost(usr))
+ usr.put_in_hands(outbag)
outbag = null
update_icon()
+/obj/machinery/bloodbankgen/proc/attachinput(obj/item/O, mob/user)
+ if(!bag)
+ if(!user.transferItemToLoc(O, src))
+ return
+ bag = O
+ to_chat(user, "You add [O] to the machine's input slot.")
+ update_icon()
+ updateUsrDialog()
+ else
+ to_chat(user, "There is already something in this slot!")
+
+/obj/machinery/bloodbankgen/proc/attachoutput(obj/item/O, mob/user)
+ if(!outbag)
+ if(!user.transferItemToLoc(O, src))
+ return
+ outbag = O
+ to_chat(user, "You add [O] to the machine's output slot.")
+ update_icon()
+ updateUsrDialog()
+ else
+ to_chat(user, "There is already something in this slot!")
+
/obj/machinery/bloodbankgen/Topic(href, href_list)
if(..() || panel_open)
return