diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index 36e102be72..d92f969b0a 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -139,9 +139,12 @@
/obj/machinery/computer/pandemic/proc/eject_beaker()
if(beaker)
+ var/obj/item/reagent_containers/B = beaker
beaker.forceMove(drop_location())
beaker = null
update_icon()
+ return B
+ return null
/obj/machinery/computer/pandemic/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
@@ -237,14 +240,17 @@
. = TRUE //no afterattack
if(stat & (NOPOWER|BROKEN))
return
+ var/obj/item/reagent_containers/B
if(beaker)
- to_chat(user, "A container is already loaded into [src]!")
- return
+ B = eject_beaker() //now with 100% more swapping
if(!user.transferItemToLoc(I, src))
return
-
+ if(B)
+ if(user && Adjacent(user) && user.can_hold_items())
+ user.put_in_hands(B)
beaker = I
- to_chat(user, "You insert [I] into [src].")
+ if(B) to_chat(user, "You remove [B] and insert [I] into [src].")
+ else to_chat(user, "You insert [I] into [src].")
update_icon()
else
return ..()