Ports Cool Stuff from Bastion of Hestia/Vesta

Fully implements DNA-integrated secondary & tertiary colouration for ears, wings and tails.

Adds some new ears, wings, tails and markings from Hestia.

Everything working in mint condition

EVERYTHING
This commit is contained in:
KasparoVy
2020-11-21 14:57:44 -05:00
parent 57315d8913
commit b062575363
14 changed files with 494 additions and 53 deletions
@@ -17,6 +17,9 @@
var/r_ears2 = 30
var/g_ears2 = 30
var/b_ears2 = 30
var/r_ears3 = 30 //Trust me, we could always use more colour. No japes.
var/g_ears3 = 30
var/b_ears3 = 30
var/datum/sprite_accessory/tail/tail_style = null
var/r_tail = 30
var/g_tail = 30
@@ -24,6 +27,9 @@
var/r_tail2 = 30
var/g_tail2 = 30
var/b_tail2 = 30
var/r_tail3 = 30
var/g_tail3 = 30
var/b_tail3 = 30
var/datum/sprite_accessory/wing/wing_style = null
var/r_wing = 30
var/g_wing = 30
@@ -31,6 +37,9 @@
var/r_wing2 = 30
var/g_wing2 = 30
var/b_wing2 = 30
var/r_wing3 = 30
var/g_wing3 = 30
var/b_wing3 = 30
// Custom Species Name
var/custom_species
@@ -28,6 +28,7 @@
var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
var/extra_overlay // Icon state of an additional overlay to blend in.
var/extra_overlay2
var/desc = "You should not see this..."
// Species-unique ears
@@ -608,6 +609,30 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "dragon-horns"
/datum/sprite_accessory/ears/synthhorns_plain
name = "Synth horns, plain"
desc = ""
icon_state = "synthhorns_plain"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "synthhorns_plain_light"
/datum/sprite_accessory/ears/synthhorns_thick
name = "Synth horns, thick"
desc = ""
icon_state = "synthhorns_thick"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "synthhorns_thick_light"
/datum/sprite_accessory/ears/synthhorns_curly
name = "Synth horns, curly"
desc = ""
icon_state = "synthhorns_curled"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/*
////////////////////////////
/ =--------------------= /
@@ -622,11 +647,13 @@
var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
var/extra_overlay // Icon state of an additional overlay to blend in.
var/extra_overlay2 //Tertiary.
var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it. If the clothing is bulky enough to hide a tail, it should also hide wings.
// var/show_species_tail = 1 // Just so // TODO - Seems not needed ~Leshana
var/desc = "You should not see this..."
var/ani_state // State when flapping/animated
var/extra_overlay_w // Flapping state for extra overlay
var/extra_overlay2_w
/datum/sprite_accessory/wing/shock //Unable to split the tail from the wings in the sprite, so let's just classify it as wings.
name = "pharoah hound tail (Shock Diamond)"
@@ -709,6 +736,47 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/wing/harpywings_alt
name = "harpy wings alt, archeopteryx"
desc = ""
icon_state = "harpywings_alt"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "harpywings_altmarkings"
/datum/sprite_accessory/wing/harpywings_alt_neckfur
name = "harpy wings alt, archeopteryx & neckfur"
desc = ""
icon_state = "harpywings_alt"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "harpywings_altmarkings"
extra_overlay2 = "neckfur"
/datum/sprite_accessory/wing/harpywings_bat
name = "harpy wings, bat"
desc = ""
icon_state = "harpywings_bat"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "harpywings_batmarkings"
/datum/sprite_accessory/wing/harpywings_bat_neckfur
name = "harpy wings, bat & neckfur"
desc = ""
icon_state = "harpywings_bat"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "harpywings_batmarkings"
extra_overlay2 = "neckfur"
/datum/sprite_accessory/wing/neckfur
name = "neck fur"
desc = ""
icon_state = "neckfur"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/wing/feathered
name = "feathered wings, colorable"
desc = ""
@@ -793,6 +861,14 @@
icon_state = "cyberdoe_s"
do_colouration = 0
/datum/sprite_accessory/wing/drago_wing
name = "Cybernetic Dragon wings"
desc = ""
icon_state = "drago_wing"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "drago_wing_2"
/*
////////////////////////////
/ =--------------------= /
@@ -807,11 +883,13 @@
var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
var/extra_overlay // Icon state of an additional overlay to blend in.
var/extra_overlay2 //Tertiary.
var/show_species_tail = 0 // If false, do not render species' tail.
var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it
var/desc = "You should not see this..."
var/ani_state // State when wagging/animated
var/extra_overlay_w // Wagging state for extra overlay
var/extra_overlay2_w // Tertiary wagging.
var/list/hide_body_parts = list() //Uses organ tag defines. Bodyparts in this list do not have their icons rendered, allowing for more spriter freedom when doing taur/digitigrade stuff.
var/icon/clip_mask_icon = null //Icon file used for clip mask.
var/clip_mask_state = null //Icon state to generate clip mask. Clip mask is used to 'clip' off the lower part of clothing such as jumpsuits & full suits.
@@ -1810,3 +1888,119 @@
color_blend_mode = ICON_MULTIPLY
extra_overlay = "wardtakahashi_vulp_dc_mark"
/datum/sprite_accessory/tail/Easterntail
name = "Eastern Dragon (Animated)"
desc = ""
icon_state = "Easterntail"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "EasterntailColorTip"
ani_state = "Easterntail_w"
extra_overlay_w = "EasterntailColorTip_w"
/datum/sprite_accessory/tail/synthtail_static
name = "Synthetic lizard tail"
desc = ""
icon_state = "synthtail"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/synthtail_vwag
name = "Synthetic lizard tail (vwag)"
desc = ""
icon_state = "synthtail"
ani_state = "synthtail_w"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/Plugtail
name = "Synthetic plug tail"
desc = ""
icon_state = "Plugtail"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "PlugtailMarking"
extra_overlay2 = "PlugtailMarking2"
/datum/sprite_accessory/tail/Segmentedtail
name = "Segmented tail, animated"
desc = ""
icon_state = "Segmentedtail"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "Segmentedtailmarking"
ani_state = "Segmentedtail_w"
extra_overlay_w = "Segmentedtailmarking_w"
/datum/sprite_accessory/tail/Segmentedlights
name = "Segmented tail, animated synth"
desc = ""
icon_state = "Segmentedtail"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "Segmentedlights"
ani_state = "Segmentedtail_w"
extra_overlay_w = "Segmentedlights_w"
/datum/sprite_accessory/tail/fox_tail
name = "Fox tail"
desc = ""
icon_state = "fox_tail_s"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/fox_tail_plain
name = "Fox tail"
desc = ""
icon_state = "fox_tail_plain_s"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/fennec_tail
name = "Fennec tail"
desc = ""
icon_state = "fennec_tail_s"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/lizard_tail_smooth
name = "Lizard Tail (Smooth)"
desc = ""
icon_state = "lizard_tail_smooth"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/lizard_tail_dark_tiger
name = "Lizard Tail (Dark Tiger)"
desc = ""
icon_state = "lizard_tail_dark_tiger"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/lizard_tail_light_tiger
name = "Lizard Tail (Light Tiger)"
desc = ""
icon_state = "lizard_tail_light_tiger"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/lizard_tail_spiked
name = "Lizard Tail (Spiked)"
desc = ""
icon_state = "lizard_tail_spiked"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/xenotail_fullcolour
name = "xenomorph tail (fully colourable)"
desc = ""
icon_state = "xenotail_fullcolour"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/tail/xenotail_fullcolour
name = "xenomorph tail alt. (fully colourable)"
desc = ""
icon_state = "xenotailalt_fullcolour"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
@@ -5,15 +5,21 @@ var/global/list/wing_icon_cache = list()
var/icon/ears_s = new/icon("icon" = ear_style.icon, "icon_state" = ear_style.icon_state)
if(ear_style.do_colouration)
ears_s.Blend(rgb(src.r_ears, src.g_ears, src.b_ears), ear_style.color_blend_mode)
if(ear_style.extra_overlay)
var/icon/overlay = new/icon("icon" = ear_style.icon, "icon_state" = ear_style.extra_overlay)
overlay.Blend(rgb(src.r_ears2, src.g_ears2, src.b_ears2), ear_style.color_blend_mode)
ears_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
if(ear_style.extra_overlay2) //MORE COLOURS IS BETTERER
var/icon/overlay = new/icon("icon" = ear_style.icon, "icon_state" = ear_style.extra_overlay2)
overlay.Blend(rgb(src.r_ears3, src.g_ears3, src.b_ears3), ear_style.color_blend_mode)
ears_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
return ears_s
return null
/mob/living/carbon/human/proc/get_tail_image()
//If you are FBP with tail style and didn't set a custom one
var/datum/robolimb/model = isSynthetic()
@@ -39,6 +45,18 @@ var/global/list/wing_icon_cache = list()
tail_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
if(tail_style.extra_overlay2)
var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay2)
if(wagging && tail_style.ani_state)
overlay = new/icon("icon" = 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)
else
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)
if(isTaurTail(tail_style))
var/datum/sprite_accessory/tail/taur/taurtype = tail_style
if(taurtype.can_ride && !riding_datum)
@@ -49,3 +67,49 @@ var/global/list/wing_icon_cache = list()
else
return image(tail_s)
return null
/mob/living/carbon/human/proc/get_wing_image()
if(QDESTROYING(src))
return
//If you are FBP with wing style and didn't set a custom one
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)
return image(wing_s)
//If you have custom wings selected
if((wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL)) && !wings_hidden)
var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = flapping && wing_style.ani_state ? wing_style.ani_state : wing_style.icon_state)
if(wing_style.do_colouration)
wing_s.Blend(rgb(src.r_wing, src.g_wing, src.b_wing), wing_style.color_blend_mode)
if(wing_style.extra_overlay)
var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay)
overlay.Blend(rgb(src.r_wing2, src.g_wing2, src.b_wing2), wing_style.color_blend_mode)
wing_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
if(wing_style.extra_overlay2)
var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2)
if(wing_style.ani_state)
overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2_w)
overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode)
wing_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
else
overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode)
wing_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
return image(wing_s)
// TODO - Move this to where it should go ~Leshana
/mob/proc/stop_flying()
if(QDESTROYING(src))
return
flying = FALSE
return 1
/mob/living/carbon/human/stop_flying()
if((. = ..()))
update_wing_showing()