Adds secondary hair themes, darkens Tajara, fixes Skrell/human sprite issues, Skrell secondary hair-themes, CMA and Morph support and more..

This commit is contained in:
KasparoVy
2016-07-20 15:35:29 -04:00
parent b497aafb90
commit eb4a14cdfb
23 changed files with 251 additions and 131 deletions

View File

@@ -72,10 +72,17 @@
return
var/obj/item/organ/external/head/head_organ = get_organ("head")
if(location == "head" && head_organ.alt_head && head_organ.alt_head != "None")
var/datum/sprite_accessory/body_markings/head/H = marking_styles_list[marking_style]
if(marking.name != "None" && (!H.heads_allowed || !(head_organ.alt_head in H.heads_allowed)))
return
if(location == "head")
if(head_organ.alt_head && head_organ.alt_head != "None")
var/datum/sprite_accessory/body_markings/head/H = marking_styles_list[marking_style]
if(marking.name != "None" && (!H.heads_allowed || !(head_organ.alt_head in H.heads_allowed)))
return
else
if(!head_organ.alt_head || head_organ.alt_head == "None")
head_organ.alt_head = "None"
var/datum/sprite_accessory/body_markings/head/H = marking_styles_list[marking_style]
if(H.heads_allowed )
return
if(location == "tail" && marking.name != "None")
var/datum/sprite_accessory/body_markings/tail/tail_marking = marking_styles_list[marking_style]
@@ -210,38 +217,42 @@
update_body()
return 1
/mob/living/carbon/human/proc/change_hair_color(var/red, var/green, var/blue)
/mob/living/carbon/human/proc/change_hair_color(var/red, var/green, var/blue, var/secondary)
var/obj/item/organ/external/head/H = get_organ("head")
if(red == H.r_hair && green == H.g_hair && blue == H.b_hair)
return
if(!secondary)
if(red == H.r_hair && green == H.g_hair && blue == H.b_hair)
return
H.r_hair = red
H.g_hair = green
H.b_hair = blue
H.r_hair = red
H.g_hair = green
H.b_hair = blue
else
if(red == H.r_hair_sec && green == H.g_hair_sec && blue == H.b_hair_sec)
return
H.r_hair_sec = red
H.g_hair_sec = green
H.b_hair_sec = blue
update_hair()
return 1
/mob/living/carbon/human/proc/change_facial_hair_color(var/red, var/green, var/blue)
/mob/living/carbon/human/proc/change_facial_hair_color(var/red, var/green, var/blue, var/secondary)
var/obj/item/organ/external/head/H = get_organ("head")
if(red == H.r_facial && green == H.g_facial && blue == H.b_facial)
return
if(!secondary)
if(red == H.r_facial && green == H.g_facial && blue == H.b_facial)
return
H.r_facial = red
H.g_facial = green
H.b_facial = blue
H.r_facial = red
H.g_facial = green
H.b_facial = blue
else
if(red == H.r_facial_sec && green == H.g_facial_sec && blue == H.b_facial_sec)
return
update_fhair()
return 1
/mob/living/carbon/human/proc/change_secondary_facial_hair_color(var/red, var/green, var/blue)
var/obj/item/organ/external/head/H = get_organ("head")
if(red == H.r_facial_sec && green == H.g_facial_sec && blue == H.b_facial_sec)
return
H.r_facial_sec = red
H.g_facial_sec = green
H.b_facial_sec = blue
H.r_facial_sec = red
H.g_facial_sec = green
H.b_facial_sec = blue
update_fhair()
return 1

View File

