diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index bb5d989e45..e31b7cfe6e 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -11,6 +11,7 @@ // Icon/appearance vars. var/icobase = 'icons/mob/human_races/r_human.dmi' // Normal icon set. + var/icobase_add // Icon set for highlight blends when applicable. var/deform = 'icons/mob/human_races/r_def_human.dmi' // Mutated icon set. var/speech_bubble_appearance = "normal" // Part of icon_state to use for speech bubbles when talking. See talk.dmi for available icons. @@ -28,6 +29,7 @@ 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_animation_add // Highlight overlay for tail. var/tail_hair var/race_key = 0 // Used for mob icon cache string. diff --git a/code/modules/mob/living/carbon/human/species/species_getters.dm b/code/modules/mob/living/carbon/human/species/species_getters.dm index efb053eddf..e0be03af1d 100644 --- a/code/modules/mob/living/carbon/human/species/species_getters.dm +++ b/code/modules/mob/living/carbon/human/species/species_getters.dm @@ -10,6 +10,9 @@ /datum/species/proc/get_tail_animation(var/mob/living/carbon/human/H) return tail_animation +/datum/species/proc/get_tail_animation_a(var/mob/living/carbon/human/H) + return tail_animation_add + /datum/species/proc/get_tail_hair(var/mob/living/carbon/human/H) return tail_hair @@ -28,6 +31,9 @@ /datum/species/proc/get_icobase(var/mob/living/carbon/human/H, var/get_deform) return (get_deform ? deform : icobase) +/datum/species/proc/get_icobase_a(var/mob/living/carbon/human/H) + return icobase_add + /datum/species/proc/get_station_variant() return name diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm index 0a6e1df9a4..2049c169fe 100644 --- a/code/modules/mob/living/carbon/human/species/station/seromi.dm +++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm @@ -26,7 +26,8 @@ tail_hair = "feathers" reagent_tag = IS_TESHARI - icobase = 'icons/mob/human_races/r_seromi.dmi' + icobase = 'icons/mob/human_races/r_seromi_m.dmi' + icobase_add = 'icons/mob/human_races/r_seromi_a.dmi' deform = 'icons/mob/human_races/r_seromi.dmi' damage_overlays = 'icons/mob/human_races/masks/dam_seromi.dmi' damage_mask = 'icons/mob/human_races/masks/dam_mask_seromi.dmi' diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index f07ff9b119..686519394f 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -25,10 +25,12 @@ /datum/species/unathi name = "Unathi" name_plural = "Unathi" - icobase = 'icons/mob/human_races/r_lizard.dmi' + icobase = 'icons/mob/human_races/r_lizard_m.dmi' + icobase_add = 'icons/mob/human_races/r_lizard_a.dmi' deform = 'icons/mob/human_races/r_def_lizard.dmi' tail = "sogtail" - tail_animation = 'icons/mob/species/unathi/tail.dmi' + tail_animation = 'icons/mob/species/unathi/tail_m.dmi' + tail_animation_add = 'icons/mob/species/unathi/tail_a.dmi' unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp) primitive_form = "Stok" darksight = 3 @@ -128,10 +130,12 @@ /datum/species/tajaran name = "Tajara" name_plural = "Tajaran" - icobase = 'icons/mob/human_races/r_tajaran.dmi' + icobase = 'icons/mob/human_races/r_tajaran_m.dmi' + icobase_add = 'icons/mob/human_races/r_tajaran_a.dmi' deform = 'icons/mob/human_races/r_def_tajaran.dmi' tail = "tajtail" - tail_animation = 'icons/mob/species/tajaran/tail.dmi' + tail_animation = 'icons/mob/species/tajaran/tail_m.dmi' + tail_animation_add = 'icons/mob/species/tajaran/tail_a.dmi' unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp) darksight = 8 slowdown = -0.5 @@ -209,7 +213,8 @@ /datum/species/skrell name = "Skrell" name_plural = "Skrell" - icobase = 'icons/mob/human_races/r_skrell.dmi' + icobase = 'icons/mob/human_races/r_skrell_m.dmi' + icobase_add = 'icons/mob/human_races/r_skrell_a.dmi' deform = 'icons/mob/human_races/r_def_skrell.dmi' primitive_form = "Neaera" unarmed_types = list(/datum/unarmed_attack/punch) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 807d6125c8..0b9126bc3f 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -1041,14 +1041,22 @@ var/global/list/damage_icon_parts = list() if(!tail_icon) //generate a new one var/species_tail_anim = species.get_tail_animation(src) - if(!species_tail_anim) species_tail_anim = 'icons/effects/species.dmi' + var/species_tail_anim_a = species.get_tail_animation_a(src) + if(!species_tail_anim) + species_tail_anim = 'icons/effects/species.dmi' + if(!species_tail_anim_a) + species_tail_anim_a = 'icons/effects/species_a.dmi' tail_icon = new/icon(species_tail_anim) - tail_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) + var/tail_icon_a = new/icon(species_tail_anim_a) + tail_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_MULTIPLY) + tail_icon.Blend(tail_icon_a, 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), ICON_ADD) + var/icon/hair_icon_a = icon('icons/effects/species_a.dmi', "[species.get_tail(src)]_[use_species_tail]") + hair_icon.Blend(rgb(r_hair, g_hair, b_hair), ICON_MULTIPLY) + hair_icon.Blend(hair_icon_a, ICON_ADD) tail_icon.Blend(hair_icon, ICON_OVERLAY) tail_icon_cache[icon_key] = tail_icon diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index 914dc8632e..40ab0ab500 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -145,7 +145,9 @@ var/global/list/limb_icon_cache = list() var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]" if(!limb_icon_cache[cache_key]) var/icon/I = icon(species.get_icobase(owner), "[icon_name]_[body_hair]") - I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_ADD) + var/icon/IA = icon(species.get_icobase_a(owner), "[icon_name]_[body_hair]") + I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) + I.Blend(IA, ICON_ADD) limb_icon_cache[cache_key] = I mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) @@ -161,10 +163,7 @@ var/global/list/limb_icon_cache = list() if(nonsolid) applying.MapColors("#4D4D4D","#969696","#1C1C1C", "#000000") - if(species && species.get_bodytype(owner) != "Human") - applying.SetIntensity(1.5) // Unathi, Taj and Skrell have -very- dark base icons. - else - applying.SetIntensity(0.7) + applying.SetIntensity(0.7) else if(status & ORGAN_DEAD) icon_cache_key += "_dead" @@ -178,7 +177,12 @@ var/global/list/limb_icon_cache = list() 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]), ICON_ADD) + applying.Blend(rgb(s_col[1], s_col[2], s_col[3]), ICON_MULTIPLY) + var/gender = "f" + if(owner && owner.gender == MALE) + gender = "m" + var/icon_a = new /icon(species.get_icobase_a(owner), "[icon_name][gendered_icon ? "_[gender]" : ""]") + applying.Blend(icon_a, ICON_ADD) icon_cache_key += "_color_[s_col[1]]_[s_col[2]]_[s_col[3]]" // Translucency. diff --git a/icons/effects/species.dmi b/icons/effects/species.dmi index fbd952d333..5b71d3e153 100644 Binary files a/icons/effects/species.dmi and b/icons/effects/species.dmi differ diff --git a/icons/effects/species_a.dmi b/icons/effects/species_a.dmi new file mode 100644 index 0000000000..927ec7c82e Binary files /dev/null and b/icons/effects/species_a.dmi differ diff --git a/icons/mob/human_races/r_def_lizard.dmi b/icons/mob/human_races/r_def_lizard.dmi index 6c1f4d94fc..3ebace3090 100644 Binary files a/icons/mob/human_races/r_def_lizard.dmi and b/icons/mob/human_races/r_def_lizard.dmi differ diff --git a/icons/mob/human_races/r_def_skrell.dmi b/icons/mob/human_races/r_def_skrell.dmi index 7b24ba3b4d..3e6a40f3ae 100644 Binary files a/icons/mob/human_races/r_def_skrell.dmi and b/icons/mob/human_races/r_def_skrell.dmi differ diff --git a/icons/mob/human_races/r_def_tajaran.dmi b/icons/mob/human_races/r_def_tajaran.dmi index 44cda2ea86..64b1a2d30d 100644 Binary files a/icons/mob/human_races/r_def_tajaran.dmi and b/icons/mob/human_races/r_def_tajaran.dmi differ diff --git a/icons/mob/human_races/r_lizard_a.dmi b/icons/mob/human_races/r_lizard_a.dmi new file mode 100644 index 0000000000..94dfe1ed32 Binary files /dev/null and b/icons/mob/human_races/r_lizard_a.dmi differ diff --git a/icons/mob/human_races/r_lizard_m.dmi b/icons/mob/human_races/r_lizard_m.dmi new file mode 100644 index 0000000000..1aeee3a022 Binary files /dev/null and b/icons/mob/human_races/r_lizard_m.dmi differ diff --git a/icons/mob/human_races/r_seromi_a.dmi b/icons/mob/human_races/r_seromi_a.dmi new file mode 100644 index 0000000000..24d49ef1eb Binary files /dev/null and b/icons/mob/human_races/r_seromi_a.dmi differ diff --git a/icons/mob/human_races/r_seromi_m.dmi b/icons/mob/human_races/r_seromi_m.dmi new file mode 100644 index 0000000000..b080124b26 Binary files /dev/null and b/icons/mob/human_races/r_seromi_m.dmi differ diff --git a/icons/mob/human_races/r_skrell_a.dmi b/icons/mob/human_races/r_skrell_a.dmi new file mode 100644 index 0000000000..7da571bf1e Binary files /dev/null and b/icons/mob/human_races/r_skrell_a.dmi differ diff --git a/icons/mob/human_races/r_skrell_m.dmi b/icons/mob/human_races/r_skrell_m.dmi new file mode 100644 index 0000000000..224fb25eae Binary files /dev/null and b/icons/mob/human_races/r_skrell_m.dmi differ diff --git a/icons/mob/human_races/r_tajaran_a.dmi b/icons/mob/human_races/r_tajaran_a.dmi new file mode 100644 index 0000000000..d70bb0b715 Binary files /dev/null and b/icons/mob/human_races/r_tajaran_a.dmi differ diff --git a/icons/mob/human_races/r_tajaran_m.dmi b/icons/mob/human_races/r_tajaran_m.dmi new file mode 100644 index 0000000000..a9d2205828 Binary files /dev/null and b/icons/mob/human_races/r_tajaran_m.dmi differ diff --git a/icons/mob/species/tajaran/tail_a.dmi b/icons/mob/species/tajaran/tail_a.dmi new file mode 100644 index 0000000000..1a4245611b Binary files /dev/null and b/icons/mob/species/tajaran/tail_a.dmi differ diff --git a/icons/mob/species/tajaran/tail_m.dmi b/icons/mob/species/tajaran/tail_m.dmi new file mode 100644 index 0000000000..159ca49b32 Binary files /dev/null and b/icons/mob/species/tajaran/tail_m.dmi differ diff --git a/icons/mob/species/unathi/tail_a.dmi b/icons/mob/species/unathi/tail_a.dmi new file mode 100644 index 0000000000..cf3e861a5d Binary files /dev/null and b/icons/mob/species/unathi/tail_a.dmi differ diff --git a/icons/mob/species/unathi/tail_m.dmi b/icons/mob/species/unathi/tail_m.dmi new file mode 100644 index 0000000000..b944c3e37b Binary files /dev/null and b/icons/mob/species/unathi/tail_m.dmi differ