diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index c0e195c669c..48b7229318a 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -284,6 +284,8 @@ Class Procs:
//set_machine must be 0 if clicking the machinery doesn't bring up a dialog
/obj/machinery/attack_hand(mob/user, check_power = 1, set_machine = 1)
+ if(..())// unbuckling etc
+ return 1
if(user.lying || user.stat)
return 1
if(!user.IsAdvancedToolUser())
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 13ad48e75aa..df95b3e5e93 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -11,12 +11,14 @@
/atom/movable/attack_hand(mob/living/user)
. = ..()
if(can_buckle && buckled_mob)
- user_unbuckle_mob(user)
+ if(user_unbuckle_mob(user))
+ return 1
/atom/movable/MouseDrop_T(mob/living/M, mob/living/user)
. = ..()
if(can_buckle && istype(M))
- user_buckle_mob(M, user)
+ if(user_buckle_mob(M, user))
+ return 1
//Cleanup
@@ -73,7 +75,7 @@
//Wrapper procs that handle sanity and user feedback
/atom/movable/proc/user_buckle_mob(mob/living/M, mob/user)
if(!in_range(user, src) || user.stat || user.restrained())
- return
+ return 0
add_fingerprint(user)
@@ -88,6 +90,8 @@
"[user] buckles [M] to [src]!",\
"[user] buckles you to [src]!",\
"You hear metal clanking.")
+ return 1
+
/atom/movable/proc/user_unbuckle_mob(mob/user)
var/mob/living/M = unbuckle_mob()
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 3ac8658347c..cffd468dc83 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -217,13 +217,13 @@
overlays += "cart_buffer"
/obj/structure/stool/bed/chair/janicart/attack_hand(mob/user)
- if(mybag)
+ if(..())
+ return 1
+ else if(mybag)
mybag.loc = get_turf(user)
user.put_in_hands(mybag)
mybag = null
update_icon()
- else
- ..()
/obj/structure/stool/bed/chair/janicart/relaymove(mob/user, direction)
@@ -256,7 +256,7 @@
if(buckled_mob)
buckled_mob.pixel_x = 0
buckled_mob.pixel_y = 0
- ..()
+ . = ..()
/obj/structure/stool/bed/chair/janicart/handle_rotation()
if((dir == SOUTH) || (dir == WEST) || (dir == EAST))
@@ -271,6 +271,10 @@
update_mob()
+/obj/structure/stool/bed/chair/janicart/Bump(atom/movable/M)
+ . = ..()
+ if(istype(M, /obj/machinery/door) && buckled_mob)
+ M.Bumped(buckled_mob)
/obj/structure/stool/bed/chair/janicart/proc/update_mob()
if(buckled_mob)
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index 4d8959849c6..0319e9cdf9c 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -13,6 +13,8 @@
var/max_grown = 200
var/time_of_birth
+ rotate_on_lying = 0
+
//This is fine right now, if we're adding organ specific damage this needs to be updated
/mob/living/carbon/alien/larva/New()
regenerate_icons()
diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm
index 89af6c2f4ca..35f2619cfcf 100644
--- a/code/modules/mob/living/carbon/carbon_defines.dm
+++ b/code/modules/mob/living/carbon/carbon_defines.dm
@@ -27,3 +27,5 @@
var/remote_view = 0
var/list/obj/effect/proc_holder/alien/abilities = list()
var/gib_type = /obj/effect/decal/cleanable/blood/gibs
+
+ var/rotate_on_lying = 1
diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm
index 59d26cb7135..b0563bb2d38 100644
--- a/code/modules/mob/living/carbon/update_icons.dm
+++ b/code/modules/mob/living/carbon/update_icons.dm
@@ -4,7 +4,7 @@
var/final_pixel_y = pixel_y
var/final_dir = dir
var/changed = 0
- if(lying != lying_prev)
+ if(lying != lying_prev && rotate_on_lying)
changed++
ntransform.TurnTo(lying_prev,lying)
if(lying == 0) //Lying to standing