@@ -121,7 +121,7 @@
dietflags = DIET_OMNI
reagent_tag = PROCESS_ORG
flesh_color = "#AFA59E"
base_color = "#333333"
base_color = "#424242"
butt_sprite = "tajaran"
has_organ = list(

View File

@@ -425,15 +425,15 @@ var/global/list/damage_icon_parts = list()
//HAIR OVERLAY
/mob/living/carbon/human/proc/update_hair(var/update_icons=1)
//Reset our hair
overlays_standing[HAIR_LAYER] = null
overlays_standing[HAIR_LAYER] = null
var/obj/item/organ/external/head/head_organ = get_organ("head")
if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED) )
if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED))
if(update_icons) update_icons()
return
//masks and helmets can obscure our hair, unless we're a synthetic
if( (head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)))
if((head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)))
if(update_icons) update_icons()
return
@@ -453,13 +453,19 @@ var/global/list/damage_icon_parts = list()
else if(hair_style.do_colouration)
hair_s.Blend(rgb(head_organ.r_hair, head_organ.g_hair, head_organ.b_hair), ICON_ADD)
if(hair_style.secondary_theme)
var/icon/hair_secondary_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_[hair_style.secondary_theme]_s")
if(!hair_style.no_sec_colour)
hair_secondary_s.Blend(rgb(head_organ.r_hair_sec, head_organ.g_hair_sec, head_organ.b_hair_sec), ICON_ADD)
hair_s.Blend(hair_secondary_s, ICON_OVERLAY)
hair_standing = hair_s //hair_standing.Blend(hair_s, ICON_OVERLAY)
//Having it this way preserves animations. Useful for IPC screens.
else
//warning("Invalid h_style for [species.name]: [h_style]")
//hair_standing.Blend(debrained_s, ICON_OVERLAY)//how does i overlay for fish?
overlays_standing[HAIR_LAYER] = image(hair_standing)
overlays_standing[HAIR_LAYER] = image(hair_standing)
if(update_icons) update_icons()
@@ -467,7 +473,7 @@ var/global/list/damage_icon_parts = list()
//FACIAL HAIR OVERLAY
/mob/living/carbon/human/proc/update_fhair(var/update_icons=1)
//Reset our facial hair
overlays_standing[FHAIR_LAYER] = null
overlays_standing[FHAIR_LAYER] = null
var/obj/item/organ/external/head/head_organ = get_organ("head")
if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED))
@@ -492,16 +498,17 @@ var/global/list/damage_icon_parts = list()
else if(facial_hair_style.do_colouration)
facial_s.Blend(rgb(head_organ.r_facial, head_organ.g_facial, head_organ.b_facial), ICON_ADD)
if(facial_hair_style.secondary_colour)
var/icon/facial_secondary_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_[facial_hair_style.secondary_colour]_s")
facial_secondary_s.Blend(rgb(head_organ.r_facial_sec, head_organ.g_facial_sec, head_organ.b_facial_sec), ICON_ADD)
if(facial_hair_style.secondary_theme)
var/icon/facial_secondary_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_[facial_hair_style.secondary_theme]_s")
if(!facial_hair_style.no_sec_colour)
facial_secondary_s.Blend(rgb(head_organ.r_facial_sec, head_organ.g_facial_sec, head_organ.b_facial_sec), ICON_ADD)
facial_s.Blend(facial_secondary_s, ICON_OVERLAY)
face_standing.Blend(facial_s, ICON_OVERLAY)
else
//warning("Invalid f_style for [species.name]: [f_style]")
overlays_standing[FHAIR_LAYER] = image(face_standing)
overlays_standing[FHAIR_LAYER] = image(face_standing)
if(update_icons) update_icons()

View File

@@ -321,6 +321,13 @@
hair_s.Blend(rgb(r_skin, g_skin, b_skin, 160), ICON_ADD)
else
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
if(hair_style.secondary_theme)
var/icon/hair_secondary_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_[hair_style.secondary_theme]_s")
if(!hair_style.no_sec_colour)
hair_secondary_s.Blend(rgb(r_hair_sec, g_hair_sec, b_hair_sec), ICON_ADD)
hair_s.Blend(hair_secondary_s, ICON_OVERLAY)
face_s.Blend(hair_s, ICON_OVERLAY)
//Head Accessory
@@ -339,9 +346,10 @@
else
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
if(facial_hair_style.secondary_colour)
var/icon/facial_secondary_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_[facial_hair_style.secondary_colour]_s")
facial_secondary_s.Blend(rgb(r_facial_sec, g_facial_sec, b_facial_sec), ICON_ADD)
if(facial_hair_style.secondary_theme)
var/icon/facial_secondary_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_[facial_hair_style.secondary_theme]_s")
if(!facial_hair_style.no_sec_colour)
facial_secondary_s.Blend(rgb(r_facial_sec, g_facial_sec, b_facial_sec), ICON_ADD)
facial_s.Blend(facial_secondary_s, ICON_OVERLAY)
face_s.Blend(facial_s, ICON_OVERLAY)

