diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index 71ab882cc320..cf13df1fe71f 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -227,10 +227,26 @@ There are several things that need to be remembered: if(!gloves_overlay) return + if(!handled_by_bodytype && (OFFSET_GLOVES in dna.species.offset_features)) gloves_overlay.pixel_x += dna.species.offset_features[OFFSET_GLOVES][1] gloves_overlay.pixel_y += dna.species.offset_features[OFFSET_GLOVES][2] + + // We dont have any >2 hands human species (and likely wont ever), so theres no point in splitting this because: + // It will only run if the left hand OR the right hand is missing, and it wont run if both are missing because you cant wear gloves with no arms + // (unless admins mess with this then its their fault) + if(num_hands < default_num_hands) + var/static/atom/movable/alpha_filter_target + if(isnull(alpha_filter_target)) + alpha_filter_target = new(null) + alpha_filter_target.icon = 'icons/masks/handless.dmi' + alpha_filter_target.icon_state = "missing[!has_left_hand(check_disabled = FALSE) ? "l" : "r"]" + alpha_filter_target.render_target = "*MissGlove [REF(src)] [!has_left_hand(check_disabled = FALSE) ? "L" : "R"]" + gloves_overlay.add_overlay(alpha_filter_target) + gloves_overlay.filters += filter(type="alpha", render_source=alpha_filter_target.render_target, flags=MASK_INVERSE) + overlays_standing[GLOVES_LAYER] = gloves_overlay + apply_overlay(GLOVES_LAYER) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 272cf0f1429d..ba383557b978 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -758,7 +758,7 @@ GLOBAL_LIST_EMPTY(features_by_species) return H.equip_delay_self_check(I, bypass_equip_delay_self) if(ITEM_SLOT_GLOVES) - if(H.num_hands < 2) + if(H.num_hands == 0) return FALSE return H.equip_delay_self_check(I, bypass_equip_delay_self) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 36efe1c3c19b..c1a7ba8c8368 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -281,10 +281,10 @@ var/atom/movable/screen/inventory/hand/associated_hand = arm_owner.hud_used.hand_slots["[held_index]"] if(associated_hand) associated_hand.update_appearance() - if(arm_owner.gloves) - arm_owner.dropItemToGround(arm_owner.gloves, TRUE) - arm_owner.update_worn_gloves() //to remove the bloody hands overlay - return ..() + . = ..() + if(arm_owner.num_hands == 0) + arm_owner.dropItemToGround(arm_owner.gloves, TRUE) + arm_owner.update_worn_gloves() //to remove the bloody hands overlay /obj/item/bodypart/leg/drop_limb(special) if(owner && !special) diff --git a/icons/masks/handless.dmi b/icons/masks/handless.dmi new file mode 100644 index 000000000000..6eab9ad184b0 Binary files /dev/null and b/icons/masks/handless.dmi differ