diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 779b102f13..8d4bfe0555 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -51,20 +51,10 @@
/atom/movable/proc/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE)
- if(!buckled_mobs)
- buckled_mobs = list()
-
- if(!istype(M))
- return FALSE
-
if(check_loc && M.loc != loc)
return FALSE
- if((!can_buckle && !forced) || M.buckled || M.pinned.len || (buckled_mobs.len >= max_buckled_mobs) || (buckle_require_restraints && !M.restrained()))
- return FALSE
-
- if(has_buckled_mobs() && buckled_mobs.len >= max_buckled_mobs) //Handles trying to buckle yourself to the chair when someone is on it
- to_chat(M, "\The [src] can't buckle anymore people.")
+ if(!can_buckle_check(M, forced))
return FALSE
M.buckled = src
@@ -117,6 +107,8 @@
if(M in buckled_mobs)
to_chat(user, "\The [M] is already buckled to \the [src].")
return FALSE
+ if(!can_buckle_check(M, forced))
+ return FALSE
add_fingerprint(user)
// unbuckle_mob()
@@ -170,3 +162,19 @@
else
L.set_dir(dir)
return TRUE
+
+/atom/movable/proc/can_buckle_check(mob/living/M, forced = FALSE)
+ if(!buckled_mobs)
+ buckled_mobs = list()
+
+ if(!istype(M))
+ return FALSE
+
+ if((!can_buckle && !forced) || M.buckled || M.pinned.len || (buckled_mobs.len >= max_buckled_mobs) || (buckle_require_restraints && !M.restrained()))
+ return FALSE
+
+ if(has_buckled_mobs() && buckled_mobs.len >= max_buckled_mobs) //Handles trying to buckle yourself to the chair when someone is on it
+ to_chat(M, "\The [src] can't buckle anymore people.")
+ return FALSE
+
+ return TRUE