Merge pull request #8822 from MistakeNot4892/voxicon

Sideports multiplicative colour vox icon and markings from Neb.
This commit is contained in:
Spookerton
2022-11-13 12:29:35 +00:00
committed by GitHub
17 changed files with 63 additions and 21 deletions

View File

@@ -60,10 +60,14 @@
flags = NO_SCAN | NO_DEFIB
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
appearance_flags = HAS_SKIN_TONE | HAS_EYE_COLOR | HAS_HAIR_COLOR
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR
limb_blend = ICON_MULTIPLY
blood_color = "#9066BD"
flesh_color = "#808D11"
tail = "voxtail"
tail_hair = "quills"
tail_blend = ICON_MULTIPLY
reagent_tag = IS_VOX

View File

@@ -13,6 +13,7 @@
// Icon/appearance vars.
var/icobase = 'icons/mob/human_races/r_human.dmi' // Normal icon set.
var/deform = 'icons/mob/human_races/r_def_human.dmi' // Mutated icon set.
var/limb_blend = ICON_ADD // Specify a blending mode for limb colourisation.
var/speech_bubble_appearance = "normal" // Part of icon_state to use for speech bubbles when talking. See talk.dmi for available icons.
var/fire_icon_state = "humanoid" // The icon_state used inside OnFire.dmi for when on fire.
@@ -31,6 +32,8 @@
var/tail // Name of tail state in species effects icon file.
var/tail_animation // If set, the icon to obtain tail animation states from.
var/tail_hair
var/tail_blend = ICON_ADD // Blending mode for tail colourisation.
var/tail_hair_blend = ICON_ADD // Blending mode for tail hair colourisation.
var/icon_scale_x = 1 // Makes the icon wider/thinner.
var/icon_scale_y = 1 // Makes the icon taller/shorter.
@@ -260,10 +263,6 @@
/datum/mob_descriptor/build
)
//This is used in character setup preview generation (prefences_setup.dm) and human mob
//rendering (update_icons.dm)
var/color_mult = 0
//This is for overriding tail rendering with a specific icon in icobase, for static
//tails only, since tails would wag when dead if you used this
var/icobase_tail = 0

View File

@@ -250,10 +250,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
icon_key += "[rgb(part.s_col[1],part.s_col[2],part.s_col[3])]"
if(part.body_hair && part.h_col && part.h_col.len >= 3)
icon_key += "[rgb(part.h_col[1],part.h_col[2],part.h_col[3])]"
if(species.color_mult)
icon_key += "[ICON_MULTIPLY]"
else
icon_key += "[ICON_ADD]"
icon_key += "[species?.limb_blend || ICON_ADD]"
else
icon_key += "#000000"
@@ -891,7 +888,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
remove_layer(TAIL_NORTH_LAYER)
remove_layer(TAIL_SOUTH_LAYER)
var tail_layer = GET_TAIL_LAYER
var/tail_layer = GET_TAIL_LAYER
var/image/tail_image = get_tail_image()
if(tail_image)
@@ -918,12 +915,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
if(!species_tail_anim && species.icobase_tail) species_tail_anim = species.icobase //Allow override of file for non-animated tails
if(!species_tail_anim) species_tail_anim = 'icons/effects/species.dmi'
tail_icon = new/icon(species_tail_anim)
tail_icon.Blend(rgb(r_skin, g_skin, b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
tail_icon.Blend(rgb(r_skin, g_skin, b_skin), species?.tail_blend || ICON_ADD)
// The following will not work with animated tails.
var/use_species_tail = species.get_tail_hair(src)
if(use_species_tail)
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
hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species?.tail_hair_blend || ICON_ADD)
tail_icon.Blend(hair_icon, ICON_OVERLAY)
tail_icon_cache[icon_key] = tail_icon
@@ -1078,7 +1075,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
//If you are FBP with wing style and didn't set a custom one
if(synthetic && synthetic.includes_wing && !wing_style)
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)
wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species?.limb_blend || ICON_ADD) // Are wings even used on Polaris? This might need an additional blend mode var.
return image(wing_s)
//If you have custom wings selected
@@ -1128,7 +1125,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
var/datum/robolimb/model = isSynthetic()
if(istype(model) && model.includes_tail && !tail_style)
var/icon/tail_s = new/icon("icon" = synthetic.icon, "icon_state" = "tail")
tail_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
tail_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species?.tail_blend || ICON_ADD)
return image(tail_s)
//If you have a custom tail selected

View File

