Converts colorable species into the combo blend mode.

-Unathi, Tajaran, Skrell, and Teshari now use mult+add combo blending.
-As do their tails, tail anims, and extra tesh feathers.
-No issues detected on latest test runs.
This commit is contained in:
Verkister
2017-10-31 12:50:15 +02:00
parent ad8a7f4ff0
commit 45f53405fe
23 changed files with 41 additions and 15 deletions
@@ -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.
@@ -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
@@ -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'
@@ -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)
@@ -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
+10 -6
View File
@@ -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.