diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 386a0893c3c4..88d4182bce5a 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -55,7 +55,7 @@ if(adjusted) adjusted = FALSE - if(!(mutantrace_variation & DIGITIGRADE_VARIATION) && ishuman(user)) + if(!(mutantrace_variation & DIGITIGRADE_VARIATION) && (flags_inv & HIDEJUMPSUIT) && ishuman(user)) if(slot_flags & slot) ADD_TRAIT(user, TRAIT_DIGI_SQUISH, REF(src)) else @@ -66,7 +66,7 @@ human_user.update_body_parts() /obj/item/clothing/suit/dropped(mob/user) - if(!(mutantrace_variation & DIGITIGRADE_VARIATION) && ishuman(user)) + if(!(mutantrace_variation & DIGITIGRADE_VARIATION) && (flags_inv & HIDEJUMPSUIT) && ishuman(user)) REMOVE_TRAIT(user, TRAIT_DIGI_SQUISH, REF(src)) var/mob/living/carbon/human/human_user = user human_user.update_inv_w_uniform() diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index c4f914260654..dab1159688a0 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -103,7 +103,7 @@ return var/update_suit = FALSE var/mob/living/carbon/human/human_user = user - if(!(mutantrace_variation & DIGITIGRADE_VARIATION)) + if(!(mutantrace_variation & DIGITIGRADE_VARIATION) && (body_parts_covered & LEGS)) if(slot_flags & slot) ADD_TRAIT(user, TRAIT_DIGI_SQUISH, REF(src)) else @@ -126,7 +126,7 @@ if(ishuman(user)) var/update_suit = FALSE var/mob/living/carbon/human/human_user = user - if(!(mutantrace_variation & DIGITIGRADE_VARIATION)) + if(!(mutantrace_variation & DIGITIGRADE_VARIATION) && (body_parts_covered & LEGS)) REMOVE_TRAIT(user, TRAIT_DIGI_SQUISH, REF(src)) human_user.update_inv_shoes() human_user.update_body_parts() diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 4858a9e75ade..9691c7f672fe 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -736,7 +736,15 @@ set_disabled(FALSE) /obj/item/bodypart/proc/set_digitigrade(use_digi = FALSE) - return + if(use_digitigrade == use_digi) + return + use_digitigrade = use_digi + if(!owner) + return + if(use_digi) + ADD_TRAIT(owner, TRAIT_DIGITIGRADE, REF(src)) + else + REMOVE_TRAIT(owner, TRAIT_DIGITIGRADE, REF(src)) ///Called when TRAIT_PARALYSIS is added to the limb. /obj/item/bodypart/proc/on_paralysis_trait_gain(obj/item/bodypart/source) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index eab2c580ecbb..763865cf4bbe 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -97,7 +97,7 @@ LAZYREMOVE(owner.all_scars, S) var/mob/living/carbon/phantom_owner = owner // so we can still refer to the guy who lost their limb after said limb forgets 'em - owner = null + set_owner(null) for(var/X in phantom_owner.surgeries) //if we had an ongoing surgery on that limb, we stop it. var/datum/surgery/S = X diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index 9b77f1f2d668..2e610652dd62 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -262,9 +262,6 @@ /// Used by the bloodysoles component to make footprints var/footprint_sprite = FOOTPRINT_SPRITE_SHOES -/obj/item/bodypart/l_leg/set_digitigrade(use_digi) - use_digitigrade = use_digi - /obj/item/bodypart/l_leg/set_owner(new_owner) . = ..() if(. == FALSE) @@ -357,9 +354,6 @@ /// Used by the bloodysoles component to make footprints var/footprint_sprite = FOOTPRINT_SPRITE_SHOES -/obj/item/bodypart/r_leg/set_digitigrade(use_digi) - use_digitigrade = use_digi - /obj/item/bodypart/r_leg/set_owner(new_owner) . = ..() if(. == FALSE) diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index b35ea8046737..bf21e2dd9ada 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -174,12 +174,12 @@ set_digitigrade(!use_digitigrade) /obj/item/bodypart/l_leg/robot/set_digitigrade(use_digi = FALSE) - use_digitigrade = use_digi if(use_digi) icon_state = digi_icon_state else icon_state = initial(icon_state) update_icon() + return ..() /obj/item/bodypart/r_leg/robot/attackby(obj/item/W, mob/user, params) if(W.tool_behaviour != TOOL_SCREWDRIVER) @@ -188,12 +188,12 @@ set_digitigrade(!use_digitigrade) /obj/item/bodypart/r_leg/robot/set_digitigrade(use_digi = FALSE) - use_digitigrade = use_digi if(use_digi) icon_state = digi_icon_state else icon_state = initial(icon_state) update_icon() + return ..() /obj/item/bodypart/chest/robot name = "cyborg torso"