mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
Fixes most (non hardsuit) helmets hiding the glasses when they shouldn't.
Fixes not seeing glasses through the riot helmet. Fixes gas mask protruding from the abductor helmet. Fixed radiation hood not hiding your hair, earpiece, mask. Fixes colored justice hats not having an on-mob icon_stat. Removed BLOCKHAIR bit from var/flags , moved it to flags_inv and renamed to HIDEHAIR Added HIDEFACIALHAIR bitflag so certain hat/helmet can show just the beard. Fixed human/update_inv_glasses not checking if our mask hides our glasses. Fixed check_obscured_slots() not checking if our masj obscur our glasses. Fixes some bits of flags_inv having the same value. Fixes crusader hood and other headgear not hiding your identity when they should. Fixes drone mask icon not appearing.
This commit is contained in:
@@ -600,6 +600,10 @@
|
||||
if(head.flags_inv & HIDEEARS)
|
||||
obscured |= slot_ears
|
||||
|
||||
if(wear_mask)
|
||||
if(wear_mask.flags_inv & HIDEEYES)
|
||||
obscured |= slot_glasses
|
||||
|
||||
if(obscured.len > 0)
|
||||
return obscured
|
||||
else
|
||||
|
||||
@@ -167,16 +167,18 @@
|
||||
update_inv_s_store()
|
||||
|
||||
/mob/living/carbon/human/wear_mask_update(obj/item/clothing/C, unequip = 1)
|
||||
if(C.flags & BLOCKHAIR)
|
||||
if((C.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || (initial(C.flags_inv) & (HIDEHAIR|HIDEFACIALHAIR)))
|
||||
update_hair()
|
||||
if(unequip && internal)
|
||||
update_internals_hud_icon(0)
|
||||
internal = null
|
||||
if(C.flags_inv & HIDEEYES)
|
||||
update_inv_glasses()
|
||||
sec_hud_set_security_status()
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/head_update(obj/item/I, forced)
|
||||
if(I.flags & BLOCKHAIR || forced)
|
||||
if((I.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || forced)
|
||||
update_hair()
|
||||
if(I.flags_inv & HIDEEYES || forced)
|
||||
update_inv_glasses()
|
||||
|
||||
@@ -168,11 +168,23 @@
|
||||
|
||||
/datum/species/proc/handle_hair(mob/living/carbon/human/H, forced_colour)
|
||||
H.remove_overlay(HAIR_LAYER)
|
||||
|
||||
if(H.disabilities & HUSK)
|
||||
return
|
||||
var/datum/sprite_accessory/S
|
||||
var/list/standing = list()
|
||||
var/list/standing = list()
|
||||
var/hair_hidden = 0
|
||||
var/facialhair_hidden = 0
|
||||
//we check if our hat or helmet hides our facial hair.
|
||||
if(H.head)
|
||||
var/obj/item/I = H.head
|
||||
if(I.flags_inv & HIDEFACIALHAIR)
|
||||
facialhair_hidden = 1
|
||||
if(H.wear_mask)
|
||||
var/obj/item/clothing/mask/M = H.wear_mask
|
||||
if(M.flags_inv & HIDEFACIALHAIR)
|
||||
facialhair_hidden = 1
|
||||
|
||||
if(H.facial_hair_style && FACEHAIR in specflags)
|
||||
if(H.facial_hair_style && (FACEHAIR in specflags) && !facialhair_hidden)
|
||||
S = facial_hair_styles_list[H.facial_hair_style]
|
||||
if(S)
|
||||
var/image/img_facial_s
|
||||
@@ -192,44 +204,46 @@
|
||||
|
||||
img_facial_s.alpha = hair_alpha
|
||||
|
||||
standing += img_facial_s
|
||||
standing += img_facial_s
|
||||
|
||||
//Applies the debrained overlay if there is no brain
|
||||
if(!H.getorgan(/obj/item/organ/internal/brain))
|
||||
standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s", "layer" = -HAIR_LAYER)
|
||||
//we check if our hat or helmet hides our hair.
|
||||
if(H.head)
|
||||
var/obj/item/I = H.head
|
||||
if(I.flags_inv & HIDEHAIR)
|
||||
hair_hidden = 1
|
||||
if(H.wear_mask)
|
||||
var/obj/item/clothing/mask/M = H.wear_mask
|
||||
if(M.flags_inv & HIDEHAIR)
|
||||
hair_hidden = 1
|
||||
if(!hair_hidden)
|
||||
if(!H.getorgan(/obj/item/organ/internal/brain)) //Applies the debrained overlay if there is no brain
|
||||
standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s", "layer" = -HAIR_LAYER)
|
||||
|
||||
if((H.wear_suit) && (H.wear_suit.hooded) && (H.wear_suit.suittoggled == 1))
|
||||
if(standing.len)
|
||||
H.overlays_standing[HAIR_LAYER] = standing
|
||||
H.apply_overlay(HAIR_LAYER)
|
||||
return
|
||||
else if(H.hair_style && (HAIR in specflags))
|
||||
S = hair_styles_list[H.hair_style]
|
||||
if(S)
|
||||
var/image/img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
|
||||
|
||||
else if(H.hair_style && HAIR in specflags)
|
||||
S = hair_styles_list[H.hair_style]
|
||||
if(S)
|
||||
var/image/img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
|
||||
img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
|
||||
|
||||
img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
|
||||
|
||||
if(!forced_colour)
|
||||
if(hair_color)
|
||||
if(hair_color == "mutcolor")
|
||||
img_hair_s.color = "#" + H.dna.features["mcolor"]
|
||||
if(!forced_colour)
|
||||
if(hair_color)
|
||||
if(hair_color == "mutcolor")
|
||||
img_hair_s.color = "#" + H.dna.features["mcolor"]
|
||||
else
|
||||
img_hair_s.color = "#" + hair_color
|
||||
else
|
||||
img_hair_s.color = "#" + hair_color
|
||||
img_hair_s.color = "#" + H.hair_color
|
||||
else
|
||||
img_hair_s.color = "#" + H.hair_color
|
||||
else
|
||||
img_hair_s.color = forced_colour
|
||||
img_hair_s.alpha = hair_alpha
|
||||
img_hair_s.color = forced_colour
|
||||
img_hair_s.alpha = hair_alpha
|
||||
|
||||
standing += img_hair_s
|
||||
standing += img_hair_s
|
||||
|
||||
if(standing.len)
|
||||
H.overlays_standing[HAIR_LAYER] = standing
|
||||
|
||||
H.apply_overlay(HAIR_LAYER)
|
||||
return
|
||||
|
||||
/datum/species/proc/handle_body(mob/living/carbon/human/H)
|
||||
H.remove_overlay(BODY_LAYER)
|
||||
@@ -328,11 +342,11 @@
|
||||
bodyparts_to_add -= "frills"
|
||||
|
||||
if("horns" in mutant_bodyparts)
|
||||
if(!H.dna.features["horns"] || H.dna.features["horns"] == "None" || H.head && (H.head.flags & BLOCKHAIR) || (H.wear_mask && (H.wear_mask.flags & BLOCKHAIR)))
|
||||
if(!H.dna.features["horns"] || H.dna.features["horns"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
|
||||
bodyparts_to_add -= "horns"
|
||||
|
||||
if("ears" in mutant_bodyparts)
|
||||
if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags & BLOCKHAIR) || (H.wear_mask && (H.wear_mask.flags & BLOCKHAIR)))
|
||||
if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
|
||||
bodyparts_to_add -= "ears"
|
||||
|
||||
if(!bodyparts_to_add)
|
||||
|
||||
@@ -76,15 +76,6 @@ Please contact me on #coderbus IRC. ~Carnie x
|
||||
|
||||
//HAIR OVERLAY
|
||||
/mob/living/carbon/human/update_hair()
|
||||
//Reset our hair
|
||||
remove_overlay(HAIR_LAYER)
|
||||
|
||||
if( (disabilities & HUSK) || (head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)) )
|
||||
return
|
||||
|
||||
if((wear_suit) && (wear_suit.hooded) && (wear_suit.suittoggled == 1))
|
||||
return
|
||||
|
||||
dna.species.handle_hair(src)
|
||||
|
||||
/mob/living/carbon/human/proc/update_mutcolor()
|
||||
@@ -246,7 +237,7 @@ Please contact me on #coderbus IRC. ~Carnie x
|
||||
glasses.screen_loc = ui_glasses //...draw the item in the inventory screen
|
||||
client.screen += glasses //Either way, add the item to the HUD
|
||||
|
||||
if(!(head && (head.flags_inv & HIDEEYES)))
|
||||
if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES)))
|
||||
|
||||
var/image/standing = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/eyes.dmi')
|
||||
overlays_standing[GLASSES_LAYER] = standing
|
||||
|
||||
@@ -88,7 +88,10 @@
|
||||
update_inv_legcuffed()
|
||||
|
||||
//handle stuff to update when a mob equips/unequips a mask.
|
||||
/mob/living/carbon/proc/wear_mask_update(obj/item/clothing/C, unequip = 1)
|
||||
/mob/living/proc/wear_mask_update(obj/item/clothing/C, unequip = 1)
|
||||
update_inv_wear_mask()
|
||||
|
||||
/mob/living/carbon/wear_mask_update(obj/item/clothing/C, unequip = 1)
|
||||
if(C.tint || initial(C.tint))
|
||||
update_tint()
|
||||
update_inv_wear_mask()
|
||||
|
||||
@@ -77,8 +77,10 @@
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
head.screen_loc = ui_drone_head
|
||||
client.screen += head
|
||||
|
||||
var/image/head_overlay = head.build_worn_icon(state = head.icon_state, default_layer = DRONE_HEAD_LAYER, default_icon_file = 'icons/mob/head.dmi')
|
||||
var/used_head_icon = 'icons/mob/head.dmi'
|
||||
if(istype(head, /obj/item/clothing/mask))
|
||||
used_head_icon = 'icons/mob/mask.dmi'
|
||||
var/image/head_overlay = head.build_worn_icon(state = head.icon_state, default_layer = DRONE_HEAD_LAYER, default_icon_file = used_head_icon)
|
||||
head_overlay.pixel_y += -15
|
||||
|
||||
drone_overlays[DRONE_HEAD_LAYER] = head_overlay
|
||||
|
||||
Reference in New Issue
Block a user