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