diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index e27ce66829a..42bde6e19de 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -147,6 +147,8 @@
if(show_message)
to_chat(user, "[src] is too heavy to pull!")
return FALSE
+ if(user in buckled_mobs)
+ return FALSE
return TRUE
// Used in shuttle movement and AI eye stuff.
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 0fe70b0f10d..829b4b4e77f 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -55,6 +55,7 @@
if((!can_buckle && !force) || M.buckled || (length(buckled_mobs) >= max_buckled_mobs) || (buckle_requires_restraints && !M.restrained()) || M == src)
return FALSE
M.buckling = src
+
if(!M.can_buckle() && !force)
if(M == usr)
to_chat(M, "You are unable to buckle yourself to [src]!")
@@ -77,6 +78,10 @@
M.set_body_position(STANDING_UP)
else
M.set_body_position(LYING_DOWN)
+
+ if(M.pulling && M.pulling == src)
+ M.stop_pulling()
+
M.buckling = null
M.buckled = src
M.setDir(dir)