From dda0a9055dcf09cbf3411b59ddb5e9d4dc53d5ee Mon Sep 17 00:00:00 2001
From: TheFurryFeline <38586851+TheFurryFeline@users.noreply.github.com>
Date: Thu, 2 May 2019 22:13:02 -0400
Subject: [PATCH] Buckling Bug Fixes
Prevents unintended self-dragging to pipes and other chairs.
---
code/game/objects/buckling.dm | 36 ++++++++++++++++++++++-------------
1 file changed, 23 insertions(+), 13 deletions(-)
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 998b213ff4..78e3504f6e 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -49,22 +49,12 @@
unbuckle_all_mobs()
return ..()
-
+//TFF 2/5/19: Polaris port for buckling-related bugs - chair-related buckling disabled
/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
@@ -130,6 +120,9 @@
if(M in buckled_mobs)
to_chat(user, "\The [M] is already buckled to \the [src].")
return FALSE
+ //TFF 2/5/19: Polaris port for buckling-related bugs - check for whether someone's buckled
+ if(!can_buckle_check(M, forced))
+ return FALSE
add_fingerprint(user)
// unbuckle_mob()
@@ -184,6 +177,23 @@
L.set_dir(dir)
return TRUE
+//TFF 2/5/19: Polaris port for buckling-related bugs - check for whether someone's buckled
+/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
+
/atom/movable/Move(atom/newloc, direct = 0)
. = ..()
if(. && has_buckled_mobs() && !handle_buckled_mob_movement(newloc, direct)) //movement failed due to buckled mob(s)
@@ -193,4 +203,4 @@
riding_datum.handle_vehicle_layer()
riding_datum.handle_vehicle_offsets()
//VOREStation Add End
-
\ No newline at end of file
+