View File

@@ -47,7 +47,8 @@
var/list/heads_allowed = null //Specifies which, if any, alt heads a head marking, hairstyle or facial hair style is compatible with.
var/list/tails_allowed = null //Specifies which, if any, tails a tail marking is compatible with.
var/marking_location //Specifies which bodypart a body marking is located on.
var/secondary_colour = null //If exists, there's a secondary colour to that hair style and the secondary colour's icon state's suffix is equal to this.
var/secondary_theme = null //If exists, there's a secondary colour to that hair style and the secondary theme's icon state's suffix is equal to this.
var/no_sec_colour = null //If exists, prohibit the colouration of the secondary theme.
// Whether or not the accessory can be affected by colouration
var/do_colouration = 1
@@ -203,10 +204,18 @@
icon_state = "hair_hbraid"
gender = FEMALE
braid3
braid_hip
name = "Hippie Braid"
icon_state = "hair_hipbraid"
species_allowed = list("Human")
secondary_theme = "beads"
braid_hip_una
name = "Unathi Hippie Braid"
icon_state = "hair_ubraid"
species_allowed = list("Human", "Unathi")
species_allowed = list("Unathi")
secondary_theme = "beads"
buzz
name = "Buzzcut"
@@ -697,27 +706,34 @@
skr_gold_m
name = "Gold plated Skrell Male Tentacles"
icon_state = "skrell_goldhair_m"
icon_state = "skrell_hair_m"
species_allowed = list("Skrell")
gender = MALE
secondary_theme = "gold"
no_sec_colour = 1
skr_gold_f
name = "Gold chained Skrell Female Tentacles"
icon_state = "skrell_goldhair_f"
icon_state = "skrell_hair_f"
species_allowed = list("Skrell")
gender = FEMALE
secondary_theme = "gold"
no_sec_colour = 1
skr_clothtentacle_m
name = "Cloth draped Skrell Male Tentacles"
icon_state = "skrell_clothhair_m"
icon_state = "skrell_hair_m"
species_allowed = list("Skrell")
gender = MALE
secondary_theme = "cloth"
skr_clothtentacle_f
name = "Cloth draped Skrell Female Tentacles"
icon_state = "skrell_clothhair_f"
icon_state = "skrell_hair_f"
species_allowed = list("Skrell")
gender = FEMALE
secondary_theme = "cloth"
taj_hair_clean
name = "Tajara Clean"
@@ -733,6 +749,7 @@
name = "Tajara Braid"
icon_state = "hair_tbraid"
species_allowed = list("Tajaran")
secondary_theme = "beads"
taj_hair_shaggy
name = "Tajara Shaggy"
@@ -874,6 +891,7 @@
name = "Braided"
icon_state = "braided"
species_allowed = list("Vulpkanin")
secondary_theme = "beads"
//Vox
@@ -1130,21 +1148,21 @@
name = "Aquatic Webbed Frills"
icon_state = "soghun_aquaticfrills"
species_allowed = list("Unathi")
secondary_colour = "webbing"
secondary_theme = "webbing"
gender = NEUTER
una_frills_webbed_long
name = "Long Webbed Frills"
icon_state = "soghun_longfrills"
species_allowed = list("Unathi")
secondary_colour = "webbing"
secondary_theme = "webbing"
gender = NEUTER
una_frills_webbed_short
name = "Short Webbed Frills"
icon_state = "soghun_shortfrills"
species_allowed = list("Unathi")
secondary_colour = "webbing"
secondary_theme = "webbing"
gender = NEUTER