mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
Converts Mob Colours to Hexadecimal
No front-end changes. This just means that mob colours now take up less columns in the database, incur less processing (reduced rgb() calls) and reduces the amount of code dedicated to them.
This commit is contained in:
@@ -884,9 +884,16 @@ proc/sort_atoms_by_layer(var/list/atoms)
|
||||
icon = J
|
||||
return J
|
||||
return 0
|
||||
|
||||
|
||||
//Hook, override to run code on- wait this is images
|
||||
//Images have dir without being an atom, so they get their own definition.
|
||||
//Lame.
|
||||
/image/proc/setDir(newdir)
|
||||
dir = newdir
|
||||
|
||||
proc/rand_hex_color()
|
||||
var/list/colors = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f")
|
||||
var/color=""
|
||||
for(var/i=0;i<6;i++)
|
||||
color = color+pick(colors)
|
||||
return "#[color]"
|
||||
|
||||
+10
-13
@@ -384,7 +384,7 @@ var/record_id_num = 1001
|
||||
|
||||
// Proper Skin color - Fix, you can't have HAS_SKIN_TONE *and* HAS_SKIN_COLOR
|
||||
if(H.species.bodyflags & HAS_SKIN_COLOR)
|
||||
preview_icon.Blend(rgb(H.r_skin, H.g_skin, H.b_skin), ICON_ADD)
|
||||
preview_icon.Blend(H.skin_colour, ICON_ADD)
|
||||
|
||||
//Tail Markings
|
||||
var/icon/t_marking_s
|
||||
@@ -402,10 +402,7 @@ var/record_id_num = 1001
|
||||
var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s")
|
||||
if(!eyes_organ)
|
||||
return
|
||||
var/eye_red = eyes_organ.eye_colour[1]
|
||||
var/eye_green = eyes_organ.eye_colour[2]
|
||||
var/eye_blue = eyes_organ.eye_colour[3]
|
||||
eyes_s.Blend(rgb(eye_red, eye_green, eye_blue), ICON_ADD)
|
||||
eyes_s.Blend(eyes_organ.eye_colour, ICON_ADD)
|
||||
face_s.Blend(eyes_s, ICON_OVERLAY)
|
||||
|
||||
var/datum/sprite_accessory/hair_style = hair_styles_list[head_organ.h_style]
|
||||
@@ -414,14 +411,14 @@ var/record_id_num = 1001
|
||||
// I'll want to make a species-specific proc for this sooner or later
|
||||
// But this'll do for now
|
||||
if(head_organ.species.name == "Slime People")
|
||||
hair_s.Blend(rgb(H.r_skin, H.g_skin, H.b_skin, 160), ICON_AND)
|
||||
hair_s.Blend("[H.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
|
||||
else
|
||||
hair_s.Blend(rgb(head_organ.r_hair, head_organ.g_hair, head_organ.b_hair), ICON_ADD)
|
||||
hair_s.Blend(head_organ.hair_colour, 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_secondary_s.Blend(head_organ.sec_hair_colour, ICON_ADD)
|
||||
hair_s.Blend(hair_secondary_s, ICON_OVERLAY)
|
||||
|
||||
face_s.Blend(hair_s, ICON_OVERLAY)
|
||||
@@ -431,21 +428,21 @@ var/record_id_num = 1001
|
||||
var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[head_organ.ha_style]
|
||||
if(head_accessory_style && head_accessory_style.species_allowed)
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
head_accessory_s.Blend(rgb(head_organ.r_headacc, head_organ.g_headacc, head_organ.b_headacc), ICON_ADD)
|
||||
head_accessory_s.Blend(head_organ.headacc_colour, ICON_ADD)
|
||||
face_s.Blend(head_accessory_s, ICON_OVERLAY)
|
||||
|
||||
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[head_organ.f_style]
|
||||
if(facial_hair_style && facial_hair_style.species_allowed)
|
||||
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
if(head_organ.species.name == "Slime People")
|
||||
facial_s.Blend(rgb(H.r_skin, H.g_skin, H.b_skin, 160), ICON_ADD)
|
||||
facial_s.Blend("[H.skin_colour]A0", ICON_ADD) //A0 = 160 alpha.
|
||||
else
|
||||
facial_s.Blend(rgb(head_organ.r_facial, head_organ.g_facial, head_organ.b_facial), ICON_ADD)
|
||||
facial_s.Blend(head_organ.facial_colour, 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_secondary_s.Blend(head_organ.sec_facial_colour, ICON_ADD)
|
||||
facial_s.Blend(facial_secondary_s, ICON_OVERLAY)
|
||||
|
||||
face_s.Blend(facial_s, ICON_OVERLAY)
|
||||
@@ -614,7 +611,7 @@ var/record_id_num = 1001
|
||||
if(H.body_accessory.pixel_y_offset)
|
||||
temp.Shift(NORTH, H.body_accessory.pixel_y_offset)
|
||||
if(H.species.bodyflags & HAS_SKIN_COLOR)
|
||||
temp.Blend(rgb(H.r_skin, H.g_skin, H.b_skin), H.body_accessory.blend_mode)
|
||||
temp.Blend(H.skin_colour, H.body_accessory.blend_mode)
|
||||
if(t_marking_s)
|
||||
temp.Blend(t_marking_s, ICON_OVERLAY)
|
||||
preview_icon.Blend(temp, ICON_OVERLAY)
|
||||
|
||||
@@ -159,9 +159,9 @@ var/global/list/bad_blocks[0]
|
||||
head_traits_to_dna(H)
|
||||
eye_color_to_dna(eyes_organ)
|
||||
|
||||
SetUIValueRange(DNA_UI_SKIN_R, character.r_skin, 255, 1)
|
||||
SetUIValueRange(DNA_UI_SKIN_G, character.g_skin, 255, 1)
|
||||
SetUIValueRange(DNA_UI_SKIN_B, character.b_skin, 255, 1)
|
||||
SetUIValueRange(DNA_UI_SKIN_R, color2R(character.skin_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_SKIN_G, color2G(character.skin_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_SKIN_B, color2B(character.skin_colour), 255, 1)
|
||||
|
||||
SetUIValueRange(DNA_UI_HEAD_MARK_R, color2R(character.m_colours["head"]), 255, 1)
|
||||
SetUIValueRange(DNA_UI_HEAD_MARK_G, color2G(character.m_colours["head"]), 255, 1)
|
||||
|
||||
@@ -140,9 +140,7 @@
|
||||
dna.write_eyes_attributes(eye_organ)
|
||||
H.update_eyes()
|
||||
|
||||
H.r_skin = dna.GetUIValueRange(DNA_UI_SKIN_R, 255)
|
||||
H.g_skin = dna.GetUIValueRange(DNA_UI_SKIN_G, 255)
|
||||
H.b_skin = dna.GetUIValueRange(DNA_UI_SKIN_B, 255)
|
||||
H.skin_colour = rgb(dna.GetUIValueRange(DNA_UI_SKIN_R, 255), dna.GetUIValueRange(DNA_UI_SKIN_G, 255), dna.GetUIValueRange(DNA_UI_SKIN_B, 255))
|
||||
|
||||
H.m_colours["head"] = rgb(dna.GetUIValueRange(DNA_UI_HEAD_MARK_R, 255), dna.GetUIValueRange(DNA_UI_HEAD_MARK_G, 255), dna.GetUIValueRange(DNA_UI_HEAD_MARK_B, 255))
|
||||
H.m_colours["body"] = rgb(dna.GetUIValueRange(DNA_UI_BODY_MARK_R, 255), dna.GetUIValueRange(DNA_UI_BODY_MARK_G, 255), dna.GetUIValueRange(DNA_UI_BODY_MARK_B, 255))
|
||||
@@ -191,43 +189,27 @@
|
||||
if((hair > 0) && (hair <= hair_styles_list.len))
|
||||
head_organ.h_style = hair_styles_list[hair]
|
||||
|
||||
head_organ.r_hair = GetUIValueRange(DNA_UI_HAIR_R, 255)
|
||||
head_organ.g_hair = GetUIValueRange(DNA_UI_HAIR_G, 255)
|
||||
head_organ.b_hair = GetUIValueRange(DNA_UI_HAIR_B, 255)
|
||||
|
||||
head_organ.r_hair_sec = GetUIValueRange(DNA_UI_HAIR2_R, 255)
|
||||
head_organ.g_hair_sec = GetUIValueRange(DNA_UI_HAIR2_G, 255)
|
||||
head_organ.b_hair_sec = GetUIValueRange(DNA_UI_HAIR2_B, 255)
|
||||
head_organ.hair_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_B, 255))
|
||||
head_organ.sec_hair_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_B, 255))
|
||||
|
||||
//Facial Hair
|
||||
var/beard = GetUIValueRange(DNA_UI_BEARD_STYLE,facial_hair_styles_list.len)
|
||||
if((beard > 0) && (beard <= facial_hair_styles_list.len))
|
||||
head_organ.f_style = facial_hair_styles_list[beard]
|
||||
|
||||
head_organ.r_facial = GetUIValueRange(DNA_UI_BEARD_R, 255)
|
||||
head_organ.g_facial = GetUIValueRange(DNA_UI_BEARD_G, 255)
|
||||
head_organ.b_facial = GetUIValueRange(DNA_UI_BEARD_B, 255)
|
||||
|
||||
head_organ.r_facial_sec = GetUIValueRange(DNA_UI_BEARD2_R, 255)
|
||||
head_organ.g_facial_sec = GetUIValueRange(DNA_UI_BEARD2_G, 255)
|
||||
head_organ.b_facial_sec = GetUIValueRange(DNA_UI_BEARD2_B, 255)
|
||||
head_organ.facial_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_BEARD_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_BEARD_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_BEARD_B, 255))
|
||||
head_organ.sec_facial_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_BEARD2_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_BEARD2_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_BEARD2_B, 255))
|
||||
|
||||
//Head Accessories
|
||||
var/headacc = GetUIValueRange(DNA_UI_HACC_STYLE,head_accessory_styles_list.len)
|
||||
if((headacc > 0) && (headacc <= head_accessory_styles_list.len))
|
||||
head_organ.ha_style = head_accessory_styles_list[headacc]
|
||||
|
||||
head_organ.r_headacc = GetUIValueRange(DNA_UI_HACC_R, 255)
|
||||
head_organ.g_headacc = GetUIValueRange(DNA_UI_HACC_G, 255)
|
||||
head_organ.b_headacc = GetUIValueRange(DNA_UI_HACC_B, 255)
|
||||
head_organ.headacc_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HACC_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HACC_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HACC_B, 255))
|
||||
|
||||
// This proc gives the DNA info for eye color to the given eyes
|
||||
/datum/dna/proc/write_eyes_attributes(obj/item/organ/internal/eyes/eyes_organ)
|
||||
var/red = GetUIValueRange(DNA_UI_EYES_R, 255)
|
||||
var/green = GetUIValueRange(DNA_UI_EYES_G, 255)
|
||||
var/blue = GetUIValueRange(DNA_UI_EYES_B, 255)
|
||||
if(eyes_organ)
|
||||
eyes_organ.eye_colour = list(red, green, blue)
|
||||
eyes_organ.eye_colour = rgb(eyes_organ.dna.GetUIValueRange(DNA_UI_EYES_R, 255), eyes_organ.dna.GetUIValueRange(DNA_UI_EYES_G, 255), eyes_organ.dna.GetUIValueRange(DNA_UI_EYES_B, 255))
|
||||
|
||||
/*
|
||||
TRAIT CHANGING PROCS
|
||||
@@ -237,50 +219,47 @@
|
||||
// In absence of eyes, possibly randomize the eye color DNA?
|
||||
return
|
||||
|
||||
var/eye_red = eyes_organ.eye_colour[1]
|
||||
var/eye_green = eyes_organ.eye_colour[2]
|
||||
var/eye_blue = eyes_organ.eye_colour[3]
|
||||
SetUIValueRange(DNA_UI_EYES_R, eye_red, 255, 1)
|
||||
SetUIValueRange(DNA_UI_EYES_G, eye_green, 255, 1)
|
||||
SetUIValueRange(DNA_UI_EYES_B, eye_blue, 255, 1)
|
||||
SetUIValueRange(DNA_UI_EYES_R, color2R(eyes_organ.eye_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_EYES_G, color2G(eyes_organ.eye_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_EYES_B, color2B(eyes_organ.eye_colour), 255, 1)
|
||||
|
||||
/datum/dna/proc/head_traits_to_dna(obj/item/organ/external/head/H)
|
||||
if(!H)
|
||||
/datum/dna/proc/head_traits_to_dna(obj/item/organ/external/head/head_organ)
|
||||
if(!head_organ)
|
||||
log_runtime(EXCEPTION("Attempting to reset DNA from a missing head!"), src)
|
||||
return
|
||||
if(!H.h_style)
|
||||
H.h_style = "Skinhead"
|
||||
var/hair = hair_styles_list.Find(H.h_style)
|
||||
if(!head_organ.h_style)
|
||||
head_organ.h_style = "Skinhead"
|
||||
var/hair = hair_styles_list.Find(head_organ.h_style)
|
||||
|
||||
// Facial Hair
|
||||
if(!H.f_style)
|
||||
H.f_style = "Shaved"
|
||||
var/beard = facial_hair_styles_list.Find(H.f_style)
|
||||
if(!head_organ.f_style)
|
||||
head_organ.f_style = "Shaved"
|
||||
var/beard = facial_hair_styles_list.Find(head_organ.f_style)
|
||||
|
||||
// Head Accessory
|
||||
if(!H.ha_style)
|
||||
H.ha_style = "None"
|
||||
var/headacc = head_accessory_styles_list.Find(H.ha_style)
|
||||
if(!head_organ.ha_style)
|
||||
head_organ.ha_style = "None"
|
||||
var/headacc = head_accessory_styles_list.Find(head_organ.ha_style)
|
||||
|
||||
SetUIValueRange(DNA_UI_HAIR_R, H.r_hair, 255, 1)
|
||||
SetUIValueRange(DNA_UI_HAIR_G, H.g_hair, 255, 1)
|
||||
SetUIValueRange(DNA_UI_HAIR_B, H.b_hair, 255, 1)
|
||||
SetUIValueRange(DNA_UI_HAIR_R, color2R(head_organ.hair_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_HAIR_G, color2G(head_organ.hair_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_HAIR_B, color2B(head_organ.hair_colour), 255, 1)
|
||||
|
||||
SetUIValueRange(DNA_UI_HAIR2_R, H.r_hair_sec, 255, 1)
|
||||
SetUIValueRange(DNA_UI_HAIR2_G, H.g_hair_sec, 255, 1)
|
||||
SetUIValueRange(DNA_UI_HAIR2_B, H.b_hair_sec, 255, 1)
|
||||
SetUIValueRange(DNA_UI_HAIR2_R, color2R(head_organ.sec_hair_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_HAIR2_G, color2G(head_organ.sec_hair_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_HAIR2_B, color2B(head_organ.sec_hair_colour), 255, 1)
|
||||
|
||||
SetUIValueRange(DNA_UI_BEARD_R, H.r_facial, 255, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD_G, H.g_facial, 255, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD_B, H.b_facial, 255, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD_R, color2R(head_organ.facial_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD_G, color2G(head_organ.facial_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD_B, color2B(head_organ.facial_colour), 255, 1)
|
||||
|
||||
SetUIValueRange(DNA_UI_BEARD2_R, H.r_facial_sec, 255, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD2_G, H.g_facial_sec, 255, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD2_B, H.b_facial_sec, 255, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD2_R, color2R(head_organ.sec_facial_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD2_G, color2G(head_organ.sec_facial_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD2_B, color2B(head_organ.sec_facial_colour), 255, 1)
|
||||
|
||||
SetUIValueRange(DNA_UI_HACC_R, H.r_headacc, 255, 1)
|
||||
SetUIValueRange(DNA_UI_HACC_G, H.g_headacc, 255, 1)
|
||||
SetUIValueRange(DNA_UI_HACC_B, H.b_headacc, 255, 1)
|
||||
SetUIValueRange(DNA_UI_HACC_R, color2R(head_organ.headacc_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_HACC_G, color2G(head_organ.headacc_colour), 255, 1)
|
||||
SetUIValueRange(DNA_UI_HACC_B, color2B(head_organ.headacc_colour), 255, 1)
|
||||
|
||||
SetUIValueRange(DNA_UI_HAIR_STYLE, hair, hair_styles_list.len, 1)
|
||||
SetUIValueRange(DNA_UI_BEARD_STYLE, beard, facial_hair_styles_list.len, 1)
|
||||
|
||||
@@ -45,16 +45,9 @@
|
||||
else
|
||||
M.change_gender(FEMALE)
|
||||
|
||||
var/eyes_red = 0
|
||||
var/eyes_green = 0
|
||||
var/eyes_blue = 0
|
||||
if(eyes_organ)
|
||||
eyes_red = eyes_organ.eye_colour[1]
|
||||
eyes_green = eyes_organ.eye_colour[2]
|
||||
eyes_blue = eyes_organ.eye_colour[3]
|
||||
var/new_eyes = input("Please select eye color.", "Character Generation", rgb(eyes_red,eyes_green,eyes_blue)) as null|color
|
||||
var/new_eyes = input("Please select eye color.", "Character Generation", eyes_organ.eye_colour) as null|color
|
||||
if(new_eyes)
|
||||
M.change_eye_color(color2R(new_eyes), color2G(new_eyes), color2B(new_eyes))
|
||||
M.change_eye_color(new_eyes)
|
||||
|
||||
//Alt heads.
|
||||
if(head_organ.species.bodyflags & HAS_ALT_HEADS)
|
||||
@@ -71,15 +64,15 @@
|
||||
if(new_style)
|
||||
M.change_hair(new_style)
|
||||
|
||||
var/new_hair = input("Please select hair color.", "Character Generation", rgb(head_organ.r_hair, head_organ.g_hair, head_organ.b_hair)) as null|color
|
||||
var/new_hair = input("Please select hair color.", "Character Generation", head_organ.hair_colour) as null|color
|
||||
if(new_hair)
|
||||
M.change_hair_color(color2R(new_hair), color2G(new_hair), color2B(new_hair))
|
||||
M.change_hair_color(new_hair)
|
||||
|
||||
var/datum/sprite_accessory/hair_style = hair_styles_list[head_organ.h_style]
|
||||
if(hair_style.secondary_theme && !hair_style.no_sec_colour)
|
||||
new_hair = input("Please select secondary hair color.", "Character Generation", rgb(head_organ.r_hair_sec, head_organ.g_hair_sec, head_organ.b_hair_sec)) as null|color
|
||||
new_hair = input("Please select secondary hair color.", "Character Generation", head_organ.sec_hair_colour) as null|color
|
||||
if(new_hair)
|
||||
M.change_hair_color(color2R(new_hair), color2G(new_hair), color2B(new_hair), 1)
|
||||
M.change_hair_color(new_hair, 1)
|
||||
|
||||
// facial hair
|
||||
var/list/valid_facial_hairstyles = M.generate_valid_facial_hairstyles()
|
||||
@@ -88,15 +81,15 @@
|
||||
if(new_style)
|
||||
M.change_facial_hair(new_style)
|
||||
|
||||
var/new_facial = input("Please select facial hair color.", "Character Generation", rgb(head_organ.r_facial, head_organ.g_facial, head_organ.b_facial)) as null|color
|
||||
var/new_facial = input("Please select facial hair color.", "Character Generation", head_organ.facial_colour) as null|color
|
||||
if(new_facial)
|
||||
M.change_facial_hair_color(color2R(new_facial), color2G(new_facial), color2B(new_facial))
|
||||
M.change_facial_hair_color(new_facial)
|
||||
|
||||
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[head_organ.f_style]
|
||||
if(facial_hair_style.secondary_theme && !facial_hair_style.no_sec_colour)
|
||||
new_facial = input("Please select secondary facial hair color.", "Character Generation", rgb(head_organ.r_facial_sec, head_organ.g_facial_sec, head_organ.b_facial_sec)) as null|color
|
||||
new_facial = input("Please select secondary facial hair color.", "Character Generation", head_organ.sec_facial_colour) as null|color
|
||||
if(new_facial)
|
||||
M.change_facial_hair_color(color2R(new_facial), color2G(new_facial), color2B(new_facial), 1)
|
||||
M.change_facial_hair_color(new_facial, 1)
|
||||
|
||||
//Head accessory.
|
||||
if(head_organ.species.bodyflags & HAS_HEAD_ACCESSORY)
|
||||
@@ -105,9 +98,9 @@
|
||||
if(new_head_accessory)
|
||||
M.change_head_accessory(new_head_accessory)
|
||||
|
||||
var/new_head_accessory_colour = input("Please select head accessory colour.", "Character Generation", rgb(head_organ.r_headacc, head_organ.g_headacc, head_organ.b_headacc)) as null|color
|
||||
var/new_head_accessory_colour = input("Please select head accessory colour.", "Character Generation", head_organ.headacc_colour) as null|color
|
||||
if(new_head_accessory_colour)
|
||||
M.change_head_accessory_color(color2R(new_head_accessory_colour), color2G(new_head_accessory_colour), color2B(new_head_accessory_colour))
|
||||
M.change_head_accessory_color(new_head_accessory_colour)
|
||||
|
||||
//Body accessory.
|
||||
if(M.species.tail && M.species.bodyflags & HAS_TAIL)
|
||||
@@ -174,9 +167,9 @@
|
||||
|
||||
//Skin colour.
|
||||
if(M.species.bodyflags & HAS_SKIN_COLOR)
|
||||
var/new_body_colour = input("Please select body colour.", "Character Generation", rgb(M.r_skin, M.g_skin, M.b_skin)) as null|color
|
||||
var/new_body_colour = input("Please select body colour.", "Character Generation", M.skin_colour) as null|color
|
||||
if(new_body_colour)
|
||||
M.change_skin_color(color2R(new_body_colour), color2G(new_body_colour), color2B(new_body_colour))
|
||||
M.change_skin_color(new_body_colour)
|
||||
|
||||
M.update_dna()
|
||||
|
||||
|
||||
@@ -153,13 +153,11 @@ proc/issyndicate(mob/living/M as mob)
|
||||
var/hair_c = pick("#8B4513","#000000","#FF4500","#FFD700") // Brown, black, red, blonde
|
||||
var/eye_c = pick("#000000","#8B4513","1E90FF") // Black, brown, blue
|
||||
var/skin_tone = pick(-50, -30, -10, 0, 0, 0, 10) // Caucasian/black
|
||||
head_organ.r_facial = color2R(hair_c)
|
||||
head_organ.g_facial = color2G(hair_c)
|
||||
head_organ.b_facial = color2B(hair_c)
|
||||
head_organ.r_hair = color2R(hair_c)
|
||||
head_organ.g_hair = color2G(hair_c)
|
||||
head_organ.b_hair = color2B(hair_c)
|
||||
M.change_eye_color(color2R(eye_c), color2G(eye_c), color2B(eye_c))
|
||||
head_organ.facial_colour = hair_c
|
||||
head_organ.sec_facial_colour = hair_c
|
||||
head_organ.hair_colour = hair_c
|
||||
head_organ.sec_hair_colour = hair_c
|
||||
M.change_eye_color(eye_c)
|
||||
M.s_tone = skin_tone
|
||||
head_organ.h_style = random_hair_style(M.gender, head_organ.species.name)
|
||||
head_organ.f_style = random_facial_hair_style(M.gender, head_organ.species.name)
|
||||
|
||||
@@ -143,12 +143,3 @@ obj/mecha/combat/honker/Topic(href, href_list)
|
||||
if("sadtrombone")
|
||||
playsound(src, 'sound/misc/sadtrombone.ogg', 50)
|
||||
return
|
||||
|
||||
proc/rand_hex_color()
|
||||
var/list/colors = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f")
|
||||
var/color=""
|
||||
for(var/i=0;i<6;i++)
|
||||
color = color+pick(colors)
|
||||
return color
|
||||
|
||||
|
||||
|
||||
@@ -167,13 +167,11 @@ var/ert_request_answered = 0
|
||||
var/eye_c = pick("#000000","#8B4513","1E90FF") // Black, brown, blue
|
||||
var/skin_tone = pick(-50, -30, -10, 0, 0, 0, 10) // Caucasian/black
|
||||
|
||||
head_organ.r_facial = color2R(hair_c)
|
||||
head_organ.g_facial = color2G(hair_c)
|
||||
head_organ.b_facial = color2B(hair_c)
|
||||
head_organ.r_hair = color2R(hair_c)
|
||||
head_organ.g_hair = color2G(hair_c)
|
||||
head_organ.b_hair = color2B(hair_c)
|
||||
M.change_eye_color(color2R(eye_c), color2G(eye_c), color2B(eye_c))
|
||||
head_organ.facial_colour = hair_c
|
||||
head_organ.sec_facial_colour = hair_c
|
||||
head_organ.hair_colour = hair_c
|
||||
head_organ.sec_hair_colour = hair_c
|
||||
M.change_eye_color(eye_c)
|
||||
M.s_tone = skin_tone
|
||||
head_organ.h_style = random_hair_style(M.gender, head_organ.species.name)
|
||||
head_organ.f_style = random_facial_hair_style(M.gender, head_organ.species.name)
|
||||
|
||||
@@ -112,9 +112,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
var/socks = "Nude" //socks type
|
||||
var/backbag = GBACKPACK //backpack type
|
||||
var/ha_style = "None" //Head accessory style
|
||||
var/r_headacc = 0 //Head accessory colour
|
||||
var/g_headacc = 0 //Head accessory colour
|
||||
var/b_headacc = 0 //Head accessory colour
|
||||
var/hacc_colour = "#000000" //Head accessory colour
|
||||
var/list/m_styles = list(
|
||||
"head" = "None",
|
||||
"body" = "None",
|
||||
@@ -126,26 +124,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
"tail" = "#000000"
|
||||
) //Marking colours.
|
||||
var/h_style = "Bald" //Hair type
|
||||
var/r_hair = 0 //Hair color
|
||||
var/g_hair = 0 //Hair color
|
||||
var/b_hair = 0 //Hair color
|
||||
var/r_hair_sec = 0 //Secondary hair color
|
||||
var/g_hair_sec = 0 //Secondary hair color
|
||||
var/b_hair_sec = 0 //Secondary hair color
|
||||
var/h_colour = "#000000" //Hair color
|
||||
var/h_sec_colour = "#000000" //Secondary hair color
|
||||
var/f_style = "Shaved" //Facial hair type
|
||||
var/r_facial = 0 //Facial hair color
|
||||
var/g_facial = 0 //Facial hair color
|
||||
var/b_facial = 0 //Facial hair color
|
||||
var/r_facial_sec = 0 //Secondary facial hair color
|
||||
var/g_facial_sec = 0 //Secondary facial hair color
|
||||
var/b_facial_sec = 0 //Secondary facial hair color
|
||||
var/f_colour = "#000000" //Facial hair color
|
||||
var/f_sec_colour = "#000000" //Secondary facial hair color
|
||||
var/s_tone = 0 //Skin tone
|
||||
var/r_skin = 0 //Skin color
|
||||
var/g_skin = 0 //Skin color
|
||||
var/b_skin = 0 //Skin color
|
||||
var/r_eyes = 0 //Eye color
|
||||
var/g_eyes = 0 //Eye color
|
||||
var/b_eyes = 0 //Eye color
|
||||
var/s_colour = "#000000" //Skin color
|
||||
var/e_colour = "#000000" //Eye color
|
||||
var/alt_head = "None" //Alt head style.
|
||||
var/species = "Human"
|
||||
var/language = "None" //Secondary language
|
||||
@@ -241,8 +227,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
save_preferences(C)
|
||||
save_character(C) //let's save this new random character so it doesn't keep generating new ones.
|
||||
|
||||
/datum/preferences/proc/color_square(r, g, b)
|
||||
return "<span style='font-face: fixedsys; background-color: #[num2hex(r, 2)][num2hex(g, 2)][num2hex(b, 2)]; color: #[num2hex(r, 2)][num2hex(g, 2)][num2hex(b, 2)]'>___</span>"
|
||||
/datum/preferences/proc/color_square(colour)
|
||||
return "<span style='font-face: fixedsys; background-color: [colour]; color: [colour]'>___</span>"
|
||||
|
||||
// Hello I am a proc full of snowflake species checks how are you
|
||||
/datum/preferences/proc/ShowChoices(mob/user)
|
||||
@@ -319,45 +305,45 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
headaccessoryname = "Horns: "
|
||||
dat += "<b>[headaccessoryname]</b>"
|
||||
dat += "<a href='?_src_=prefs;preference=ha_style;task=input'>[ha_style]</a> "
|
||||
dat += "<a href='?_src_=prefs;preference=headaccessory;task=input'>Color</a> [color_square(r_headacc, g_headacc, b_headacc)]<br>"
|
||||
dat += "<a href='?_src_=prefs;preference=headaccessory;task=input'>Color</a> [color_square(hacc_colour)]<br>"
|
||||
|
||||
if(S.bodyflags & HAS_HEAD_MARKINGS) //Species with head markings.
|
||||
dat += "<b>Head Markings:</b> "
|
||||
dat += "<a href='?_src_=prefs;preference=m_style_head;task=input'>[m_styles["head"]]</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=m_head_colour;task=input'>Color</a> [color_square(color2R(m_colours["head"]), color2G(m_colours["head"]), color2B(m_colours["head"]))]<br>"
|
||||
dat += "<a href='?_src_=prefs;preference=m_head_colour;task=input'>Color</a> [color_square(m_colours["head"])]<br>"
|
||||
if(S.bodyflags & HAS_BODY_MARKINGS) //Species with body markings/tattoos.
|
||||
dat += "<b>Body Markings:</b> "
|
||||
dat += "<a href='?_src_=prefs;preference=m_style_body;task=input'>[m_styles["body"]]</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=m_body_colour;task=input'>Color</a> [color_square(color2R(m_colours["body"]), color2G(m_colours["body"]), color2B(m_colours["body"]))]<br>"
|
||||
dat += "<a href='?_src_=prefs;preference=m_body_colour;task=input'>Color</a> [color_square(m_colours["body"])]<br>"
|
||||
if(S.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings.
|
||||
dat += "<b>Tail Markings:</b> "
|
||||
dat += "<a href='?_src_=prefs;preference=m_style_tail;task=input'>[m_styles["tail"]]</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=m_tail_colour;task=input'>Color</a> [color_square(color2R(m_colours["tail"]), color2G(m_colours["tail"]), color2B(m_colours["tail"]))]<br>"
|
||||
dat += "<a href='?_src_=prefs;preference=m_tail_colour;task=input'>Color</a> [color_square(m_colours["tail"])]<br>"
|
||||
|
||||
dat += "<b>Hair:</b> "
|
||||
dat += "<a href='?_src_=prefs;preference=h_style;task=input'>[h_style]</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=hair;task=input'>Color</a> [color_square(r_hair, g_hair, b_hair)]"
|
||||
dat += "<a href='?_src_=prefs;preference=hair;task=input'>Color</a> [color_square(h_colour)]"
|
||||
var/datum/sprite_accessory/temp_hair_style = hair_styles_list[h_style]
|
||||
if(temp_hair_style && temp_hair_style.secondary_theme && !temp_hair_style.no_sec_colour)
|
||||
dat += " <a href='?_src_=prefs;preference=secondary_hair;task=input'>Color #2</a> [color_square(r_hair_sec, g_hair_sec, b_hair_sec)]"
|
||||
dat += " <a href='?_src_=prefs;preference=secondary_hair;task=input'>Color #2</a> [color_square(h_sec_colour)]"
|
||||
dat += "<br>"
|
||||
|
||||
dat += "<b>Facial Hair:</b> "
|
||||
dat += "<a href='?_src_=prefs;preference=f_style;task=input'>[f_style ? "[f_style]" : "Shaved"]</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=facial;task=input'>Color</a> [color_square(r_facial, g_facial, b_facial)]"
|
||||
dat += "<a href='?_src_=prefs;preference=facial;task=input'>Color</a> [color_square(f_colour)]"
|
||||
var/datum/sprite_accessory/temp_facial_hair_style = facial_hair_styles_list[f_style]
|
||||
if(temp_facial_hair_style && temp_facial_hair_style.secondary_theme && !temp_facial_hair_style.no_sec_colour)
|
||||
dat += " <a href='?_src_=prefs;preference=secondary_facial;task=input'>Color #2</a> [color_square(r_facial_sec, g_facial_sec, b_facial_sec)]"
|
||||
dat += " <a href='?_src_=prefs;preference=secondary_facial;task=input'>Color #2</a> [color_square(f_sec_colour)]"
|
||||
dat += "<br>"
|
||||
|
||||
|
||||
if(!(S.bodyflags & ALL_RPARTS))
|
||||
dat += "<b>Eyes:</b> "
|
||||
dat += "<a href='?_src_=prefs;preference=eyes;task=input'>Color</a> [color_square(r_eyes, g_eyes, b_eyes)]<br>"
|
||||
dat += "<a href='?_src_=prefs;preference=eyes;task=input'>Color</a> [color_square(e_colour)]<br>"
|
||||
|
||||
if((S.bodyflags & HAS_SKIN_COLOR) || body_accessory_by_species[species] || check_rights(R_ADMIN, 0, user)) //admins can always fuck with this, because they are admins
|
||||
dat += "<b>Body Color:</b> "
|
||||
dat += "<a href='?_src_=prefs;preference=skin;task=input'>Color</a> [color_square(r_skin, g_skin, b_skin)]<br>"
|
||||
dat += "<a href='?_src_=prefs;preference=skin;task=input'>Color</a> [color_square(s_colour)]<br>"
|
||||
|
||||
if(body_accessory_by_species[species] || check_rights(R_ADMIN, 0, user))
|
||||
dat += "<b>Body Accessory:</b> "
|
||||
@@ -1188,33 +1174,23 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
age = rand(AGE_MIN, AGE_MAX)
|
||||
if("hair")
|
||||
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
|
||||
r_hair = rand(0,255)
|
||||
g_hair = rand(0,255)
|
||||
b_hair = rand(0,255)
|
||||
h_colour = rand_hex_color()
|
||||
if("secondary_hair")
|
||||
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
|
||||
r_hair_sec = rand(0,255)
|
||||
g_hair_sec = rand(0,255)
|
||||
b_hair_sec = rand(0,255)
|
||||
h_sec_colour = rand_hex_color()
|
||||
if("h_style")
|
||||
h_style = random_hair_style(gender, species, robohead)
|
||||
if("facial")
|
||||
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
|
||||
r_facial = rand(0,255)
|
||||
g_facial = rand(0,255)
|
||||
b_facial = rand(0,255)
|
||||
f_colour = rand_hex_color()
|
||||
if("secondary_facial")
|
||||
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
|
||||
r_facial_sec = rand(0,255)
|
||||
g_facial_sec = rand(0,255)
|
||||
b_facial_sec = rand(0,255)
|
||||
f_sec_colour = rand_hex_color()
|
||||
if("f_style")
|
||||
f_style = random_facial_hair_style(gender, species, robohead)
|
||||
if("headaccessory")
|
||||
if(S.bodyflags & HAS_HEAD_ACCESSORY) //Species that have head accessories.
|
||||
r_headacc = rand(0,255)
|
||||
g_headacc = rand(0,255)
|
||||
b_headacc = rand(0,255)
|
||||
hacc_colour = rand_hex_color()
|
||||
if("ha_style")
|
||||
if(S.bodyflags & HAS_HEAD_ACCESSORY) //Species that have head accessories.
|
||||
ha_style = random_head_accessory(species)
|
||||
@@ -1223,19 +1199,19 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
m_styles["head"] = random_marking_style("head", species, robohead, null, alt_head)
|
||||
if("m_head_colour")
|
||||
if(S.bodyflags & HAS_HEAD_MARKINGS) //Species with head markings.
|
||||
m_colours["head"] = rgb(rand(0,255), rand(0,255), rand(0,255))
|
||||
m_colours["head"] = rand_hex_color()
|
||||
if("m_style_body")
|
||||
if(S.bodyflags & HAS_BODY_MARKINGS) //Species with body markings.
|
||||
m_styles["body"] = random_marking_style("body", species)
|
||||
if("m_body_colour")
|
||||
if(S.bodyflags & HAS_BODY_MARKINGS) //Species with body markings.
|
||||
m_colours["body"] = rgb(rand(0,255), rand(0,255), rand(0,255))
|
||||
m_colours["body"] = rand_hex_color()
|
||||
if("m_style_tail")
|
||||
if(S.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings.
|
||||
m_styles["tail"] = random_marking_style("tail", species, null, body_accessory)
|
||||
if("m_tail_colour")
|
||||
if(S.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings.
|
||||
m_colours["tail"] = rgb(rand(0,255), rand(0,255), rand(0,255))
|
||||
m_colours["tail"] = rand_hex_color()
|
||||
if("underwear")
|
||||
underwear = random_underwear(gender, species)
|
||||
ShowChoices(user)
|
||||
@@ -1246,17 +1222,13 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
socks = random_socks(gender, species)
|
||||
ShowChoices(user)
|
||||
if("eyes")
|
||||
r_eyes = rand(0,255)
|
||||
g_eyes = rand(0,255)
|
||||
b_eyes = rand(0,255)
|
||||
e_colour = rand_hex_color()
|
||||
if("s_tone")
|
||||
if(S.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE))
|
||||
s_tone = random_skin_tone()
|
||||
if("s_color")
|
||||
if(S.bodyflags & HAS_SKIN_COLOR)
|
||||
r_skin = rand(0,255)
|
||||
g_skin = rand(0,255)
|
||||
b_skin = rand(0,255)
|
||||
s_colour = rand_hex_color()
|
||||
if("bag")
|
||||
backbag = pick(backbaglist)
|
||||
/*if("skin_style")
|
||||
@@ -1319,9 +1291,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
ha_style = random_head_accessory(species)
|
||||
else
|
||||
ha_style = "None" // No Vulp ears on Unathi
|
||||
r_headacc = 0
|
||||
g_headacc = 0
|
||||
b_headacc = 0
|
||||
hacc_colour = rand_hex_color()
|
||||
|
||||
if(NS.bodyflags & HAS_HEAD_MARKINGS) //Species with head markings.
|
||||
m_styles["head"] = random_marking_style("head", species, robohead, null, alt_head)
|
||||
@@ -1361,9 +1331,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
s_tone = 0
|
||||
|
||||
if(!(NS.bodyflags & HAS_SKIN_COLOR))
|
||||
r_skin = 0
|
||||
g_skin = 0
|
||||
b_skin = 0
|
||||
s_colour = "#000000"
|
||||
|
||||
alt_head = "None" //No alt heads on species that don't have them.
|
||||
speciesprefs = 0 //My Vox tank shouldn't change how my future Grey talks.
|
||||
@@ -1419,21 +1387,17 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if("hair")
|
||||
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox")) //Species that have hair. (No HAS_HAIR flag)
|
||||
var/input = "Choose your character's hair colour:"
|
||||
var/new_hair = input(user, input, "Character Preference", rgb(r_hair, g_hair, b_hair)) as color|null
|
||||
var/new_hair = input(user, input, "Character Preference", h_colour) as color|null
|
||||
if(new_hair)
|
||||
r_hair = color2R(new_hair)
|
||||
g_hair = color2G(new_hair)
|
||||
b_hair = color2B(new_hair)
|
||||
h_colour = new_hair
|
||||
|
||||
if("secondary_hair")
|
||||
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox"))
|
||||
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style]
|
||||
if(hair_style.secondary_theme && !hair_style.no_sec_colour)
|
||||
var/new_hair = input(user, "Choose your character's secondary hair colour:", "Character Preference", rgb(r_hair_sec, g_hair_sec, b_hair_sec)) as color|null
|
||||
var/new_hair = input(user, "Choose your character's secondary hair colour:", "Character Preference", h_sec_colour) as color|null
|
||||
if(new_hair)
|
||||
r_hair_sec = color2R(new_hair)
|
||||
g_hair_sec = color2G(new_hair)
|
||||
b_hair_sec = color2B(new_hair)
|
||||
h_sec_colour = new_hair
|
||||
|
||||
if("h_style")
|
||||
var/list/valid_hairstyles = list()
|
||||
@@ -1467,11 +1431,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if("headaccessory")
|
||||
if(S.bodyflags & HAS_HEAD_ACCESSORY) //Species with head accessories.
|
||||
var/input = "Choose the colour of your your character's head accessory:"
|
||||
var/new_head_accessory = input(user, input, "Character Preference", rgb(r_headacc, g_headacc, b_headacc)) as color|null
|
||||
var/new_head_accessory = input(user, input, "Character Preference", hacc_colour) as color|null
|
||||
if(new_head_accessory)
|
||||
r_headacc = color2R(new_head_accessory)
|
||||
g_headacc = color2G(new_head_accessory)
|
||||
b_headacc = color2B(new_head_accessory)
|
||||
hacc_colour = new_head_accessory
|
||||
|
||||
if("ha_style")
|
||||
if(S.bodyflags & HAS_HEAD_ACCESSORY) //Species with head accessories.
|
||||
@@ -1626,21 +1588,17 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
|
||||
if("facial")
|
||||
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox")) //Species that have facial hair. (No HAS_HAIR_FACIAL flag)
|
||||
var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference", rgb(r_facial, g_facial, b_facial)) as color|null
|
||||
var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference", f_colour) as color|null
|
||||
if(new_facial)
|
||||
r_facial = color2R(new_facial)
|
||||
g_facial = color2G(new_facial)
|
||||
b_facial = color2B(new_facial)
|
||||
f_colour = new_facial
|
||||
|
||||
if("secondary_facial")
|
||||
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox"))
|
||||
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style]
|
||||
if(facial_hair_style.secondary_theme && !facial_hair_style.no_sec_colour)
|
||||
var/new_facial = input(user, "Choose your character's secondary facial-hair colour:", "Character Preference", rgb(r_facial_sec, g_facial_sec, b_facial_sec)) as color|null
|
||||
var/new_facial = input(user, "Choose your character's secondary facial-hair colour:", "Character Preference", f_sec_colour) as color|null
|
||||
if(new_facial)
|
||||
r_facial_sec = color2R(new_facial)
|
||||
g_facial_sec = color2G(new_facial)
|
||||
b_facial_sec = color2B(new_facial)
|
||||
f_sec_colour = new_facial
|
||||
|
||||
if("f_style")
|
||||
var/list/valid_facial_hairstyles = list()
|
||||
@@ -1723,11 +1681,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
socks = new_socks
|
||||
|
||||
if("eyes")
|
||||
var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference", rgb(r_eyes, g_eyes, b_eyes)) as color|null
|
||||
var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference", e_colour) as color|null
|
||||
if(new_eyes)
|
||||
r_eyes = color2R(new_eyes)
|
||||
g_eyes = color2G(new_eyes)
|
||||
b_eyes = color2B(new_eyes)
|
||||
e_colour = new_eyes
|
||||
|
||||
if("s_tone")
|
||||
if(S.bodyflags & HAS_SKIN_TONE)
|
||||
@@ -1750,12 +1706,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
|
||||
if("skin")
|
||||
if((S.bodyflags & HAS_SKIN_COLOR) || body_accessory_by_species[species] || check_rights(R_ADMIN, 0, user))
|
||||
var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference", rgb(r_skin, g_skin, b_skin)) as color|null
|
||||
var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference", s_colour) as color|null
|
||||
if(new_skin)
|
||||
r_skin = color2R(new_skin)
|
||||
g_skin = color2G(new_skin)
|
||||
b_skin = color2B(new_skin)
|
||||
|
||||
s_colour = new_skin
|
||||
|
||||
if("ooccolor")
|
||||
var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference", ooccolor) as color|null
|
||||
@@ -2124,21 +2077,13 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
//Head-specific
|
||||
var/obj/item/organ/external/head/H = character.get_organ("head")
|
||||
|
||||
H.r_hair = r_hair
|
||||
H.g_hair = g_hair
|
||||
H.b_hair = b_hair
|
||||
H.hair_colour = h_colour
|
||||
|
||||
H.r_hair_sec = r_hair_sec
|
||||
H.g_hair_sec = g_hair_sec
|
||||
H.b_hair_sec = b_hair_sec
|
||||
H.sec_hair_colour = h_sec_colour
|
||||
|
||||
H.r_facial = r_facial
|
||||
H.g_facial = g_facial
|
||||
H.b_facial = b_facial
|
||||
H.facial_colour = f_colour
|
||||
|
||||
H.r_facial_sec = r_facial_sec
|
||||
H.g_facial_sec = g_facial_sec
|
||||
H.b_facial_sec = b_facial_sec
|
||||
H.sec_facial_colour = f_sec_colour
|
||||
|
||||
H.h_style = h_style
|
||||
H.f_style = f_style
|
||||
@@ -2146,9 +2091,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
H.alt_head = alt_head
|
||||
//End of head-specific.
|
||||
|
||||
character.r_skin = r_skin
|
||||
character.g_skin = g_skin
|
||||
character.b_skin = b_skin
|
||||
character.skin_colour = s_colour
|
||||
|
||||
character.s_tone = s_tone
|
||||
|
||||
@@ -2192,9 +2135,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
character.socks = socks
|
||||
|
||||
if(character.species.bodyflags & HAS_HEAD_ACCESSORY)
|
||||
H.r_headacc = r_headacc
|
||||
H.g_headacc = g_headacc
|
||||
H.b_headacc = b_headacc
|
||||
H.headacc_colour = hacc_colour
|
||||
H.ha_style = ha_style
|
||||
if(character.species.bodyflags & HAS_MARKINGS)
|
||||
character.m_colours = m_colours
|
||||
@@ -2211,7 +2152,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
message_admins("[key_name_admin(character)] has spawned with their gender as plural or neuter. Please notify coders.")
|
||||
character.change_gender(MALE)
|
||||
|
||||
character.change_eye_color(r_eyes, g_eyes, b_eyes)
|
||||
character.change_eye_color(e_colour)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_FAT && (CAN_BE_FAT in character.species.species_traits))
|
||||
character.dna.SetSEState(FATBLOCK,1,1)
|
||||
|
||||
@@ -118,34 +118,20 @@
|
||||
age,
|
||||
species,
|
||||
language,
|
||||
hair_red,
|
||||
hair_green,
|
||||
hair_blue,
|
||||
secondary_hair_red,
|
||||
secondary_hair_green,
|
||||
secondary_hair_blue,
|
||||
facial_red,
|
||||
facial_green,
|
||||
facial_blue,
|
||||
secondary_facial_red,
|
||||
secondary_facial_green,
|
||||
secondary_facial_blue,
|
||||
hair_colour,
|
||||
secondary_hair_colour,
|
||||
facial_hair_colour,
|
||||
secondary_facial_hair_colour,
|
||||
skin_tone,
|
||||
skin_red,
|
||||
skin_green,
|
||||
skin_blue,
|
||||
skin_colour,
|
||||
marking_colours,
|
||||
head_accessory_red,
|
||||
head_accessory_green,
|
||||
head_accessory_blue,
|
||||
head_accessory_colour,
|
||||
hair_style_name,
|
||||
facial_style_name,
|
||||
marking_styles,
|
||||
head_accessory_style_name,
|
||||
alt_head_name,
|
||||
eyes_red,
|
||||
eyes_green,
|
||||
eyes_blue,
|
||||
eye_colour,
|
||||
underwear,
|
||||
undershirt,
|
||||
backbag,
|
||||
@@ -194,61 +180,46 @@
|
||||
species = query.item[6]
|
||||
language = query.item[7]
|
||||
|
||||
//colors to be consolidated into hex strings (requires some work with dna code)
|
||||
r_hair = text2num(query.item[8])
|
||||
g_hair = text2num(query.item[9])
|
||||
b_hair = text2num(query.item[10])
|
||||
r_hair_sec = text2num(query.item[11])
|
||||
g_hair_sec = text2num(query.item[12])
|
||||
b_hair_sec = text2num(query.item[13])
|
||||
r_facial = text2num(query.item[14])
|
||||
g_facial = text2num(query.item[15])
|
||||
b_facial = text2num(query.item[16])
|
||||
r_facial_sec = text2num(query.item[17])
|
||||
g_facial_sec = text2num(query.item[18])
|
||||
b_facial_sec = text2num(query.item[19])
|
||||
s_tone = text2num(query.item[20])
|
||||
r_skin = text2num(query.item[21])
|
||||
g_skin = text2num(query.item[22])
|
||||
b_skin = text2num(query.item[23])
|
||||
m_colours = params2list(query.item[24])
|
||||
r_headacc = text2num(query.item[25])
|
||||
g_headacc = text2num(query.item[26])
|
||||
b_headacc = text2num(query.item[27])
|
||||
h_style = query.item[28]
|
||||
f_style = query.item[29]
|
||||
m_styles = params2list(query.item[30])
|
||||
ha_style = query.item[31]
|
||||
alt_head = query.item[32]
|
||||
r_eyes = text2num(query.item[33])
|
||||
g_eyes = text2num(query.item[34])
|
||||
b_eyes = text2num(query.item[35])
|
||||
underwear = query.item[36]
|
||||
undershirt = query.item[37]
|
||||
backbag = query.item[38]
|
||||
b_type = query.item[39]
|
||||
h_colour = query.item[8]
|
||||
h_sec_colour = query.item[9]
|
||||
f_colour = query.item[10]
|
||||
f_sec_colour = query.item[11]
|
||||
s_tone = text2num(query.item[12])
|
||||
s_colour = query.item[13]
|
||||
m_colours = params2list(query.item[14])
|
||||
hacc_colour = query.item[15]
|
||||
h_style = query.item[16]
|
||||
f_style = query.item[17]
|
||||
m_styles = params2list(query.item[18])
|
||||
ha_style = query.item[19]
|
||||
alt_head = query.item[20]
|
||||
e_colour = query.item[21]
|
||||
underwear = query.item[22]
|
||||
undershirt = query.item[23]
|
||||
backbag = query.item[24]
|
||||
b_type = query.item[25]
|
||||
|
||||
|
||||
//Jobs
|
||||
alternate_option = text2num(query.item[40])
|
||||
job_support_high = text2num(query.item[41])
|
||||
job_support_med = text2num(query.item[42])
|
||||
job_support_low = text2num(query.item[43])
|
||||
job_medsci_high = text2num(query.item[44])
|
||||
job_medsci_med = text2num(query.item[45])
|
||||
job_medsci_low = text2num(query.item[46])
|
||||
job_engsec_high = text2num(query.item[47])
|
||||
job_engsec_med = text2num(query.item[48])
|
||||
job_engsec_low = text2num(query.item[49])
|
||||
job_karma_high = text2num(query.item[50])
|
||||
job_karma_med = text2num(query.item[51])
|
||||
job_karma_low = text2num(query.item[52])
|
||||
alternate_option = text2num(query.item[26])
|
||||
job_support_high = text2num(query.item[27])
|
||||
job_support_med = text2num(query.item[28])
|
||||
job_support_low = text2num(query.item[29])
|
||||
job_medsci_high = text2num(query.item[30])
|
||||
job_medsci_med = text2num(query.item[31])
|
||||
job_medsci_low = text2num(query.item[32])
|
||||
job_engsec_high = text2num(query.item[33])
|
||||
job_engsec_med = text2num(query.item[34])
|
||||
job_engsec_low = text2num(query.item[35])
|
||||
job_karma_high = text2num(query.item[36])
|
||||
job_karma_med = text2num(query.item[37])
|
||||
job_karma_low = text2num(query.item[38])
|
||||
|
||||
//Miscellaneous
|
||||
flavor_text = query.item[53]
|
||||
med_record = query.item[54]
|
||||
sec_record = query.item[55]
|
||||
gen_record = query.item[56]
|
||||
flavor_text = query.item[39]
|
||||
med_record = query.item[40]
|
||||
sec_record = query.item[41]
|
||||
gen_record = query.item[42]
|
||||
// Apparently, the preceding vars weren't always encoded properly...
|
||||
if(findtext(flavor_text, "<")) // ... so let's clumsily check for tags!
|
||||
flavor_text = html_encode(flavor_text)
|
||||
@@ -258,18 +229,18 @@
|
||||
sec_record = html_encode(sec_record)
|
||||
if(findtext(gen_record, "<"))
|
||||
gen_record = html_encode(gen_record)
|
||||
disabilities = text2num(query.item[57])
|
||||
player_alt_titles = params2list(query.item[58])
|
||||
organ_data = params2list(query.item[59])
|
||||
rlimb_data = params2list(query.item[60])
|
||||
nanotrasen_relation = query.item[61]
|
||||
speciesprefs = text2num(query.item[62])
|
||||
disabilities = text2num(query.item[43])
|
||||
player_alt_titles = params2list(query.item[44])
|
||||
organ_data = params2list(query.item[45])
|
||||
rlimb_data = params2list(query.item[46])
|
||||
nanotrasen_relation = query.item[47]
|
||||
speciesprefs = text2num(query.item[48])
|
||||
|
||||
//socks
|
||||
socks = query.item[63]
|
||||
body_accessory = query.item[64]
|
||||
gear = params2list(query.item[65])
|
||||
autohiss_mode = text2num(query.item[66])
|
||||
socks = query.item[49]
|
||||
body_accessory = query.item[50]
|
||||
gear = params2list(query.item[51])
|
||||
autohiss_mode = text2num(query.item[52])
|
||||
|
||||
//Sanitize
|
||||
var/datum/species/SP = all_species[species]
|
||||
@@ -283,36 +254,22 @@
|
||||
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
|
||||
gender = sanitize_gender(gender, FALSE, !SP.has_gender)
|
||||
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
|
||||
r_hair = sanitize_integer(r_hair, 0, 255, initial(r_hair))
|
||||
g_hair = sanitize_integer(g_hair, 0, 255, initial(g_hair))
|
||||
b_hair = sanitize_integer(b_hair, 0, 255, initial(b_hair))
|
||||
r_hair_sec = sanitize_integer(r_hair_sec, 0, 255, initial(r_hair_sec))
|
||||
g_hair_sec = sanitize_integer(g_hair_sec, 0, 255, initial(g_hair_sec))
|
||||
b_hair_sec = sanitize_integer(b_hair_sec, 0, 255, initial(b_hair_sec))
|
||||
r_facial = sanitize_integer(r_facial, 0, 255, initial(r_facial))
|
||||
g_facial = sanitize_integer(g_facial, 0, 255, initial(g_facial))
|
||||
b_facial = sanitize_integer(b_facial, 0, 255, initial(b_facial))
|
||||
r_facial_sec = sanitize_integer(r_facial_sec, 0, 255, initial(r_facial_sec))
|
||||
g_facial_sec = sanitize_integer(g_facial_sec, 0, 255, initial(g_facial_sec))
|
||||
b_facial_sec = sanitize_integer(b_facial_sec, 0, 255, initial(b_facial_sec))
|
||||
h_colour = sanitize_hexcolor(h_colour)
|
||||
h_sec_colour = sanitize_hexcolor(h_sec_colour)
|
||||
f_colour = sanitize_hexcolor(f_colour)
|
||||
f_sec_colour = sanitize_hexcolor(f_sec_colour)
|
||||
s_tone = sanitize_integer(s_tone, -185, 34, initial(s_tone))
|
||||
r_skin = sanitize_integer(r_skin, 0, 255, initial(r_skin))
|
||||
g_skin = sanitize_integer(g_skin, 0, 255, initial(g_skin))
|
||||
b_skin = sanitize_integer(b_skin, 0, 255, initial(b_skin))
|
||||
s_colour = sanitize_hexcolor(s_colour)
|
||||
for(var/marking_location in m_colours)
|
||||
m_colours[marking_location] = sanitize_hexcolor(m_colours[marking_location], DEFAULT_MARKING_COLOURS[marking_location])
|
||||
r_headacc = sanitize_integer(r_headacc, 0, 255, initial(r_headacc))
|
||||
g_headacc = sanitize_integer(g_headacc, 0, 255, initial(g_headacc))
|
||||
b_headacc = sanitize_integer(b_headacc, 0, 255, initial(b_headacc))
|
||||
hacc_colour = sanitize_hexcolor(hacc_colour)
|
||||
h_style = sanitize_inlist(h_style, hair_styles_list, initial(h_style))
|
||||
f_style = sanitize_inlist(f_style, facial_hair_styles_list, initial(f_style))
|
||||
for(var/marking_location in m_styles)
|
||||
m_styles[marking_location] = sanitize_inlist(m_styles[marking_location], marking_styles_list, DEFAULT_MARKING_STYLES[marking_location])
|
||||
ha_style = sanitize_inlist(ha_style, head_accessory_styles_list, initial(ha_style))
|
||||
alt_head = sanitize_inlist(alt_head, alt_heads_list, initial(alt_head))
|
||||
r_eyes = sanitize_integer(r_eyes, 0, 255, initial(r_eyes))
|
||||
g_eyes = sanitize_integer(g_eyes, 0, 255, initial(g_eyes))
|
||||
b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes))
|
||||
e_colour = sanitize_hexcolor(e_colour)
|
||||
underwear = sanitize_text(underwear, initial(underwear))
|
||||
undershirt = sanitize_text(undershirt, initial(undershirt))
|
||||
backbag = sanitize_text(backbag, initial(backbag))
|
||||
@@ -373,34 +330,20 @@
|
||||
age='[age]',
|
||||
species='[sanitizeSQL(species)]',
|
||||
language='[sanitizeSQL(language)]',
|
||||
hair_red='[r_hair]',
|
||||
hair_green='[g_hair]',
|
||||
hair_blue='[b_hair]',
|
||||
secondary_hair_red='[r_hair_sec]',
|
||||
secondary_hair_green='[g_hair_sec]',
|
||||
secondary_hair_blue='[b_hair_sec]',
|
||||
facial_red='[r_facial]',
|
||||
facial_green='[g_facial]',
|
||||
facial_blue='[b_facial]',
|
||||
secondary_facial_red='[r_facial_sec]',
|
||||
secondary_facial_green='[g_facial_sec]',
|
||||
secondary_facial_blue='[b_facial_sec]',
|
||||
hair_colour='[h_colour]',
|
||||
secondary_hair_colour='[h_sec_colour]',
|
||||
facial_hair_colour='[f_colour]',
|
||||
secondary_facial_hair_colour='[f_sec_colour]',
|
||||
skin_tone='[s_tone]',
|
||||
skin_red='[r_skin]',
|
||||
skin_green='[g_skin]',
|
||||
skin_blue='[b_skin]',
|
||||
skin_colour='[s_colour]',
|
||||
marking_colours='[sanitizeSQL(markingcolourslist)]',
|
||||
head_accessory_red='[r_headacc]',
|
||||
head_accessory_green='[g_headacc]',
|
||||
head_accessory_blue='[b_headacc]',
|
||||
head_accessory_colour='[hacc_colour]',
|
||||
hair_style_name='[sanitizeSQL(h_style)]',
|
||||
facial_style_name='[sanitizeSQL(f_style)]',
|
||||
marking_styles='[sanitizeSQL(markingstyleslist)]',
|
||||
head_accessory_style_name='[sanitizeSQL(ha_style)]',
|
||||
alt_head_name='[sanitizeSQL(alt_head)]',
|
||||
eyes_red='[r_eyes]',
|
||||
eyes_green='[g_eyes]',
|
||||
eyes_blue='[b_eyes]',
|
||||
eye_colour='[e_colour]',
|
||||
underwear='[underwear]',
|
||||
undershirt='[undershirt]',
|
||||
backbag='[backbag]',
|
||||
@@ -446,19 +389,17 @@
|
||||
var/DBQuery/query = dbcon.NewQuery({"
|
||||
INSERT INTO [format_table_name("characters")] (ckey, slot, OOC_Notes, real_name, name_is_always_random, gender,
|
||||
age, species, language,
|
||||
hair_red, hair_green, hair_blue,
|
||||
secondary_hair_red, secondary_hair_green, secondary_hair_blue,
|
||||
facial_red, facial_green, facial_blue,
|
||||
secondary_facial_red, secondary_facial_green, secondary_facial_blue,
|
||||
skin_tone, skin_red, skin_green, skin_blue,
|
||||
hair_colour, secondary_hair_colour,
|
||||
facial_hair_colour, secondary_facial_hair_colour,
|
||||
skin_tone, skin_colour,
|
||||
marking_colours,
|
||||
head_accessory_red, head_accessory_green, head_accessory_blue,
|
||||
head_accessory_colour,
|
||||
hair_style_name,
|
||||
facial_style_name,
|
||||
marking_styles,
|
||||
head_accessory_style_name,
|
||||
alt_head_name,
|
||||
eyes_red, eyes_green, eyes_blue,
|
||||
eye_colour,
|
||||
underwear, undershirt,
|
||||
backbag, b_type, alternate_option,
|
||||
job_support_high, job_support_med, job_support_low,
|
||||
@@ -476,19 +417,17 @@
|
||||
VALUES
|
||||
('[C.ckey]', '[default_slot]', '[sanitizeSQL(metadata)]', '[sanitizeSQL(real_name)]', '[be_random_name]','[gender]',
|
||||
'[age]', '[sanitizeSQL(species)]', '[sanitizeSQL(language)]',
|
||||
'[r_hair]', '[g_hair]', '[b_hair]',
|
||||
'[r_hair_sec]', '[g_hair_sec]', '[b_hair_sec]',
|
||||
'[r_facial]', '[g_facial]', '[b_facial]',
|
||||
'[r_facial_sec]', '[g_facial_sec]', '[b_facial_sec]',
|
||||
'[s_tone]', '[r_skin]', '[g_skin]', '[b_skin]',
|
||||
'[h_colour]', '[h_sec_colour]',
|
||||
'[f_colour]', '[f_sec_colour]',
|
||||
'[s_tone]', '[s_colour]',
|
||||
'[sanitizeSQL(markingcolourslist)]',
|
||||
'[r_headacc]', '[g_headacc]', '[b_headacc]',
|
||||
'[hacc_colour]',
|
||||
'[sanitizeSQL(h_style)]',
|
||||
'[sanitizeSQL(f_style)]',
|
||||
'[sanitizeSQL(markingstyleslist)]',
|
||||
'[sanitizeSQL(ha_style)]',
|
||||
'[sanitizeSQL(alt_head)]',
|
||||
'[r_eyes]', '[g_eyes]', '[b_eyes]',
|
||||
'[e_colour]',
|
||||
'[underwear]', '[undershirt]',
|
||||
'[backbag]', '[b_type]', '[alternate_option]',
|
||||
'[job_support_high]', '[job_support_med]', '[job_support_low]',
|
||||
|
||||
@@ -184,14 +184,10 @@
|
||||
var/obj/item/organ/external/head/head_organ = user.get_organ("head")
|
||||
|
||||
mob = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kitty")
|
||||
// mob2 = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kitty2") - Commented out because it seemingly does nothing.
|
||||
mob.Blend(rgb(head_organ.r_hair, head_organ.g_hair, head_organ.b_hair), ICON_ADD)
|
||||
// mob2.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD) - Commented out because it seemingly does nothing.
|
||||
mob.Blend(head_organ.hair_colour, ICON_ADD)
|
||||
|
||||
var/icon/earbit = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner")
|
||||
// var/icon/earbit2 = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner2") - Commented out because it seemingly does nothing.
|
||||
mob.Blend(earbit, ICON_OVERLAY)
|
||||
// mob2.Blend(earbit2, ICON_OVERLAY) - Commented out because it seemingly does nothing.
|
||||
|
||||
icon_override = mob
|
||||
|
||||
@@ -210,7 +206,7 @@
|
||||
if(!istype(user)) return
|
||||
var/obj/item/organ/external/head/head_organ = user.get_organ("head")
|
||||
mob = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "mousey")
|
||||
mob.Blend(rgb(head_organ.r_hair, head_organ.g_hair, head_organ.b_hair), ICON_ADD)
|
||||
mob.Blend(head_organ.hair_colour, ICON_ADD)
|
||||
|
||||
var/icon/earbit = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "mouseyinner")
|
||||
mob.Blend(earbit, ICON_OVERLAY)
|
||||
|
||||
@@ -210,19 +210,14 @@
|
||||
H.ha_style = "None"
|
||||
update_head_accessory()
|
||||
|
||||
/mob/living/carbon/human/proc/change_eye_color(var/red, var/green, var/blue, update_dna = 1)
|
||||
/mob/living/carbon/human/proc/change_eye_color(var/colour = "#000000", update_dna = 1)
|
||||
// Update the main DNA datum, then sync the change across the organs
|
||||
var/obj/item/organ/internal/eyes/eyes_organ = get_int_organ(/obj/item/organ/internal/eyes)
|
||||
if(eyes_organ)
|
||||
var/eyes_red = eyes_organ.eye_colour[1]
|
||||
var/eyes_green = eyes_organ.eye_colour[2]
|
||||
var/eyes_blue = eyes_organ.eye_colour[3]
|
||||
if(red == eyes_red && green == eyes_green && blue == eyes_blue)
|
||||
if(colour == eyes_organ.eye_colour)
|
||||
return
|
||||
|
||||
eyes_organ.eye_colour[1] = red
|
||||
eyes_organ.eye_colour[2] = green
|
||||
eyes_organ.eye_colour[3] = blue
|
||||
eyes_organ.eye_colour = colour
|
||||
dna.eye_color_to_dna(eyes_organ)
|
||||
eyes_organ.set_dna(dna)
|
||||
|
||||
@@ -233,68 +228,58 @@
|
||||
update_body()
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/change_hair_color(var/red, var/green, var/blue, var/secondary)
|
||||
/mob/living/carbon/human/proc/change_hair_color(var/colour = "#000000", var/secondary)
|
||||
var/obj/item/organ/external/head/H = get_organ("head")
|
||||
if(!H)
|
||||
return
|
||||
|
||||
if(!secondary)
|
||||
if(red == H.r_hair && green == H.g_hair && blue == H.b_hair)
|
||||
if(colour == H.hair_colour)
|
||||
return
|
||||
|
||||
H.r_hair = red
|
||||
H.g_hair = green
|
||||
H.b_hair = blue
|
||||
H.hair_colour = colour
|
||||
else
|
||||
if(red == H.r_hair_sec && green == H.g_hair_sec && blue == H.b_hair_sec)
|
||||
if(colour == H.sec_hair_colour)
|
||||
return
|
||||
|
||||
H.r_hair_sec = red
|
||||
H.g_hair_sec = green
|
||||
H.b_hair_sec = blue
|
||||
H.sec_hair_colour = colour
|
||||
|
||||
update_hair()
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/change_facial_hair_color(var/red, var/green, var/blue, var/secondary)
|
||||
/mob/living/carbon/human/proc/change_facial_hair_color(var/colour = "#000000", var/secondary)
|
||||
var/obj/item/organ/external/head/H = get_organ("head")
|
||||
if(!H)
|
||||
return
|
||||
|
||||
if(!secondary)
|
||||
if(red == H.r_facial && green == H.g_facial && blue == H.b_facial)
|
||||
if(colour == H.facial_colour)
|
||||
return
|
||||
|
||||
H.r_facial = red
|
||||
H.g_facial = green
|
||||
H.b_facial = blue
|
||||
H.facial_colour = colour
|
||||
else
|
||||
if(red == H.r_facial_sec && green == H.g_facial_sec && blue == H.b_facial_sec)
|
||||
if(colour == H.sec_facial_colour)
|
||||
return
|
||||
|
||||
H.r_facial_sec = red
|
||||
H.g_facial_sec = green
|
||||
H.b_facial_sec = blue
|
||||
H.sec_facial_colour = colour
|
||||
|
||||
update_fhair()
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/change_head_accessory_color(var/red, var/green, var/blue)
|
||||
/mob/living/carbon/human/proc/change_head_accessory_color(var/colour = "#000000")
|
||||
var/obj/item/organ/external/head/H = get_organ("head")
|
||||
if(!H)
|
||||
return
|
||||
|
||||
if(red == H.r_headacc && green == H.g_headacc && blue == H.b_headacc)
|
||||
if(colour == H.headacc_colour)
|
||||
return
|
||||
|
||||
H.r_headacc = red
|
||||
H.g_headacc = green
|
||||
H.b_headacc = blue
|
||||
H.headacc_colour = colour
|
||||
|
||||
update_head_accessory()
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/change_marking_color(var/colour, var/location = "body")
|
||||
/mob/living/carbon/human/proc/change_marking_color(var/colour = "#000000", var/location = "body")
|
||||
if(colour == m_colours[location])
|
||||
return
|
||||
|
||||
@@ -307,13 +292,11 @@
|
||||
return 1
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/change_skin_color(var/red, var/green, var/blue)
|
||||
if(red == r_skin && green == g_skin && blue == b_skin || !(species.bodyflags & HAS_SKIN_COLOR))
|
||||
/mob/living/carbon/human/proc/change_skin_color(var/colour = "#000000")
|
||||
if(colour == skin_colour || !(species.bodyflags & HAS_SKIN_COLOR))
|
||||
return
|
||||
|
||||
r_skin = red
|
||||
g_skin = green
|
||||
b_skin = blue
|
||||
skin_colour = colour
|
||||
|
||||
force_update_limbs()
|
||||
update_body()
|
||||
|
||||
@@ -1433,13 +1433,9 @@
|
||||
|
||||
if(species.base_color && default_colour)
|
||||
//Apply colour.
|
||||
r_skin = color2R(species.base_color)
|
||||
g_skin = color2G(species.base_color)
|
||||
b_skin = color2B(species.base_color)
|
||||
skin_colour = species.base_color
|
||||
else
|
||||
r_skin = 0
|
||||
g_skin = 0
|
||||
b_skin = 0
|
||||
skin_colour = "#000000"
|
||||
|
||||
if(!(species.bodyflags & HAS_SKIN_TONE))
|
||||
s_tone = 0
|
||||
@@ -1463,29 +1459,17 @@
|
||||
|
||||
if(species.default_hair_colour)
|
||||
//Apply colour.
|
||||
H.r_hair = color2R(species.default_hair_colour)
|
||||
H.g_hair = color2G(species.default_hair_colour)
|
||||
H.b_hair = color2B(species.default_hair_colour)
|
||||
H.hair_colour = species.default_hair_colour
|
||||
else
|
||||
H.r_hair = 0
|
||||
H.g_hair = 0
|
||||
H.b_hair = 0
|
||||
H.hair_colour = "#000000"
|
||||
if(species.default_fhair_colour)
|
||||
H.r_facial = color2R(species.default_fhair_colour)
|
||||
H.g_facial = color2G(species.default_fhair_colour)
|
||||
H.b_facial = color2B(species.default_fhair_colour)
|
||||
H.facial_colour = species.default_fhair_colour
|
||||
else
|
||||
H.r_facial = 0
|
||||
H.g_facial = 0
|
||||
H.b_facial = 0
|
||||
H.facial_colour = "#000000"
|
||||
if(species.default_headacc_colour)
|
||||
H.r_headacc = color2R(species.default_headacc_colour)
|
||||
H.g_headacc = color2G(species.default_headacc_colour)
|
||||
H.b_headacc = color2B(species.default_headacc_colour)
|
||||
H.headacc_colour = species.default_headacc_colour
|
||||
else
|
||||
H.r_headacc = 0
|
||||
H.g_headacc = 0
|
||||
H.b_headacc = 0
|
||||
H.headacc_colour = "#000000"
|
||||
|
||||
m_styles = DEFAULT_MARKING_STYLES //Wipes out markings, setting them all to "None".
|
||||
m_colours = DEFAULT_MARKING_COLOURS //Defaults colour to #00000 for all markings.
|
||||
|
||||
@@ -10,9 +10,7 @@ var/global/default_martial_art = new/datum/martial_art
|
||||
var/s_tone = 0 //Skin tone
|
||||
|
||||
//Skin colour
|
||||
var/r_skin = 0
|
||||
var/g_skin = 0
|
||||
var/b_skin = 0
|
||||
var/skin_colour = "#000000"
|
||||
|
||||
var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup
|
||||
var/lip_color = "white"
|
||||
|
||||
@@ -581,11 +581,8 @@
|
||||
if((H in recolor_list) && H.reagents.total_volume > SLIMEPERSON_COLOR_SHIFT_TRIGGER)
|
||||
var/blood_amount = H.blood_volume
|
||||
var/r_color = mix_color_from_reagents(H.reagents.reagent_list)
|
||||
var/new_body_color = BlendRGB(r_color, rgb(H.r_skin, H.g_skin, H.b_skin), (blood_amount*SLIMEPERSON_BLOOD_SCALING_FACTOR)/((blood_amount*SLIMEPERSON_BLOOD_SCALING_FACTOR)+(H.reagents.total_volume)))
|
||||
var/list/new_color_list = ReadRGB(new_body_color)
|
||||
H.r_skin = new_color_list[1]
|
||||
H.g_skin = new_color_list[2]
|
||||
H.b_skin = new_color_list[3]
|
||||
var/new_body_color = BlendRGB(r_color, H.skin_colour, (blood_amount*SLIMEPERSON_BLOOD_SCALING_FACTOR)/((blood_amount*SLIMEPERSON_BLOOD_SCALING_FACTOR)+(H.reagents.total_volume)))
|
||||
H.skin_colour = new_body_color
|
||||
if(world.time % SLIMEPERSON_ICON_UPDATE_PERIOD > SLIMEPERSON_ICON_UPDATE_PERIOD - 20) // The 20 is because this gets called every 2 seconds, from the mob controller
|
||||
for(var/organname in H.bodyparts_by_name)
|
||||
var/obj/item/organ/external/E = H.bodyparts_by_name[organname]
|
||||
|
||||
@@ -228,7 +228,7 @@ var/global/list/damage_icon_parts = list()
|
||||
var/obj/item/organ/internal/eyes/eyes = get_int_organ(/obj/item/organ/internal/eyes)
|
||||
|
||||
if(eyes)
|
||||
icon_key += "[rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3])]"
|
||||
icon_key += "[eyes.eye_colour]"
|
||||
else
|
||||
icon_key += "#000000"
|
||||
|
||||
@@ -248,7 +248,7 @@ var/global/list/damage_icon_parts = list()
|
||||
icon_key += "[part.dna.GetUIState(DNA_UI_GENDER)]"
|
||||
icon_key += "[part.dna.GetUIValue(DNA_UI_SKIN_TONE)]"
|
||||
if(part.s_col)
|
||||
icon_key += "[rgb(part.s_col[1], part.s_col[2], part.s_col[3])]"
|
||||
icon_key += "[part.s_col]"
|
||||
if(part.s_tone)
|
||||
icon_key += "[part.s_tone]"
|
||||
|
||||
@@ -408,7 +408,7 @@ var/global/list/damage_icon_parts = list()
|
||||
if(head_organ.species.name in head_accessory_style.species_allowed)
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
if(head_accessory_style.do_colouration)
|
||||
head_accessory_s.Blend(rgb(head_organ.r_headacc, head_organ.g_headacc, head_organ.b_headacc), ICON_ADD)
|
||||
head_accessory_s.Blend(head_organ.headacc_colour, ICON_ADD)
|
||||
head_accessory_standing = head_accessory_s //head_accessory_standing.Blend(head_accessory_s, ICON_OVERLAY)
|
||||
//Having it this way preserves animations. Useful for animated antennae.
|
||||
|
||||
@@ -449,14 +449,14 @@ var/global/list/damage_icon_parts = list()
|
||||
if((head_organ.species.name in hair_style.species_allowed) || (head_organ.species.bodyflags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics...
|
||||
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
if(head_organ.species.name == "Slime People") // I am el worstos
|
||||
hair_s.Blend(rgb(r_skin, g_skin, b_skin, 160), ICON_AND)
|
||||
hair_s.Blend("[skin_colour]A0", ICON_AND)
|
||||
else if(hair_style.do_colouration)
|
||||
hair_s.Blend(rgb(head_organ.r_hair, head_organ.g_hair, head_organ.b_hair), ICON_ADD)
|
||||
hair_s.Blend(head_organ.hair_colour, 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_secondary_s.Blend(head_organ.sec_hair_colour, ICON_ADD)
|
||||
hair_s.Blend(hair_secondary_s, ICON_OVERLAY)
|
||||
|
||||
hair_standing = hair_s //hair_standing.Blend(hair_s, ICON_OVERLAY)
|
||||
@@ -495,14 +495,14 @@ var/global/list/damage_icon_parts = list()
|
||||
if((head_organ.species.name in facial_hair_style.species_allowed) || (head_organ.species.bodyflags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics...
|
||||
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
if(head_organ.species.name == "Slime People") // I am el worstos
|
||||
facial_s.Blend(rgb(r_skin, g_skin, b_skin, 160), ICON_AND)
|
||||
facial_s.Blend("[skin_colour]A0", ICON_AND)
|
||||
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)
|
||||
facial_s.Blend(head_organ.facial_colour, 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_secondary_s.Blend(head_organ.sec_facial_colour, ICON_ADD)
|
||||
facial_s.Blend(facial_secondary_s, ICON_OVERLAY)
|
||||
|
||||
face_standing.Blend(facial_s, ICON_OVERLAY)
|
||||
@@ -1168,7 +1168,7 @@ var/global/list/damage_icon_parts = list()
|
||||
if(body_accessory.try_restrictions(src))
|
||||
var/icon/accessory_s = new/icon("icon" = body_accessory.icon, "icon_state" = body_accessory.icon_state)
|
||||
if(species.bodyflags & HAS_SKIN_COLOR)
|
||||
accessory_s.Blend(rgb(r_skin, g_skin, b_skin), body_accessory.blend_mode)
|
||||
accessory_s.Blend(skin_colour, body_accessory.blend_mode)
|
||||
if(tail_marking_icon && (body_accessory.name in tail_marking_style.tails_allowed))
|
||||
accessory_s.Blend(tail_marking_icon, ICON_OVERLAY)
|
||||
if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
|
||||
@@ -1193,7 +1193,7 @@ var/global/list/damage_icon_parts = list()
|
||||
if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space))
|
||||
var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[tail]_s")
|
||||
if(species.bodyflags & HAS_SKIN_COLOR)
|
||||
tail_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
|
||||
tail_s.Blend(skin_colour, ICON_ADD)
|
||||
if(tail_marking_icon && !tail_marking_style.tails_allowed)
|
||||
tail_s.Blend(tail_marking_icon, ICON_OVERLAY)
|
||||
if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
|
||||
@@ -1234,7 +1234,7 @@ var/global/list/damage_icon_parts = list()
|
||||
if(body_accessory)
|
||||
var/icon/accessory_s = new/icon("icon" = body_accessory.get_animated_icon(), "icon_state" = body_accessory.get_animated_icon_state())
|
||||
if(species.bodyflags & HAS_SKIN_COLOR)
|
||||
accessory_s.Blend(rgb(r_skin, g_skin, b_skin), body_accessory.blend_mode)
|
||||
accessory_s.Blend(skin_colour, body_accessory.blend_mode)
|
||||
if(tail_marking_icon && (body_accessory.name in tail_marking_style.tails_allowed))
|
||||
accessory_s.Blend(tail_marking_icon, ICON_OVERLAY)
|
||||
if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
|
||||
@@ -1261,7 +1261,7 @@ var/global/list/damage_icon_parts = list()
|
||||
else if(tail && species.bodyflags & HAS_TAIL)
|
||||
var/icon/tailw_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[tail]w_s")
|
||||
if(species.bodyflags & HAS_SKIN_COLOR)
|
||||
tailw_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
|
||||
tailw_s.Blend(skin_colour, ICON_ADD)
|
||||
if(tail_marking_icon && !tail_marking_style.tails_allowed)
|
||||
tailw_s.Blend(tail_marking_icon, ICON_OVERLAY)
|
||||
if((!body_accessory || istype(body_accessory, /datum/body_accessory/tail)) && species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... (having a non-tail body accessory like the snake body will override this)
|
||||
|
||||
@@ -30,22 +30,16 @@
|
||||
randomize_hair_color("facial")
|
||||
if(S.bodyflags & HAS_HEAD_ACCESSORY)
|
||||
ha_style = random_head_accessory(species)
|
||||
var/list/colours = randomize_skin_color(1)
|
||||
r_headacc = colours["red"]
|
||||
g_headacc = colours["green"]
|
||||
b_headacc = colours["blue"]
|
||||
hacc_colour = randomize_skin_color(1)
|
||||
if(S.bodyflags & HAS_HEAD_MARKINGS)
|
||||
m_styles["head"] = random_marking_style("head", species, robohead, null, alt_head)
|
||||
var/list/colours = randomize_skin_color(1)
|
||||
m_colours["head"] = rgb(colours["red"], colours["green"], colours["blue"])
|
||||
m_colours["head"] = randomize_skin_color(1)
|
||||
if(S.bodyflags & HAS_BODY_MARKINGS)
|
||||
m_styles["body"] = random_marking_style("body", species)
|
||||
var/list/colours = randomize_skin_color(1)
|
||||
m_colours["body"] = rgb(colours["red"], colours["green"], colours["blue"])
|
||||
m_colours["body"] = randomize_skin_color(1)
|
||||
if(S.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings.
|
||||
m_styles["tail"] = random_marking_style("tail", species, null, body_accessory)
|
||||
var/list/colours = randomize_skin_color(1)
|
||||
m_colours["tail"] = rgb(colours["red"], colours["green"], colours["blue"])
|
||||
m_colours["tail"] = randomize_skin_color(1)
|
||||
if(!(S.bodyflags & ALL_RPARTS))
|
||||
randomize_eyes_color()
|
||||
if(S.bodyflags & HAS_SKIN_COLOR)
|
||||
@@ -56,9 +50,7 @@
|
||||
|
||||
/datum/preferences/proc/randomize_hair_color(var/target = "hair")
|
||||
if(prob (75) && target == "facial") // Chance to inherit hair color
|
||||
r_facial = r_hair
|
||||
g_facial = g_hair
|
||||
b_facial = b_hair
|
||||
f_colour = h_colour
|
||||
return
|
||||
|
||||
var/red
|
||||
@@ -106,13 +98,9 @@
|
||||
|
||||
switch(target)
|
||||
if("hair")
|
||||
r_hair = red
|
||||
g_hair = green
|
||||
b_hair = blue
|
||||
h_colour = rgb(red, green, blue)
|
||||
if("facial")
|
||||
r_facial = red
|
||||
g_facial = green
|
||||
b_facial = blue
|
||||
f_colour = rgb(red, green, blue)
|
||||
|
||||
/datum/preferences/proc/randomize_eyes_color()
|
||||
var/red
|
||||
@@ -158,11 +146,9 @@
|
||||
green = max(min(green + rand (-25, 25), 255), 0)
|
||||
blue = max(min(blue + rand (-25, 25), 255), 0)
|
||||
|
||||
r_eyes = red
|
||||
g_eyes = green
|
||||
b_eyes = blue
|
||||
e_colour = rgb(red, green, blue)
|
||||
|
||||
/datum/preferences/proc/randomize_skin_color(var/pass_to_list)
|
||||
/datum/preferences/proc/randomize_skin_color(var/pass_on)
|
||||
var/red
|
||||
var/green
|
||||
var/blue
|
||||
@@ -206,17 +192,10 @@
|
||||
green = max(min(green + rand (-25, 25), 255), 0)
|
||||
blue = max(min(blue + rand (-25, 25), 255), 0)
|
||||
|
||||
if(pass_to_list)
|
||||
var/list/colours = list(
|
||||
"red" = red,
|
||||
"blue" = blue,
|
||||
"green" = green
|
||||
)
|
||||
return colours
|
||||
if(pass_on)
|
||||
return rgb(red, green, blue)
|
||||
else
|
||||
r_skin = red
|
||||
g_skin = green
|
||||
b_skin = blue
|
||||
s_colour = rgb(red, green, blue)
|
||||
|
||||
/datum/preferences/proc/blend_backpack(var/icon/clothes_s,var/backbag,var/satchel,var/backpack="backpack")
|
||||
switch(backbag)
|
||||
@@ -284,7 +263,7 @@
|
||||
|
||||
// Skin color
|
||||
if(current_species && (current_species.bodyflags & HAS_SKIN_COLOR))
|
||||
preview_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
|
||||
preview_icon.Blend(s_colour, ICON_ADD)
|
||||
|
||||
// Skin tone
|
||||
if(current_species && (current_species.bodyflags & HAS_SKIN_TONE))
|
||||
@@ -325,7 +304,7 @@
|
||||
temp.Shift(NORTH, tail_shift_y)
|
||||
|
||||
if(current_species && (current_species.bodyflags & HAS_SKIN_COLOR))
|
||||
temp.Blend(rgb(r_skin, g_skin, b_skin), blend_mode)
|
||||
temp.Blend(s_colour, blend_mode)
|
||||
|
||||
if(current_species && (current_species.bodyflags & HAS_TAIL_MARKINGS))
|
||||
var/tail_marking = m_styles["tail"]
|
||||
@@ -358,7 +337,7 @@
|
||||
var/icon/face_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "bald_s")
|
||||
if(!(current_species.bodyflags & NO_EYES))
|
||||
var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = current_species ? current_species.eyes : "eyes_s")
|
||||
eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
|
||||
eyes_s.Blend(e_colour, ICON_ADD)
|
||||
face_s.Blend(eyes_s, ICON_OVERLAY)
|
||||
|
||||
|
||||
@@ -366,14 +345,14 @@
|
||||
if(hair_style)
|
||||
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
if(current_species.name == "Slime People") // whee I am part of the problem
|
||||
hair_s.Blend(rgb(r_skin, g_skin, b_skin, 160), ICON_ADD)
|
||||
hair_s.Blend("[s_colour]A0", ICON_ADD)
|
||||
else
|
||||
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
|
||||
hair_s.Blend(h_colour, 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_secondary_s.Blend(h_sec_colour, ICON_ADD)
|
||||
hair_s.Blend(hair_secondary_s, ICON_OVERLAY)
|
||||
|
||||
face_s.Blend(hair_s, ICON_OVERLAY)
|
||||
@@ -383,21 +362,21 @@
|
||||
var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[ha_style]
|
||||
if(head_accessory_style && head_accessory_style.species_allowed)
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
head_accessory_s.Blend(rgb(r_headacc, g_headacc, b_headacc), ICON_ADD)
|
||||
head_accessory_s.Blend(hacc_colour, ICON_ADD)
|
||||
face_s.Blend(head_accessory_s, ICON_OVERLAY)
|
||||
|
||||
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style]
|
||||
if(facial_hair_style && facial_hair_style.species_allowed)
|
||||
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
if(current_species.name == "Slime People") // whee I am part of the problem
|
||||
facial_s.Blend(rgb(r_skin, g_skin, b_skin, 160), ICON_ADD)
|
||||
facial_s.Blend("[s_colour]A0", ICON_ADD)
|
||||
else
|
||||
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
|
||||
facial_s.Blend(f_colour, 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_secondary_s.Blend(f_sec_colour, ICON_ADD)
|
||||
facial_s.Blend(facial_secondary_s, ICON_OVERLAY)
|
||||
|
||||
face_s.Blend(facial_s, ICON_OVERLAY)
|
||||
|
||||
@@ -67,14 +67,10 @@
|
||||
return owner.change_skin_tone(new_s_tone)
|
||||
if(href_list["skin_color"])
|
||||
if(can_change_skin_color())
|
||||
var/new_skin = input(usr, "Choose your character's skin colour: ", "Skin Color", rgb(owner.r_skin, owner.g_skin, owner.b_skin)) as color|null
|
||||
if(new_skin && can_still_topic(state))
|
||||
var/r_skin = color2R(new_skin)
|
||||
var/g_skin = color2G(new_skin)
|
||||
var/b_skin = color2B(new_skin)
|
||||
if(owner.change_skin_color(r_skin, g_skin, b_skin))
|
||||
update_dna()
|
||||
return 1
|
||||
var/new_skin = input(usr, "Choose your character's skin colour: ", "Skin Color", owner.skin_colour) as color|null
|
||||
if(new_skin && can_still_topic(state) && owner.change_skin_color(new_skin))
|
||||
update_dna()
|
||||
return 1
|
||||
if(href_list["hair"])
|
||||
if(can_change(APPEARANCE_HAIR) && (href_list["hair"] in valid_hairstyles))
|
||||
if(owner.change_hair(href_list["hair"]))
|
||||
@@ -82,24 +78,16 @@
|
||||
return 1
|
||||
if(href_list["hair_color"])
|
||||
if(can_change(APPEARANCE_HAIR_COLOR))
|
||||
var/new_hair = input("Please select hair color.", "Hair Color", rgb(head_organ.r_hair, head_organ.g_hair, head_organ.b_hair)) as color|null
|
||||
if(new_hair && can_still_topic(state))
|
||||
var/r_hair = color2R(new_hair)
|
||||
var/g_hair = color2G(new_hair)
|
||||
var/b_hair = color2B(new_hair)
|
||||
if(owner.change_hair_color(r_hair, g_hair, b_hair))
|
||||
update_dna()
|
||||
return 1
|
||||
var/new_hair = input("Please select hair color.", "Hair Color", head_organ.hair_colour) as color|null
|
||||
if(new_hair && can_still_topic(state) && owner.change_hair_color(new_hair))
|
||||
update_dna()
|
||||
return 1
|
||||
if(href_list["secondary_hair_color"])
|
||||
if(can_change(APPEARANCE_SECONDARY_HAIR_COLOR))
|
||||
var/new_hair = input("Please select secondary hair color.", "Secondary Hair Color", rgb(head_organ.r_hair_sec, head_organ.g_hair_sec, head_organ.b_hair_sec)) as color|null
|
||||
if(new_hair && can_still_topic(state))
|
||||
var/r_hair_sec = color2R(new_hair)
|
||||
var/g_hair_sec = color2G(new_hair)
|
||||
var/b_hair_sec = color2B(new_hair)
|
||||
if(owner.change_hair_color(r_hair_sec, g_hair_sec, b_hair_sec, 1))
|
||||
update_dna()
|
||||
return 1
|
||||
var/new_hair = input("Please select secondary hair color.", "Secondary Hair Color", head_organ.sec_hair_colour) as color|null
|
||||
if(new_hair && can_still_topic(state) && owner.change_hair_color(new_hair, 1))
|
||||
update_dna()
|
||||
return 1
|
||||
if(href_list["facial_hair"])
|
||||
if(can_change(APPEARANCE_FACIAL_HAIR) && (href_list["facial_hair"] in valid_facial_hairstyles))
|
||||
if(owner.change_facial_hair(href_list["facial_hair"]))
|
||||
@@ -107,42 +95,23 @@
|
||||
return 1
|
||||
if(href_list["facial_hair_color"])
|
||||
if(can_change(APPEARANCE_FACIAL_HAIR_COLOR))
|
||||
var/new_facial = input("Please select facial hair color.", "Facial Hair Color", rgb(head_organ.r_facial, head_organ.g_facial, head_organ.b_facial)) as color|null
|
||||
if(new_facial && can_still_topic(state))
|
||||
var/r_facial = color2R(new_facial)
|
||||
var/g_facial = color2G(new_facial)
|
||||
var/b_facial = color2B(new_facial)
|
||||
if(owner.change_facial_hair_color(r_facial, g_facial, b_facial))
|
||||
update_dna()
|
||||
return 1
|
||||
var/new_facial = input("Please select facial hair color.", "Facial Hair Color", head_organ.facial_colour) as color|null
|
||||
if(new_facial && can_still_topic(state) && owner.change_facial_hair_color(new_facial))
|
||||
update_dna()
|
||||
return 1
|
||||
if(href_list["secondary_facial_hair_color"])
|
||||
if(can_change(APPEARANCE_SECONDARY_FACIAL_HAIR_COLOR))
|
||||
var/new_facial = input("Please select secondary facial hair color.", "Secondary Facial Hair Color", rgb(head_organ.r_facial_sec, head_organ.g_facial_sec, head_organ.b_facial_sec)) as color|null
|
||||
if(new_facial && can_still_topic(state))
|
||||
var/r_facial_sec = color2R(new_facial)
|
||||
var/g_facial_sec = color2G(new_facial)
|
||||
var/b_facial_sec = color2B(new_facial)
|
||||
if(owner.change_facial_hair_color(r_facial_sec, g_facial_sec, b_facial_sec, 1))
|
||||
update_dna()
|
||||
return 1
|
||||
var/new_facial = input("Please select secondary facial hair color.", "Secondary Facial Hair Color", head_organ.sec_facial_colour) as color|null
|
||||
if(new_facial && can_still_topic(state) && owner.change_facial_hair_color(new_facial, 1))
|
||||
update_dna()
|
||||
return 1
|
||||
if(href_list["eye_color"])
|
||||
if(can_change(APPEARANCE_EYE_COLOR))
|
||||
var/obj/item/organ/internal/eyes/eyes_organ = owner.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
var/eyes_red = 0
|
||||
var/eyes_green = 0
|
||||
var/eyes_blue = 0
|
||||
if(eyes_organ)
|
||||
eyes_red = eyes_organ.eye_colour[1]
|
||||
eyes_green = eyes_organ.eye_colour[2]
|
||||
eyes_blue = eyes_organ.eye_colour[3]
|
||||
var/new_eyes = input("Please select eye color.", "Eye Color", rgb(eyes_red, eyes_green, eyes_blue)) as color|null
|
||||
if(new_eyes && can_still_topic(state))
|
||||
var/r_eyes = color2R(new_eyes)
|
||||
var/g_eyes = color2G(new_eyes)
|
||||
var/b_eyes = color2B(new_eyes)
|
||||
if(owner.change_eye_color(r_eyes, g_eyes, b_eyes))
|
||||
update_dna()
|
||||
return 1
|
||||
var/new_eyes = input("Please select eye color.", "Eye Color", eyes_organ.eye_colour) as color|null
|
||||
if(new_eyes && can_still_topic(state) && owner.change_eye_color(new_eyes))
|
||||
update_dna()
|
||||
return 1
|
||||
if(href_list["head_accessory"])
|
||||
if(can_change_head_accessory() && (href_list["head_accessory"] in valid_head_accessories))
|
||||
if(owner.change_head_accessory(href_list["head_accessory"]))
|
||||
@@ -150,14 +119,10 @@
|
||||
return 1
|
||||
if(href_list["head_accessory_color"])
|
||||
if(can_change_head_accessory())
|
||||
var/new_head_accessory = input("Please select head accessory color.", "Head Accessory Color", rgb(head_organ.r_headacc, head_organ.g_headacc, head_organ.b_headacc)) as color|null
|
||||
if(new_head_accessory && can_still_topic(state))
|
||||
var/r_headacc = color2R(new_head_accessory)
|
||||
var/g_headacc = color2G(new_head_accessory)
|
||||
var/b_headacc = color2B(new_head_accessory)
|
||||
if(owner.change_head_accessory_color(r_headacc, g_headacc, b_headacc))
|
||||
update_dna()
|
||||
return 1
|
||||
var/new_head_accessory = input("Please select head accessory color.", "Head Accessory Color", head_organ.headacc_colour) as color|null
|
||||
if(new_head_accessory && can_still_topic(state) && owner.change_head_accessory_color(new_head_accessory))
|
||||
update_dna()
|
||||
return 1
|
||||
if(href_list["head_marking"])
|
||||
if(can_change_markings("head") && (href_list["head_marking"] in valid_head_marking_styles))
|
||||
if(owner.change_markings(href_list["head_marking"], "head"))
|
||||
@@ -166,10 +131,9 @@
|
||||
if(href_list["head_marking_color"])
|
||||
if(can_change_markings("head"))
|
||||
var/new_markings = input("Please select head marking color.", "Marking Color", owner.m_colours["head"]) as color|null
|
||||
if(new_markings && can_still_topic(state))
|
||||
if(owner.change_marking_color(new_markings, "head"))
|
||||
update_dna()
|
||||
return 1
|
||||
if(new_markings && can_still_topic(state) && owner.change_marking_color(new_markings, "head"))
|
||||
update_dna()
|
||||
return 1
|
||||
if(href_list["body_marking"])
|
||||
if(can_change_markings("body") && (href_list["body_marking"] in valid_body_marking_styles))
|
||||
if(owner.change_markings(href_list["body_marking"], "body"))
|
||||
@@ -178,10 +142,9 @@
|
||||
if(href_list["body_marking_color"])
|
||||
if(can_change_markings("body"))
|
||||
var/new_markings = input("Please select body marking color.", "Marking Color", owner.m_colours["body"]) as color|null
|
||||
if(new_markings && can_still_topic(state))
|
||||
if(owner.change_marking_color(new_markings, "body"))
|
||||
update_dna()
|
||||
return 1
|
||||
if(new_markings && can_still_topic(state) && owner.change_marking_color(new_markings, "body"))
|
||||
update_dna()
|
||||
return 1
|
||||
if(href_list["tail_marking"])
|
||||
if(can_change_markings("tail") && (href_list["tail_marking"] in valid_tail_marking_styles))
|
||||
if(owner.change_markings(href_list["tail_marking"], "tail"))
|
||||
@@ -190,10 +153,9 @@
|
||||
if(href_list["tail_marking_color"])
|
||||
if(can_change_markings("tail"))
|
||||
var/new_markings = input("Please select tail marking color.", "Marking Color", owner.m_colours["tail"]) as color|null
|
||||
if(new_markings && can_still_topic(state))
|
||||
if(owner.change_marking_color(new_markings, "tail"))
|
||||
update_dna()
|
||||
return 1
|
||||
if(new_markings && can_still_topic(state) && owner.change_marking_color(new_markings, "tail"))
|
||||
update_dna()
|
||||
return 1
|
||||
if(href_list["body_accessory"])
|
||||
if(can_change_body_accessory() && (href_list["body_accessory"] in valid_body_accessories))
|
||||
if(owner.change_body_accessory(href_list["body_accessory"]))
|
||||
|
||||
@@ -275,12 +275,10 @@
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
|
||||
head_organ.r_facial = rand(0,255)
|
||||
head_organ.g_facial = rand(0,255)
|
||||
head_organ.b_facial = rand(0,255)
|
||||
head_organ.r_hair = rand(0,255)
|
||||
head_organ.g_hair = rand(0,255)
|
||||
head_organ.b_hair = rand(0,255)
|
||||
head_organ.facial_colour = rand_hex_color()
|
||||
head_organ.sec_facial_colour = rand_hex_color()
|
||||
head_organ.hair_colour = rand_hex_color()
|
||||
head_organ.sec_hair_colour = rand_hex_color()
|
||||
H.update_hair()
|
||||
H.update_fhair()
|
||||
..()
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
var/vision_flags = 0
|
||||
var/dark_view = 0
|
||||
var/see_invisible = 0
|
||||
var/list/eye_colour = list(0,0,0)
|
||||
var/list/old_eye_colour = list(0,0,0)
|
||||
var/eye_colour = "#000000"
|
||||
var/old_eye_colour = "#000000"
|
||||
var/flash_protect = 0
|
||||
var/aug_message = "Your vision is augmented!"
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
/obj/item/organ/internal/cyberimp/eyes/xray
|
||||
name = "X-ray implant"
|
||||
desc = "These cybernetic eye implants will give you X-ray vision. Blinking is futile."
|
||||
eye_colour = list(0, 0, 0)
|
||||
implant_color = "#000000"
|
||||
origin_tech = "materials=4;programming=4;biotech=6;magnets=4"
|
||||
vision_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS
|
||||
@@ -50,7 +49,7 @@
|
||||
/obj/item/organ/internal/cyberimp/eyes/thermals
|
||||
name = "Thermals implant"
|
||||
desc = "These cybernetic eye implants will give you Thermal vision. Vertical slit pupil included."
|
||||
eye_colour = list(255, 204, 0)
|
||||
eye_colour = "#FFCC00"
|
||||
implant_color = "#FFCC00"
|
||||
vision_flags = SEE_MOBS
|
||||
flash_protect = -1
|
||||
@@ -81,7 +80,7 @@
|
||||
/obj/item/organ/internal/cyberimp/eyes/hud/medical
|
||||
name = "Medical HUD implant"
|
||||
desc = "These cybernetic eye implants will display a medical HUD over everything you see."
|
||||
eye_colour = list(0,0,208)
|
||||
eye_colour = "#0000D0"
|
||||
implant_color = "#00FFFF"
|
||||
origin_tech = "materials=4;programming=4;biotech=4"
|
||||
aug_message = "You suddenly see health bars floating above people's heads..."
|
||||
@@ -90,7 +89,7 @@
|
||||
/obj/item/organ/internal/cyberimp/eyes/hud/security
|
||||
name = "Security HUD implant"
|
||||
desc = "These cybernetic eye implants will display a security HUD over everything you see."
|
||||
eye_colour = list(208,0,0)
|
||||
eye_colour = "#D00000"
|
||||
implant_color = "#CC0000"
|
||||
origin_tech = "materials=4;programming=4;biotech=3;combat=3"
|
||||
aug_message = "Job indicator icons pop up in your vision. That is not a certified surgeon..."
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
var/cannot_amputate
|
||||
var/cannot_break
|
||||
var/s_tone = null
|
||||
var/list/s_col = null // If this is instantiated, it should be a list of length 3
|
||||
var/s_col = null // If this is instantiated, it should be a hex value.
|
||||
var/list/child_icons = list()
|
||||
var/perma_injury = 0
|
||||
var/dismember_at_max_damage = FALSE
|
||||
|
||||
@@ -38,7 +38,7 @@ var/global/list/limb_icon_cache = list()
|
||||
s_tone = H.s_tone
|
||||
if(H.species.bodyflags & HAS_SKIN_COLOR)
|
||||
s_tone = null
|
||||
s_col = list(H.r_skin, H.g_skin, H.b_skin)
|
||||
s_col = H.skin_colour
|
||||
if(H.species.bodyflags & HAS_ICON_SKIN_TONE)
|
||||
var/obj/item/organ/external/chest/C = H.get_organ("chest")
|
||||
change_organ_icobase(C.icobase, C.deform)
|
||||
@@ -51,7 +51,7 @@ var/global/list/limb_icon_cache = list()
|
||||
s_tone = dna.GetUIValue(DNA_UI_SKIN_TONE)
|
||||
if(species.bodyflags & HAS_SKIN_COLOR)
|
||||
s_tone = null
|
||||
s_col = list(dna.GetUIValue(DNA_UI_SKIN_R), dna.GetUIValue(DNA_UI_SKIN_G), dna.GetUIValue(DNA_UI_SKIN_B))
|
||||
s_col = rgb(dna.GetUIValue(DNA_UI_SKIN_R), dna.GetUIValue(DNA_UI_SKIN_G), dna.GetUIValue(DNA_UI_SKIN_B))
|
||||
|
||||
/obj/item/organ/external/head/sync_colour_to_human(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
@@ -69,8 +69,8 @@ var/global/list/limb_icon_cache = list()
|
||||
if(force_icon)
|
||||
mob_icon = new /icon(force_icon, "[icon_name]")
|
||||
if(species && species.name == "Machine") //snowflake for IPC's, sorry.
|
||||
if(s_col && s_col.len >= 3)
|
||||
mob_icon.Blend(rgb(s_col[1], s_col[2], s_col[3]), ICON_ADD)
|
||||
if(s_col)
|
||||
mob_icon.Blend(s_col, ICON_ADD)
|
||||
else
|
||||
var/new_icons = get_icon_state(skeletal)
|
||||
var/icon_file = new_icons[1]
|
||||
@@ -86,8 +86,8 @@ var/global/list/limb_icon_cache = list()
|
||||
mob_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
|
||||
else
|
||||
mob_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
|
||||
else if(s_col && s_col.len >= 3)
|
||||
mob_icon.Blend(rgb(s_col[1], s_col[2], s_col[3]), ICON_ADD)
|
||||
else if(s_col)
|
||||
mob_icon.Blend(s_col, ICON_ADD)
|
||||
|
||||
dir = EAST
|
||||
icon = mob_icon
|
||||
@@ -107,11 +107,11 @@ var/global/list/limb_icon_cache = list()
|
||||
if(species.eyes)
|
||||
var/icon/eyes_icon = new/icon('icons/mob/human_face.dmi', species.eyes)
|
||||
if(eye_implant) // Eye implants override native DNA eye color
|
||||
eyes_icon.Blend(rgb(eye_implant.eye_colour[1],eye_implant.eye_colour[2],eye_implant.eye_colour[3]), ICON_ADD)
|
||||
eyes_icon.Blend(eye_implant.eye_colour, ICON_ADD)
|
||||
else if(eyes)
|
||||
eyes_icon.Blend(rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3]), ICON_ADD)
|
||||
eyes_icon.Blend(eyes.eye_colour, ICON_ADD)
|
||||
else
|
||||
eyes_icon.Blend(rgb(128,0,0), ICON_ADD)
|
||||
eyes_icon.Blend("#800000", ICON_ADD)
|
||||
mob_icon.Blend(eyes_icon, ICON_OVERLAY)
|
||||
overlays |= eyes_icon
|
||||
|
||||
@@ -134,7 +134,7 @@ var/global/list/limb_icon_cache = list()
|
||||
if(head_accessory_style && head_accessory_style.species_allowed && (species.name in head_accessory_style.species_allowed))
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
if(head_accessory_style.do_colouration)
|
||||
head_accessory_s.Blend(rgb(r_headacc, g_headacc, b_headacc), ICON_ADD)
|
||||
head_accessory_s.Blend(headacc_colour, ICON_ADD)
|
||||
overlays |= head_accessory_s
|
||||
|
||||
if(f_style)
|
||||
@@ -142,9 +142,9 @@ var/global/list/limb_icon_cache = list()
|
||||
if(facial_hair_style && ((facial_hair_style.species_allowed && (species.name in facial_hair_style.species_allowed)) || (src.species.bodyflags & ALL_RPARTS)))
|
||||
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
if(species.name == "Slime People") // I am el worstos
|
||||
facial_s.Blend(rgb(owner.r_skin, owner.g_skin, owner.b_skin, 160), ICON_AND)
|
||||
facial_s.Blend("[owner.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
|
||||
else if(facial_hair_style.do_colouration)
|
||||
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
|
||||
facial_s.Blend(facial_colour, ICON_ADD)
|
||||
overlays |= facial_s
|
||||
|
||||
if(h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR)))
|
||||
@@ -152,9 +152,9 @@ var/global/list/limb_icon_cache = list()
|
||||
if(hair_style && ((species.name in hair_style.species_allowed) || (src.species.bodyflags & ALL_RPARTS)))
|
||||
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
if(species.name == "Slime People") // I am el worstos
|
||||
hair_s.Blend(rgb(owner.r_skin, owner.g_skin, owner.b_skin, 160), ICON_AND)
|
||||
hair_s.Blend("[owner.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
|
||||
else if(hair_style.do_colouration)
|
||||
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
|
||||
hair_s.Blend(hair_colour, ICON_ADD)
|
||||
overlays |= hair_s
|
||||
|
||||
return mob_icon
|
||||
|
||||
@@ -324,7 +324,7 @@
|
||||
organ_tag = "eyes"
|
||||
parent_organ = "head"
|
||||
slot = "eyes"
|
||||
var/list/eye_colour = list(0,0,0)
|
||||
var/eye_colour = "#000000"
|
||||
var/list/colourmatrix = null
|
||||
var/list/colourblind_matrix = MATRIX_GREYSCALE //Special colourblindness parameters. By default, it's black-and-white.
|
||||
var/colourblind_darkview = null
|
||||
@@ -630,13 +630,9 @@
|
||||
head_organ.h_style = "Mohawk"
|
||||
else
|
||||
head_organ.h_style = "Very Long Hair"
|
||||
head_organ.r_hair = 216
|
||||
head_organ.g_hair = 192
|
||||
head_organ.b_hair = 120
|
||||
head_organ.hair_colour = "#D8C078"
|
||||
H.update_hair()
|
||||
if(!(head_organ.f_style == "Very Long Beard"))
|
||||
head_organ.f_style = "Very Long Beard"
|
||||
head_organ.r_facial = 216
|
||||
head_organ.g_facial = 192
|
||||
head_organ.b_facial = 120
|
||||
head_organ.facial_colour = "#D8C078"
|
||||
H.update_fhair()
|
||||
|
||||
@@ -169,27 +169,17 @@
|
||||
var/alt_head = "None"
|
||||
|
||||
//Hair colour and style
|
||||
var/r_hair = 0
|
||||
var/g_hair = 0
|
||||
var/b_hair = 0
|
||||
var/r_hair_sec = 0
|
||||
var/g_hair_sec = 0
|
||||
var/b_hair_sec = 0
|
||||
var/hair_colour = "#000000"
|
||||
var/sec_hair_colour = "#000000"
|
||||
var/h_style = "Bald"
|
||||
|
||||
//Head accessory colour and style
|
||||
var/r_headacc = 0
|
||||
var/g_headacc = 0
|
||||
var/b_headacc = 0
|
||||
var/headacc_colour = "#000000"
|
||||
var/ha_style = "None"
|
||||
|
||||
//Facial hair colour and style
|
||||
var/r_facial = 0
|
||||
var/g_facial = 0
|
||||
var/b_facial = 0
|
||||
var/r_facial_sec = 0
|
||||
var/g_facial_sec = 0
|
||||
var/b_facial_sec = 0
|
||||
var/facial_colour = "#000000"
|
||||
var/sec_facial_colour = "#000000"
|
||||
var/f_style = "Shaved"
|
||||
|
||||
/obj/item/organ/external/head/remove()
|
||||
|
||||
Reference in New Issue
Block a user