diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 9c3df5395f..1adafc1a5c 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -107,7 +107,7 @@ //Wrapper procs that handle sanity and user feedback /atom/movable/proc/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) - if(!in_range(user, src) || !isturf(user.loc) || user.incapacitated() || M.anchored) + if(!in_range(user, src) || !isturf(user.loc) || user.incapacitated() || M.anchored || !user.can_buckle_others(mob/living/M, src)) return FALSE add_fingerprint(user) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index d38471855a..6577c26402 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -145,3 +145,6 @@ dynamic_chassis_bellyup = !dynamic_chassis_bellyup to_chat(usr, "You are now lying on your [dynamic_chassis_bellyup? "back" : "front"].") update_icon() + +/mob/living/silicon/pai/can_buckle_others(mob/living/target, atom/buckle_to) + return ispAI(target) && ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index d4528fb91f..5ae7db052c 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -802,11 +802,14 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) //can the mob be buckled to something by default? /mob/proc/can_buckle() - return 1 + return TRUE //can the mob be unbuckled from something by default? /mob/proc/can_unbuckle() - return 1 + return TRUE + +/mob/proc/can_buckle_others(mob/living/target, atom/buckle_to) + return TRUE //Can the mob interact() with an atom? /mob/proc/can_interact_with(atom/A)