From 46bb3babb43a1888a74834f2ea60dd7dda4e828e Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 21 Jun 2021 01:47:52 +0200 Subject: [PATCH] [MIRROR] Digitigrade Paralysis BugFix (#6411) * Digitigrade Paralysis BugFix (#59697) * Fixing Digitigrade Legs, Adding Sanity Checks - A limb's attach_limb proc now uses the set_owner() proc instead of setting the owner manually, fixing problems where limbs that were meant to be paralyzed were not - Added a sanity check to set_usable_legs to ensure the value isn't set lower than 0 * Adds A Stack Trace to Set_Usable_Legs - set_usable_legs now calls stack_trace() whenever it is provided with a negative value * Digitigrade Paralysis BugFix Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com> --- code/modules/mob/living/living.dm | 4 ++++ code/modules/surgery/bodyparts/dismemberment.dm | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 38aad9bd646..dd3860f18d9 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1872,6 +1872,10 @@ /mob/living/proc/set_usable_legs(new_value) if(usable_legs == new_value) return + if(new_value < 0) // Sanity check + stack_trace("[src] had set_usable_legs() called on them with a negative value!") + new_value = 0 + . = usable_legs usable_legs = new_value diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index cb1155a8324..e905886a9ab 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -322,7 +322,7 @@ return FALSE . = TRUE moveToNullspace() - owner = new_limb_owner + set_owner(new_limb_owner) new_limb_owner.add_bodypart(src) if(held_index) if(held_index > new_limb_owner.hand_bodyparts.len)