diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm
index ec6a01cf0d3..f9a1bbe874e 100644
--- a/code/game/objects/structures/transit_tubes.dm
+++ b/code/game/objects/structures/transit_tubes.dm
@@ -128,7 +128,33 @@ obj/structure/ex_act(severity)
open_animation()
else if(icon_state == "open")
- close_animation()
+ if(pod.contents.len && user.loc != pod && intent_numeric(user.a_intent) > 1)
+ user.visible_message("[user] starts emptying [pod]'s contents onto the floor!")
+ if(do_after(user, 40)) //So it doesn't default to close_animation() on fail
+ if(pod.loc == loc)
+ for(var/atom/movable/AM in pod)
+ AM.loc = get_turf(user)
+ if(ismob(AM))
+ var/mob/M = AM
+ M.Weaken(5)
+
+ else
+ close_animation()
+ break
+
+
+/obj/structure/transit_tube/station/attackby(obj/item/W, mob/user)
+ if(istype(W, /obj/item/weapon/grab) && icon_state == "open")
+ var/obj/item/weapon/grab/G = W
+ if(ismob(G.affecting) && G.state >= GRAB_AGGRESSIVE)
+ var/mob/GM = G.affecting
+ for(var/obj/structure/transit_tube_pod/pod in loc)
+ pod.visible_message("[user] starts putting [GM] into the [pod]!")
+ if(do_after(user, 60))
+ GM.Weaken(5)
+ src.Bumped(GM)
+ del(G)
+ break
@@ -153,7 +179,7 @@ obj/structure/ex_act(severity)
/obj/structure/transit_tube/station/proc/launch_pod()
for(var/obj/structure/transit_tube_pod/pod in loc)
if(!pod.moving && pod.dir in directions())
- spawn(5)
+ spawn(35) //To prevent saxing in the pod, should probably change these to sleep if it doesn't break the tubes
pod_moving = 1
close_animation()
sleep(CLOSE_DURATION + 2)
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 92f1ed1da9e..eda2722ae36 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -334,9 +334,9 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
/proc/shake_camera(mob/M, duration, strength=1)
- if(!M || !M.client || M.shakecamera)
- return
- spawn(1)
+ spawn(0)
+ if(!M || !M.client || M.shakecamera)
+ return
var/oldeye=M.client.eye
var/x
M.shakecamera = 1