[MIRROR] Converts cache to a GLOB. Other overlay tweaks (#10981)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-05-31 18:01:40 -07:00
committed by GitHub
parent f7f88e74fa
commit c8f4469b94
8 changed files with 56 additions and 113 deletions

View File

@@ -63,7 +63,7 @@
/datum/category_item/underwear/proc/is_default(var/gender)
return is_default
/datum/category_item/underwear/proc/generate_image(var/list/metadata, var/layer = FLOAT_LAYER, var/digitigrade = FALSE) //CHOMPEdit
/datum/category_item/underwear/proc/generate_image(var/list/metadata, var/layer = FLOAT_LAYER, var/digitigrade = FALSE)
if(!icon_state)
return

View File

@@ -558,17 +558,17 @@
if(light_on)
// Generate object icon.
if(!GLOB.light_overlay_cache["[light_overlay]_icon"]) //ChompEDIT Managed GLOB
GLOB.light_overlay_cache["[light_overlay]_icon"] = image(icon = 'icons/obj/light_overlays.dmi', icon_state = "[light_overlay]") //ChompEDIT Managed GLOB
helmet_light = GLOB.light_overlay_cache["[light_overlay]_icon"] //ChompEDIT Managed GLOB
if(!GLOB.light_overlay_cache["[light_overlay]_icon"])
GLOB.light_overlay_cache["[light_overlay]_icon"] = image(icon = 'icons/obj/light_overlays.dmi', icon_state = "[light_overlay]")
helmet_light = GLOB.light_overlay_cache["[light_overlay]_icon"]
add_overlay(helmet_light)
// Generate and cache the on-mob icon, which is used in update_inv_head().
var/body_type = (H && H.species.get_bodytype(H))
var/cache_key = "[light_overlay][body_type && LAZYACCESS(sprite_sheets, body_type) ? body_type : ""]"
if(!GLOB.light_overlay_cache[cache_key]) //ChompEDIT Managed GLOB
if(!GLOB.light_overlay_cache[cache_key])
var/use_icon = LAZYACCESS(sprite_sheets, body_type) || 'icons/mob/light_overlays.dmi'
GLOB.light_overlay_cache[cache_key] = image(icon = use_icon, icon_state = "[light_overlay]") //ChompEDIT Managed GLOB
GLOB.light_overlay_cache[cache_key] = image(icon = use_icon, icon_state = "[light_overlay]")
else if(helmet_light)
cut_overlay(helmet_light)

View File

@@ -15,8 +15,8 @@
var/image/standing = ..()
if(light_on && slot_name == slot_head_str)
var/cache_key = "[light_overlay][LAZYACCESS(sprite_sheets, body_type) ? "_[body_type]" : ""]"
if(standing && GLOB.light_overlay_cache[cache_key]) //ChompEDIT Managed GLOB
standing.add_overlay(GLOB.light_overlay_cache[cache_key]) //ChompEDIT Managed GLOB
if(standing && GLOB.light_overlay_cache[cache_key])
standing.add_overlay(GLOB.light_overlay_cache[cache_key])
return standing
//SUIT: Blood state is slightly different

View File

@@ -1863,3 +1863,17 @@
/mob/living/carbon/human/get_digestion_efficiency_modifier()
return species.digestion_efficiency
/mob/living/carbon/human/verb/hide_headset()
set name = "Show/Hide Headset"
set category = "IC.Settings"
set desc = "Toggle headset worn icon visibility."
hide_headset = !hide_headset
update_inv_ears()
/mob/living/carbon/human/verb/hide_glasses()
set name = "Show/Hide Glasses"
set category = "IC.Settings"
set desc = "Toggle glasses worn icon visibility."
hide_glasses = !hide_glasses
update_inv_glasses()

View File

@@ -176,3 +176,5 @@
var/next_loneliness_time = 0
var/redgate_restricted = FALSE
var/hide_headset = FALSE
var/hide_glasses = FALSE

View File

@@ -2,13 +2,11 @@
Global associative list for caching humanoid icons.
Index format m or f, followed by a string of 0 and 1 to represent bodyparts followed by husk fat hulk skeleton 1 or 0.
*/
//ChompEDIT START - change to managed GLOB
GLOBAL_LIST_EMPTY(human_icon_cache) //key is incredibly complex, see update_icons_body()
GLOBAL_LIST_EMPTY(tail_icon_cache) //key is [species.race_key][r_skin][g_skin][b_skin]
GLOBAL_LIST_EMPTY(wing_icon_cache) // See tail.
GLOBAL_LIST_EMPTY(light_overlay_cache) //see make_worn_icon() on helmets
GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
//ChompEDIT END
////////////////////////////////////////////////////////////////////////////////////////////////
// # Human Icon Updating System
@@ -160,13 +158,13 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
if(O.damage_state == "00") continue
var/icon/DI
var/cache_index = "[O.damage_state]/[O.icon_name]/[species.get_blood_colour(src)]/[species.get_bodytype(src)]"
if(GLOB.damage_icon_parts[cache_index] == null) //ChompEDIT Managed GLOB
if(GLOB.damage_icon_parts[cache_index] == null)
DI = icon(species.get_damage_overlays(src), O.damage_state) // the damage icon for whole human
DI.Blend(icon(species.get_damage_mask(src), O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels
DI.Blend(species.get_blood_colour(src), ICON_MULTIPLY)
GLOB.damage_icon_parts[cache_index] = DI //ChompEDIT Managed GLOB
GLOB.damage_icon_parts[cache_index] = DI
else
DI = GLOB.damage_icon_parts[cache_index] //ChompEDIT Managed GLOB
DI = GLOB.damage_icon_parts[cache_index]
standing_image.add_overlay(DI)
@@ -221,11 +219,11 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
var/wholeicontransparent = TRUE
for(var/organ_tag in species.has_limbs)
var/obj/item/organ/external/part = organs_by_name[organ_tag]
if(isnull(part) || part.is_stump() || part.is_hidden_by_sprite_accessory()) //VOREStation Edit allowing tails to prevent bodyparts rendering, granting more spriter freedom for taur/digitigrade stuff.
if(isnull(part) || part.is_stump() || part.is_hidden_by_sprite_accessory()) //Allowing tails to prevent bodyparts rendering, granting more spriter freedom for taur/digitigrade stuff.
icon_key += "0"
continue
if(part)
wholeicontransparent &&= part.transparent //VORESTATION EDIT: transparent instead of nonsolid
wholeicontransparent &&= part.transparent
icon_key += "[part.data.get_species_race_key(part.owner)]"
icon_key += "[part.data.body_gender]"
icon_key += "[part.s_tone]"
@@ -244,10 +242,8 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
if (part.markings[M]["on"])
icon_key += "[M][part.markings[M]["color"]]"
// VOREStation Edit Start
if(part.nail_polish)
icon_key += "_[part.nail_polish.icon]_[part.nail_polish.icon_state]_[part.nail_polish.color]"
// VOREStation Edit End
if(part.robotic >= ORGAN_ROBOT)
icon_key += "2[part.model ? "-[part.model]": ""]"
@@ -258,11 +254,11 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
icon_key += "3"
else
icon_key += "1"
if(part.transparent) //VOREStation Edit. For better slime limbs. Avoids using solid var due to limb dropping.
icon_key += "_t" //VOREStation Edit.
if(part.transparent) //For better slime limbs. Avoids using solid var due to limb dropping.
icon_key += "_t"
if(istype(tail_style, /datum/sprite_accessory/tail/taur))
if(tail_style.clip_mask) //VOREStation Edit.
if(tail_style.clip_mask)
icon_key += tail_style.clip_mask_state
if(digitigrade && (part.organ_tag == BP_R_LEG || part.organ_tag == BP_L_LEG || part.organ_tag == BP_R_FOOT || part.organ_tag == BP_L_FOOT))
@@ -288,7 +284,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
else
//BEGIN CACHED ICON GENERATION.
var/obj/item/organ/external/chest = get_organ(BP_TORSO)
base_icon = new(chest?.get_icon(skeleton, !wholeicontransparent)) //ChompEDIT NEW icon, not referencing original
base_icon = new(chest?.get_icon(skeleton, !wholeicontransparent))
var/apply_extra_transparency_leg = organs_by_name[BP_L_LEG] && organs_by_name[BP_R_LEG]
var/apply_extra_transparency_foot = organs_by_name[BP_L_FOOT] && organs_by_name[BP_R_FOOT]
@@ -298,7 +294,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
var/icon_y_offset = 0
if(istype(tail_style, /datum/sprite_accessory/tail/taur)) // Tail icon 'cookie cutters' are filled in where icons are preserved. We need to invert that.
if(tail_style.clip_mask) //VOREStation Edit.
if(tail_style.clip_mask)
Cutter = new(icon = (tail_style.clip_mask_icon ? tail_style.clip_mask_icon : tail_style.icon), icon_state = tail_style.clip_mask_state)
Cutter.Blend("#000000", ICON_MULTIPLY) // Make it all black.
@@ -312,9 +308,9 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
icon_y_offset = tail_style.offset_y
for(var/obj/item/organ/external/part in organs)
if(isnull(part) || part.is_stump() || part == chest || part.is_hidden_by_sprite_accessory()) //VOREStation Edit allowing tails to prevent bodyparts rendering, granting more spriter freedom for taur/digitigrade stuff.
if(isnull(part) || part.is_stump() || part == chest || part.is_hidden_by_sprite_accessory()) //Allowing tails to prevent bodyparts rendering, granting more spriter freedom for taur/digitigrade stuff.
continue
var/icon/temp = new(part.get_icon(skeleton, !wholeicontransparent)) //ChompEDIT NEW icon, not referencing original
var/icon/temp = new(part.get_icon(skeleton, !wholeicontransparent))
if((part.organ_tag in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)) && Cutter)
temp.Blend(Cutter, ICON_AND, x = icon_x_offset, y = icon_y_offset)
@@ -330,19 +326,12 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
if(!(part.icon_position & RIGHT))
temp2.Insert(new/icon(temp,dir=WEST),dir=WEST)
base_icon.Blend(temp2, ICON_OVERLAY)
/* //ChompEDIT START - icon crashes
temp2.Insert(temp2,"blank",dir=NORTH) //faaaaairly certain this is more efficient than reloading temp2, doing this so we don't blend the icons twice (it matters more in transparent limbs)
temp2.Insert(temp2,"blank",dir=SOUTH)
temp2.Insert(temp2,"blank",dir=EAST)
temp2.Insert(temp2,"blank",dir=WEST)
*/
temp2 = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi', icon_state = "blank")
//ChompEDIT END
if(part.icon_position & LEFT)
temp2.Insert(new/icon(temp,dir=EAST),dir=EAST)
if(part.icon_position & RIGHT)
temp2.Insert(new/icon(temp,dir=WEST),dir=WEST)
if (part.transparent && !wholeicontransparent) //apply a little (a lot) extra transparency to make it look better //VORESTATION EDIT: transparent instead of nonsolid
if (part.transparent && !wholeicontransparent) //apply a little (a lot) extra transparency to make it look better.
if ((istype(part, /obj/item/organ/external/leg) && apply_extra_transparency_leg) || (istype(part, /obj/item/organ/external/foot) && apply_extra_transparency_foot)) //maybe
temp2 += rgb(,,,30)
base_icon.Blend(temp2, ICON_UNDERLAY)
@@ -418,7 +407,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
//Bloody feet
if(feet_blood_DNA)
var/image/bloodsies = image(icon = digitigrade ? 'icons/mob/human_races/masks/blood_digitigrade.dmi' : species.get_blood_mask(src), icon_state = "shoeblood", layer = BODY_LAYER+BLOOD_LAYER) //CHOMPEdit: digitigrade feeties
var/image/bloodsies = image(icon = digitigrade ? 'icons/mob/human_races/masks/blood_digitigrade.dmi' : species.get_blood_mask(src), icon_state = "shoeblood", layer = BODY_LAYER+BLOOD_LAYER)
bloodsies.color = feet_blood_color
both.add_overlay(bloodsies)
@@ -439,7 +428,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
if(hide_underwear[category])
continue
var/datum/category_item/underwear/UWI = all_underwear[category]
var/image/wear = UWI.generate_image(all_underwear_metadata[category], layer = BODY_LAYER+UNDERWEAR_LAYER, digitigrade = digitigrade) //CHOMPEdit
var/image/wear = UWI.generate_image(all_underwear_metadata[category], layer = BODY_LAYER+UNDERWEAR_LAYER, digitigrade = digitigrade)
overlays_standing[UNDERWEAR_LAYER] += wear
apply_layer(UNDERWEAR_LAYER)
@@ -451,7 +440,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
//Reset our hair
remove_layer(HAIR_LAYER)
remove_layer(HAIR_ACCESSORY_LAYER) //VOREStation Edit
remove_layer(HAIR_ACCESSORY_LAYER)
update_eyes() //Pirated out of here, for glowing eyes.
var/obj/item/organ/external/head/head_organ = get_organ(BP_HEAD)
@@ -498,7 +487,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
var/icon/ears_s = get_ears_overlay()
if(head_organ.transparent) //VORESTATION EDIT: transparent instead of nonsolid
if(head_organ.transparent)
face_standing += rgb(,,,120)
//if (ears_s) //maybe cap this instead of removing it? ae, if your ears are above 180 a reduce it down?
//ears_s += rgb(,,,180)
@@ -518,9 +507,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
overlays_standing[HAIR_LAYER] = semifinal
apply_layer(HAIR_LAYER)
//return //VOREStation Edit
// VOREStation Edit - START
var/icon/hair_acc_s = get_hair_accessory_overlay()
var/image/hair_acc_s_image = null
if(hair_acc_s)
@@ -534,7 +521,6 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
return
overlays_standing[HAIR_ACCESSORY_LAYER] = image(hair_acc_s, layer = BODY_LAYER+HAIR_ACCESSORY_LAYER)
apply_layer(HAIR_ACCESSORY_LAYER)
// VOREStation Edit - END
/mob/living/carbon/human/update_eyes()
if(QDESTROYING(src))
@@ -563,14 +549,14 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
if(!head_organ.eye_icon)
return
var/icon/eyes_icon = new/icon(head_organ.eye_icon_location, head_organ.eye_icon) //VOREStation Edit
var/icon/eyes_icon = new/icon(head_organ.eye_icon_location, head_organ.eye_icon)
if(eyes)
eyes_icon.Blend(rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3]), ICON_ADD)
else
eyes_icon.Blend(rgb(128,0,0), ICON_ADD)
// Convert to emissive at some point
if (head_organ.transparent) //VOREStation Edit: transparent instead of nonsolid
if (head_organ.transparent)
eyes_icon += rgb(,,,180)
var/image/eyes_image = image(eyes_icon)
@@ -706,7 +692,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
remove_layer(GLASSES_LAYER)
remove_layer(GLASSES_LAYER_ALT)
if(!glasses || hide_glasses) // CHOMPEdit - Add "|| hide_glasses" for glasses hiding
if(!glasses || hide_glasses)
return //Not wearing glasses, no need to update anything.
var/glasses_layer = GLASSES_LAYER
@@ -731,7 +717,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
if(!l_ear && !r_ear)
return //Why bother, if no ear sprites
if(hide_headset) //CHOMPEdit Start
if(hide_headset)
if(l_ear && istype(l_ear, /obj/item/radio/headset)) //No need to generate blank images if only headsets are present.
if(!r_ear || istype(r_ear, /obj/item/radio/headset))
return
@@ -758,7 +744,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
both.add_overlay(standing)
else
var/image/standing = r_ear.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_r_ear_str, default_icon = INV_EARS_DEF_ICON, default_layer = EARS_LAYER)
both.add_overlay(standing) //CHOMPEdit End
both.add_overlay(standing)
overlays_standing[EARS_LAYER] = both
apply_layer(EARS_LAYER)
@@ -998,7 +984,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
apply_layer(L_HAND_LAYER)
/mob/living/carbon/human/proc/get_tail_layer()
var/list/lower_layer_dirs = list(SOUTH, EAST, WEST) //ChompEDIT - Tail below clothing on side views too.
var/list/lower_layer_dirs = list(SOUTH, EAST, WEST) //Tail below clothing on side views too.
if(tail_style)
lower_layer_dirs = tail_style.lower_layer_dirs.Copy()
@@ -1036,14 +1022,14 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
if(species_tail && !(wear_suit && wear_suit.flags_inv & HIDETAIL))
var/icon/tail_s = get_tail_icon()
tail_image = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+tail_layer)
tail_image.alpha = chest?.transparent ? 180 : 255 //VORESTATION EDIT: transparent instead of nonsolid //keeping this as is
tail_image.alpha = chest?.transparent ? 180 : 255
overlays_standing[tail_layer] = tail_image
animate_tail_reset()
//TODO: Is this the appropriate place for this, and not on species...?
/mob/living/carbon/human/proc/get_tail_icon()
var/icon_key = "[species.get_race_key(src)][r_skin][g_skin][b_skin][r_hair][g_hair][b_hair]"
var/icon/tail_icon = GLOB.tail_icon_cache[icon_key] //ChompEDIT Managed GLOB
var/icon/tail_icon = GLOB.tail_icon_cache[icon_key]
if(!tail_icon)
//generate a new one
var/species_tail_anim = species.get_tail_animation(src)
@@ -1057,7 +1043,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
var/icon/hair_icon = icon('icons/effects/species.dmi', "[species.get_tail(src)]_[use_species_tail]")
hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species.color_mult ? ICON_MULTIPLY : ICON_ADD) //Check for species color_mult
tail_icon.Blend(hair_icon, ICON_OVERLAY)
GLOB.tail_icon_cache[icon_key] = tail_icon //ChompEDIT Managed GLOB
GLOB.tail_icon_cache[icon_key] = tail_icon
return tail_icon
@@ -1165,7 +1151,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
var/image/effects = new()
for(var/datum/modifier/M in modifiers)
if(M.mob_overlay_state)
if(M.icon_override) //VOREStation Edit. Override for the modifer icon.
if(M.icon_override) //Override for the modifer icon.
var/image/I = image(icon = 'icons/mob/modifier_effects_vr.dmi', icon_state = M.mob_overlay_state)
I.color = M.effect_color
effects.overlays += I // Leaving this as overlays +=
@@ -1229,7 +1215,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
return
//If you are FBP with wing style and didn't set a custom one
if(synthetic && synthetic.includes_wing && !wing_style && !wings_hidden) //VOREStation Edit
if(synthetic && synthetic.includes_wing && !wing_style && !wings_hidden)
var/icon/wing_s = new/icon("icon" = synthetic.icon, "icon_state" = "wing") //I dunno. If synths have some custom wing?
wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
var/image/working = image(wing_s)
@@ -1237,7 +1223,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
return working
//If you have custom wings selected
if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !wings_hidden) //VOREStation Edit
if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !wings_hidden)
var/wing_state = (flapping && wing_style.ani_state) ? wing_style.ani_state : wing_style.icon_state
if(wing_style.multi_dir)
wing_state += "_[under_layer ? "back" : "front"]"
@@ -1335,13 +1321,13 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)) && !tail_hidden)
var/icon/tail_s = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state))
if(tail_style.can_loaf && !is_shifted)
pixel_y = (resting) ? -tail_style.loaf_offset*size_multiplier : default_pixel_y //move player down, then taur up, to fit the overlays correctly // VOREStation Edit: Taur Loafing
pixel_y = (resting) ? -tail_style.loaf_offset*size_multiplier : default_pixel_y //move player down, then taur up, to fit the overlays correctly. Taur Loafing
if(tail_style.do_colouration)
tail_s.Blend(rgb(src.r_tail, src.g_tail, src.b_tail), tail_style.color_blend_mode)
if(tail_style.extra_overlay)
var/icon/overlay = new/icon("icon" = (tail_style?.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay)
if(wagging && tail_style.ani_state)
overlay = new/icon("icon" = (tail_style?.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay_w) //RS EDIT
overlay = new/icon("icon" = (tail_style?.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay_w)
overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode)
tail_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
@@ -1353,7 +1339,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
if(tail_style.extra_overlay2)
var/icon/overlay = new/icon("icon" = (tail_style?.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2)
if(wagging && tail_style.ani_state)
overlay = new/icon("icon" = (tail_style?.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2_w) //RS EDIT
overlay = new/icon("icon" = (tail_style?.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2_w)
overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode)
tail_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
@@ -1491,46 +1477,3 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
//Human Overlays Indexes/////////
/* CHOMPEdit - why are these undefined??
# undef MUTATIONS_LAYER
# undef SKIN_LAYER
# undef BLOOD_LAYER
# undef MOB_DAM_LAYER
# undef SURGERY_LAYER
# undef UNDERWEAR_LAYER
# undef SHOES_LAYER_ALT
# undef UNIFORM_LAYER
# undef ID_LAYER
# undef SHOES_LAYER
# undef GLOVES_LAYER
# undef BELT_LAYER
# undef SUIT_LAYER
# undef TAIL_UPPER_LAYER
# undef TAIL_LOWER_LAYER
# undef WING_LOWER_LAYER
# undef GLASSES_LAYER
# undef BELT_LAYER_ALT
# undef SUIT_STORE_LAYER
# undef BACK_LAYER
# undef HAIR_LAYER
# undef HAIR_ACCESSORY_LAYER
# undef EARS_LAYER
# undef EYES_LAYER
# undef FACEMASK_LAYER
# undef GLASSES_LAYER_ALT
# undef HEAD_LAYER
# undef HANDCUFF_LAYER
# undef LEGCUFF_LAYER
# undef L_HAND_LAYER
# undef R_HAND_LAYER
# undef VORE_BELLY_LAYER
# undef WING_LAYER
# undef TAIL_UPPER_LAYER_ALT
# undef MODIFIER_EFFECTS_LAYER
# undef FIRE_LAYER
# undef WATER_LAYER
# undef TARGETED_LAYER
# undef TOTAL_LAYERS
*/

View File

@@ -1,17 +1,3 @@
/mob/living/carbon/human/verb/hide_headset()
set name = "Show/Hide Headset"
set category = "IC.Settings"
set desc = "Toggle headset worn icon visibility."
hide_headset = !hide_headset
update_inv_ears()
/mob/living/carbon/human/verb/hide_glasses()
set name = "Show/Hide Glasses"
set category = "IC.Settings"
set desc = "Toggle glasses worn icon visibility."
hide_glasses = !hide_glasses
update_inv_glasses()
/mob/living/carbon/human/proc/synth_reag_toggle()
set name = "Toggle Reagent Processing"
set category = "Abilities.Vore"

View File

@@ -1,7 +1,5 @@
/mob/living/carbon/human
var/gender_change_cooldown = 0 // A cooldown for gender and gender indentify changing procs to make it easy to avoid spam of gender change
var/hide_headset = FALSE
var/hide_glasses = FALSE
var/speech_sound_enabled = TRUE
var/nutrition_hidden = FALSE