@@ -22,6 +22,10 @@
r_skin = rand (0,255)
g_skin = rand (0,255)
b_skin = rand (0,255)
for(var/marking in body_markings)
body_markings[marking] = rgb(rand(0,255), rand(0,255), rand(0,255))
if(current_species.appearance_flags & HAS_UNDERWEAR)
all_underwear.Cut()
for(var/datum/category_group/underwear/WRC in global_underwear.categories)

View File

@@ -2067,6 +2067,8 @@ shaved
// Vox things
/datum/sprite_accessory/hair/vox
name = "Long Vox braid"
icon = 'icons/mob/hair_vox.dmi'
icon_add = 'icons/mob/hair_vox_add.dmi'
icon_state = "vox_longbraid"
species_allowed = list(SPECIES_VOX)
@@ -2090,6 +2092,41 @@ shaved
name = "Quill Mohawk"
icon_state = "vox_mohawk"
/datum/sprite_accessory/marking/vox
name = "Vox Neck Markings"
icon_state = "neck_markings"
body_parts = list(BP_HEAD)
species_allowed = list(SPECIES_VOX)
icon = 'icons/mob/human_races/markings_vox.dmi'
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/marking/vox/claws
name = "Vox Claws"
icon_state = "claws"
body_parts = list(BP_L_HAND, BP_R_HAND, BP_L_FOOT, BP_R_FOOT, BP_TORSO)
/datum/sprite_accessory/marking/vox/beak
name = "Vox Beak"
icon_state = "beak"
/datum/sprite_accessory/marking/vox/scutes
name = "Vox Scutes"
icon_state = "scutes"
body_parts = list(BP_L_ARM, BP_L_HAND, BP_R_ARM, BP_R_HAND, BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)
/datum/sprite_accessory/marking/vox/arm_markings
name = "Vox Arm Markings (Left)"
icon_state = "arm_markings"
body_parts = list(BP_L_ARM)
/datum/sprite_accessory/marking/vox/arm_markings/right
name = "Vox Arm Markings (Right)"
body_parts = list(BP_R_ARM)
/datum/sprite_accessory/marking/vox/crest
name = "Vox Crest Colouration"
icon_state = "crest"
//Tajaran Facial Hair
/datum/sprite_accessory/facial_hair/taj

View File

@@ -40,9 +40,9 @@
var/gendered_icon = 0 // Whether or not the icon state appends a gender.
var/s_tone // Skin tone.
var/list/s_col // skin colour
var/s_col_blend = ICON_ADD // How the skin colour is applied.
var/list/h_col // hair colour
var/body_hair // Icon blend for body hair if any.
var/mob/living/applied_pressure
var/list/markings = list() // Markings (body_markings) to apply to the icon

View File

@@ -119,7 +119,7 @@ var/global/list/limb_icon_cache = list()
for(var/M in markings)
var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]")
mark_s.Blend(markings[M]["color"], ICON_ADD)
mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode)
add_overlay(mark_s) //So when it's not on your body, it has icons
mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons
icon_cache_key += "[M][markings[M]["color"]]"
@@ -139,7 +139,7 @@ var/global/list/limb_icon_cache = list()
for(var/M in markings)
var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]")
mark_s.Blend(markings[M]["color"], ICON_ADD)
mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode)
add_overlay(mark_s) //So when it's not on your body, it has icons
mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons
icon_cache_key += "[M][markings[M]["color"]]"
@@ -168,10 +168,10 @@ var/global/list/limb_icon_cache = list()
else
applying.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
icon_cache_key += "_tone_[s_tone]"
else
if(s_col && s_col.len >= 3)
applying.Blend(rgb(s_col[1], s_col[2], s_col[3]), s_col_blend)
icon_cache_key += "_color_[s_col[1]]_[s_col[2]]_[s_col[3]]_[s_col_blend]"
else if(s_col && s_col.len >= 3)
var/blend = species?.limb_blend || ICON_ADD
applying.Blend(rgb(s_col[1], s_col[2], s_col[3]), blend)
icon_cache_key += "_color_[s_col[1]]_[s_col[2]]_[s_col[3]]_[blend]"
// Translucency.
if(nonsolid) applying += rgb(,,,180) // SO INTUITIVE TY BYOND

View File

@@ -1,5 +1,6 @@
/obj/item/organ/external/head/vox
eye_icon = "vox_eyes_s"
eye_icon_location = 'icons/mob/eyes_vox.dmi'
//vox got different organs within. This will also help with regular surgeons knowing the organs within an alien as alien as vox.
/obj/item/organ/internal/brain/vox