|
|
|
|
@@ -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
|
|
|
|
|
*/
|
|
|
|
|
|