diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index 69b77a0f731..f9f6e60e86d 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -251,8 +251,11 @@
return
I.forceMove(src)
if(beaker)
- user.put_in_hands(beaker)
- to_chat(user, "You swap [I] with [beaker].")
+ to_chat(usr, "You swap [I] with [beaker].")
+ if(Adjacent(usr) && !issilicon(usr)) //Prevents telekinesis from putting in hand
+ user.put_in_hands(beaker)
+ else
+ beaker.forceMove(loc)
else
to_chat(user, "You set [I] on the machine.")
beaker = I
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index c0d15d5492f..c90faeb4e0e 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -125,8 +125,11 @@
return
I.forceMove(src)
if(beaker)
- user.put_in_hands(beaker)
- to_chat(user, "You swap [I] with [beaker] inside.")
+ to_chat(usr, "You swap [I] with [beaker] inside.")
+ if(Adjacent(usr) && !issilicon(usr)) //Prevents telekinesis from putting in hand
+ user.put_in_hands(beaker)
+ else
+ beaker.forceMove(loc)
else
to_chat(user, "You add [I] to the machine.")
beaker = I