Initial commit containing all the necessary code files that allow Tajaran, Unathi, and Skrell to change both their hair and body color to match. NO MORE GREEN/GREY!

Conflicts:
	code/modules/client/preferences.dm
	code/modules/mob/living/carbon/human/human_defines.dm
	code/modules/mob/living/carbon/species.dm
	code/setup.dm
This commit is contained in:
suethecake
2014-04-27 01:00:16 -06:00
committed by ZomgPonies
parent 5170294fff
commit 10b7a2e8d9
12 changed files with 158 additions and 24 deletions
+6
View File
@@ -673,6 +673,12 @@ var/list/admin_verbs_mod = list(
M.g_eyes = hex2num(copytext(new_eyes, 4, 6))
M.b_eyes = hex2num(copytext(new_eyes, 6, 8))
var/new_skin = input("Please select body color. This is for Tajaran, Unathi, and Skrell only!", "Character Generation") as color
if(new_skin)
M.r_skin = hex2num(copytext(new_skin, 2, 4))
M.g_skin = hex2num(copytext(new_skin, 4, 6))
M.b_skin = hex2num(copytext(new_skin, 6, 8))
var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
if (new_tone)
+26 -4
View File
@@ -67,7 +67,10 @@ datum/preferences
var/r_facial = 0 //Face hair color
var/g_facial = 0 //Face hair color
var/b_facial = 0 //Face hair color
var/s_tone = 0 //Skin 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
@@ -182,10 +185,10 @@ datum/preferences
dat += "<br>"
dat += "Species: <a href='?_src_=prefs;preference=species;task=input'>[species]</a><br>"
dat += "Secondary Language:<br><a href='?_src_=prefs;preference=language;task=input'>[language]</a><br>"
dat += "Accent: <a href='?_src_=prefs;preference=accent;task=input'>[accent]</a><br>"
/* dat += "Accent: <a href='?_src_=prefs;preference=accent;task=input'>[accent]</a><br>"
dat += "Voice: <a href='?_src_=prefs;preference=voice;task=input'>[voice]</a><br>"
dat += "Pitch: <a href='?_src_=prefs;preference=pitch;task=input'>[pitch]</a><br>"
dat += "Talking Speed: <a href='?_src_=prefs;preference=talkspeed;task=input'>[talkspeed]</a><br>"
dat += "Talking Speed: <a href='?_src_=prefs;preference=talkspeed;task=input'>[talkspeed]</a><br>"*/
dat += "Blood Type: <a href='?_src_=prefs;preference=b_type;task=input'>[b_type]</a><br>"
dat += "Skin Tone: <a href='?_src_=prefs;preference=s_tone;task=input'>[-s_tone + 35]/220<br></a>"
// dat += "Skin pattern: <a href='byond://?src=\ref[user];preference=skin_style;task=input'>Adjust</a><br>"
@@ -296,7 +299,10 @@ datum/preferences
dat += " Style: <a href='?_src_=prefs;preference=f_style;task=input'>[f_style]</a><br>"
dat += "<br><b>Eyes</b><br>"
dat += "<a href='?_src_=prefs;preference=eyes;task=input'>Change Color</a> <font face='fixedsys' size='3' color='#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes, 2)]'><table style='display:inline;' bgcolor='#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes)]'><tr><td>__</td></tr></table></font>"
dat += "<a href='?_src_=prefs;preference=eyes;task=input'>Change Color</a> <font face='fixedsys' size='3' color='#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes, 2)]'><table style='display:inline;' bgcolor='#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes)]'><tr><td>__</td></tr></table></font><br>"
dat += "<br><b>Body Color</b><br>"
dat += "<a href='?_src_=prefs;preference=skin;task=input'>Change Color</a> <font face='fixedsys' size='3' color='#[num2hex(r_skin, 2)][num2hex(g_skin, 2)][num2hex(b_skin, 2)]'><table style='display:inline;' bgcolor='#[num2hex(r_skin, 2)][num2hex(g_skin, 2)][num2hex(b_skin)]'><tr><td>__</td></tr></table></font>"
dat += "</td></tr></table><hr><center>"
@@ -932,6 +938,10 @@ datum/preferences
b_eyes = rand(0,255)
if("s_tone")
s_tone = random_skin_tone()
if("s_color")
r_skin = rand(0,255)
g_skin = rand(0,255)
b_skin = rand(0,255)
if("bag")
backbag = rand(1,4)
/*if("skin_style")
@@ -1143,6 +1153,14 @@ datum/preferences
if(new_s_tone)
s_tone = 35 - max(min( round(new_s_tone), 220),1)
if("skin")
if(species == "Unathi" || species == "Tajaran" || species == "Skrell")
var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference") as color|null
if(new_skin)
r_skin = hex2num(copytext(new_skin, 2, 4))
g_skin = hex2num(copytext(new_skin, 4, 6))
b_skin = hex2num(copytext(new_skin, 6, 8))
if("ooccolor")
var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference") as color|null
if(new_ooccolor)
@@ -1376,6 +1394,10 @@ datum/preferences
character.g_facial = g_facial
character.b_facial = b_facial
character.r_skin = r_skin
character.g_skin = g_skin
character.b_skin = b_skin
character.s_tone = s_tone
character.h_style = h_style
+10 -1
View File
@@ -270,6 +270,9 @@
S["facial_green"] >> g_facial
S["facial_blue"] >> b_facial
S["skin_tone"] >> s_tone
S["skin_red"] >> r_skin
S["skin_green"] >> g_skin
S["skin_blue"] >> b_skin
S["hair_style_name"] >> h_style
S["facial_style_name"] >> f_style
S["eyes_red"] >> r_eyes
@@ -323,6 +326,9 @@
g_facial = sanitize_integer(g_facial, 0, 255, initial(g_facial))
b_facial = sanitize_integer(b_facial, 0, 255, initial(b_facial))
s_tone = sanitize_integer(s_tone, -185, 34, initial(s_tone))
r_skin = sanitize_integer(r_facial, 0, 255, initial(r_skin))
g_skin = sanitize_integer(r_facial, 0, 255, initial(g_skin))
b_skin = sanitize_integer(r_facial, 0, 255, initial(b_skin))
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))
r_eyes = sanitize_integer(r_eyes, 0, 255, initial(r_eyes))
@@ -371,7 +377,10 @@
S["facial_red"] << r_facial
S["facial_green"] << g_facial
S["facial_blue"] << b_facial
S["skin_tone"] << s_tone
S["skin_tone"] >> s_tone
S["skin_red"] << r_skin
S["skin_green"] << g_skin
S["skin_blue"] << b_skin
S["hair_style_name"] << h_style
S["facial_style_name"] << f_style
S["eyes_red"] << r_eyes
@@ -18,6 +18,11 @@
var/s_tone = 0 //Skin tone
//Skin colour
var/r_skin = 0
var/g_skin = 0
var/b_skin = 0
var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup
var/age = 30 //Player's age (pure fluff)
@@ -295,12 +295,16 @@ proc/get_damage_icon_part(damage_state, body_part)
stand_icon.Blend(temp, ICON_OVERLAY)
//Skin tone
if(!skeleton && !husk && !hulk && (species.flags & HAS_SKIN_TONE))
if(!skeleton && !husk && !hulk && (species.bodyflags & HAS_SKIN_TONE))
if(s_tone >= 0)
stand_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
else
stand_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
//Skin color
if(!skeleton && !husk && !hulk && (species.flags & HAS_SKIN_COLOR))
stand_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
if(husk)
var/icon/mask = new(stand_icon)
var/icon/husk_over = new(race_icon,"overlay_husk")
@@ -852,7 +856,11 @@ proc/get_damage_icon_part(damage_state, body_part)
if(species.tail && species.bodyflags & HAS_TAIL)
if(!wear_suit || !(wear_suit.flags_inv & HIDEJUMPSUIT) && !istype(wear_suit, /obj/item/clothing/suit/space))
overlays_standing[TAIL_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s")
var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s")
tail_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
stand_icon.Blend(tail_s, ICON_OVERLAY)
overlays_standing[TAIL_LAYER] = image(stand_icon)
if(update_icons)
update_icons()
+14 -6
View File
@@ -43,7 +43,7 @@
var/flags = 0 // Various specific features.
var/bloodflags=0
var/bodyflags=0
var/flesh_color = "#FFC896" //Pink.
var/list/abilities = list() // For species-derived or admin-given powers
/datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs.
@@ -104,7 +104,8 @@
deform = 'icons/mob/human_races/r_def_human.dmi'
primitive = /mob/living/carbon/monkey
path = /mob/living/carbon/human/human
flags = HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT
flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT
bodyflags = HAS_SKIN_TONE
/datum/species/unathi
name = "Unathi"
@@ -118,7 +119,7 @@
darksight = 3
flags = HAS_LIPS | HAS_UNDERWEAR
bodyflags = FEET_CLAWS | HAS_TAIL
bodyflags = FEET_CLAWS | HAS_TAIL | HAS_SKIN_COLOR
cold_level_1 = 280 //Default 260 - Lower is better
cold_level_2 = 220 //Default 200
@@ -128,6 +129,9 @@
heat_level_2 = 480 //Default 400
heat_level_3 = 1100 //Default 1000
flesh_color = "#34AF10"
/datum/species/tajaran
name = "Tajaran"
icobase = 'icons/mob/human_races/r_tajaran.dmi'
@@ -149,7 +153,9 @@
primitive = /mob/living/carbon/monkey/tajara
flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT
bodyflags = FEET_PADDED | HAS_TAIL
bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR
flesh_color = "#AFA59E"
/datum/species/skrell
name = "Skrell"
@@ -161,6 +167,9 @@
flags = HAS_LIPS | HAS_UNDERWEAR
bloodflags = BLOOD_GREEN
bodyflags = HAS_SKIN_COLOR
flesh_color = "#8CD7A3"
/datum/species/vox
name = "Vox"
@@ -319,5 +328,4 @@
flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | IS_SYNTHETIC
// blood_color = "#FFFFFF"
// flesh_color = "#AAAAAA"
flesh_color = "#AAAAAA"
@@ -12,6 +12,7 @@ datum/preferences
randomize_hair_color("hair")
randomize_hair_color("facial")
randomize_eyes_color()
randomize_skin_color()
underwear = rand(1,underwear_m.len)
undershirt = rand(1,undershirt_t.len)
backbag = 2
@@ -128,6 +129,54 @@ datum/preferences
g_eyes = green
b_eyes = blue
proc/randomize_skin_color()
var/red
var/green
var/blue
var/col = pick ("black", "grey", "brown", "chestnut", "blue", "lightblue", "green", "albino")
switch(col)
if("black")
red = 0
green = 0
blue = 0
if("grey")
red = rand (100, 200)
green = red
blue = red
if("brown")
red = 102
green = 51
blue = 0
if("chestnut")
red = 153
green = 102
blue = 0
if("blue")
red = 51
green = 102
blue = 204
if("lightblue")
red = 102
green = 204
blue = 255
if("green")
red = 0
green = 102
blue = 0
if("albino")
red = rand (200, 255)
green = rand (0, 150)
blue = rand (0, 150)
red = max(min(red + rand (-25, 25), 255), 0)
green = max(min(green + rand (-25, 25), 255), 0)
blue = max(min(blue + rand (-25, 25), 255), 0)
r_skin = red
g_skin = green
b_skin = blue
proc/update_preview_icon(var/for_observer=0) //seriously. This is horrendous.
del(preview_icon_front)
@@ -166,6 +215,10 @@ datum/preferences
preview_icon.Blend(temp, ICON_OVERLAY)
// Skin color
if(current_species && (current_species.bodyflags & HAS_SKIN_COLOR))
preview_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
// Skin tone
if(current_species && (current_species.flags & HAS_SKIN_TONE))
if (s_tone >= 0)
+6 -1
View File
@@ -899,12 +899,17 @@ obj/item/weapon/organ/New(loc, mob/living/carbon/human/H)
if(base)
//Changing limb's skin tone to match owner
if(!H.species || H.species.flags & HAS_SKIN_TONE)
if(!H.species || H.species.bodyflags & HAS_SKIN_TONE)
if (H.s_tone >= 0)
base.Blend(rgb(H.s_tone, H.s_tone, H.s_tone), ICON_ADD)
else
base.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT)
if(base)
//Changing limb's skin color to match owner
if(!H.species || H.species.flags & HAS_SKIN_COLOR)
base.Blend(rgb(H.r_skin, H.g_skin, H.b_skin), ICON_ADD)
icon = base
dir = SOUTH
src.transform = turn(src.transform, rand(70,130))