mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
Second package of skin tone fixes (#29489)
* further skin tone fixes * a bit more
This commit is contained in:
@@ -32,7 +32,7 @@
|
||||
var/f_style = "Shaved" //Facial hair type
|
||||
var/f_colour = "#000000" //Facial hair color
|
||||
var/f_sec_colour = "#000000" //Secondary facial hair color
|
||||
var/s_tone = 0 //Skin tone
|
||||
var/s_tone = 1 //Skin tone
|
||||
var/s_colour = "#000000" //Skin color
|
||||
var/e_colour = "#000000" //Eye color
|
||||
var/alt_head = "None" //Alt head style.
|
||||
@@ -619,7 +619,9 @@
|
||||
socks = random_socks(body_type, species)
|
||||
if(length(GLOB.body_accessory_by_species[species]))
|
||||
body_accessory = random_body_accessory(species, S.optional_body_accessory)
|
||||
if(S.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE))
|
||||
if(S.bodyflags & HAS_SKIN_TONE)
|
||||
s_tone = 35 - random_skin_tone(species)
|
||||
else if(S.bodyflags & HAS_ICON_SKIN_TONE)
|
||||
s_tone = random_skin_tone(species)
|
||||
h_style = random_hair_style(gender, species, robohead)
|
||||
f_style = random_facial_hair_style(gender, species, robohead)
|
||||
|
||||
@@ -151,8 +151,10 @@
|
||||
if("eyes")
|
||||
active_character.e_colour = rand_hex_color()
|
||||
if("s_tone")
|
||||
if(S.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE))
|
||||
active_character.s_tone = random_skin_tone()
|
||||
if(S.bodyflags & HAS_SKIN_TONE)
|
||||
active_character.s_tone = 35 - random_skin_tone(active_character.species)
|
||||
else if(S.bodyflags & HAS_ICON_SKIN_TONE)
|
||||
active_character.s_tone = random_skin_tone(active_character.species)
|
||||
if("s_color")
|
||||
if(S.bodyflags & HAS_SKIN_COLOR)
|
||||
active_character.s_colour = rand_hex_color()
|
||||
@@ -246,10 +248,12 @@
|
||||
active_character.socks = random_socks(active_character.body_type, active_character.species)
|
||||
|
||||
//reset skin tone and colour
|
||||
if(NS.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE))
|
||||
random_skin_tone(active_character.species)
|
||||
if(NS.bodyflags & HAS_SKIN_TONE)
|
||||
active_character.s_tone = 35 - random_skin_tone(active_character.species)
|
||||
else if(NS.bodyflags & HAS_ICON_SKIN_TONE)
|
||||
active_character.s_tone = random_skin_tone(active_character.species)
|
||||
else
|
||||
active_character.s_tone = 0
|
||||
active_character.s_tone = 1
|
||||
|
||||
if(!(NS.bodyflags & HAS_SKIN_COLOR))
|
||||
active_character.s_colour = "#000000"
|
||||
@@ -639,18 +643,18 @@
|
||||
active_character.e_colour = new_eyes
|
||||
|
||||
if("s_tone")
|
||||
var/new_s_tone
|
||||
if(S.bodyflags & HAS_SKIN_TONE)
|
||||
var/new_s_tone = input(user, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Character Preference") as num|null
|
||||
new_s_tone = tgui_input_number(user, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Character Preference", -active_character.s_tone + 35, 220, 1)
|
||||
if(isnull(new_s_tone))
|
||||
return
|
||||
active_character.s_tone = 35 - max(min(round(new_s_tone), 220), 1)
|
||||
active_character.s_tone = 35 - new_s_tone
|
||||
else if(S.bodyflags & HAS_ICON_SKIN_TONE)
|
||||
var/const/MAX_LINE_ENTRIES = 4
|
||||
var/prompt = "Choose your character's skin tone: 1-[length(S.icon_skin_tones)]\n(Light to Dark)"
|
||||
var/skin_c = tgui_input_number(user, prompt, "Character Preference", active_character.s_tone, length(S.icon_skin_tones), 1)
|
||||
if(isnull(skin_c))
|
||||
new_s_tone = tgui_input_number(user, prompt, "Character Preference", active_character.s_tone, length(S.icon_skin_tones), 1)
|
||||
if(isnull(new_s_tone))
|
||||
return
|
||||
active_character.s_tone = skin_c
|
||||
active_character.s_tone = new_s_tone
|
||||
|
||||
if("skin")
|
||||
if((S.bodyflags & HAS_SKIN_COLOR) || GLOB.body_accessory_by_species[active_character.species] || check_rights(R_ADMIN, 0, user))
|
||||
|
||||
@@ -129,8 +129,14 @@
|
||||
/obj/item/fluff/bird_painter/attack_self__legacy__attackchain(mob/user)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.s_tone = -115
|
||||
H.regenerate_icons()
|
||||
if(H.dna.species.bodyflags & (HAS_SKIN_TONE | HAS_ICON_SKIN_TONE))
|
||||
H.change_skin_tone(-115, TRUE)
|
||||
else if(H.dna.species.bodyflags & HAS_SKIN_COLOR)
|
||||
var/list/hsl = rgb2hsl(hex2num(copytext(H.skin_colour, 2, 4)), hex2num(copytext(H.skin_colour, 4, 6)), hex2num(copytext(color, 6, 8)))
|
||||
hsl[3] = min(hsl[3], 0.15) // makes their current skin color dark, setting its lightness to max of 15%
|
||||
var/list/rgb = hsl2rgb(arglist(hsl))
|
||||
var/new_color = "#[num2hex(rgb[1], 2)][num2hex(rgb[2], 2)][num2hex(rgb[3], 2)]"
|
||||
H.change_skin_color(new_color)
|
||||
to_chat(user, "You use [src] on yourself.")
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -318,18 +318,18 @@
|
||||
return TRUE
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/change_skin_color(colour = "#000000")
|
||||
if(colour == skin_colour || !(dna.species.bodyflags & HAS_SKIN_COLOR))
|
||||
/mob/living/carbon/human/proc/change_skin_color(color = "#000000")
|
||||
if(!is_color_text(color) || color == skin_colour || !(dna.species.bodyflags & HAS_SKIN_COLOR))
|
||||
return
|
||||
|
||||
skin_colour = colour
|
||||
skin_colour = color
|
||||
|
||||
force_update_limbs()
|
||||
return TRUE
|
||||
|
||||
/// Tone must be between -185 and 220. commonly used in 1 to 220, see `random_skin_tone()` for species-specific values
|
||||
/mob/living/carbon/human/proc/change_skin_tone(tone, override = FALSE)
|
||||
if(s_tone == tone || !((dna.species.bodyflags & HAS_SKIN_TONE) || (dna.species.bodyflags & HAS_ICON_SKIN_TONE)))
|
||||
if(!isnum(tone) || !((dna.species.bodyflags & HAS_SKIN_TONE) || (dna.species.bodyflags & HAS_ICON_SKIN_TONE)))
|
||||
return
|
||||
|
||||
if(tone in -185 to 220)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/list/m_colours = DEFAULT_MARKING_COLOURS //All colours set to #000000.
|
||||
var/list/m_styles = DEFAULT_MARKING_STYLES //All markings set to None.
|
||||
|
||||
var/s_tone = 0 //Skin tone
|
||||
var/s_tone = 1 //Skin tone
|
||||
|
||||
//Skin colour
|
||||
var/skin_colour = "#000000"
|
||||
|
||||
@@ -1176,8 +1176,8 @@
|
||||
else
|
||||
skin_colour = "#000000"
|
||||
|
||||
if(!(dna.species.bodyflags & HAS_SKIN_TONE))
|
||||
s_tone = 0
|
||||
if(!(dna.species.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE)))
|
||||
s_tone = 1
|
||||
|
||||
var/list/thing_to_check = list(ITEM_SLOT_MASK, ITEM_SLOT_HEAD, ITEM_SLOT_SHOES, ITEM_SLOT_GLOVES, ITEM_SLOT_LEFT_EAR, ITEM_SLOT_RIGHT_EAR, ITEM_SLOT_EYES, ITEM_SLOT_LEFT_HAND, ITEM_SLOT_RIGHT_HAND, ITEM_SLOT_NECK)
|
||||
var/list/kept_items[0]
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
if(istype(head_organ))
|
||||
head_organ.h_style = "Bald"
|
||||
head_organ.f_style = "Shaved"
|
||||
target.s_tone = 35
|
||||
target.change_skin_tone(1)
|
||||
// No `update_dna=0` here because the character is being over-written
|
||||
target.change_eye_color(1,1,1)
|
||||
for(var/obj/item/W in target.get_all_slots())
|
||||
|
||||
@@ -803,9 +803,18 @@
|
||||
|
||||
/datum/reagent/spraytan/proc/set_skin_color(mob/living/carbon/human/H)
|
||||
if(H.dna.species.bodyflags & HAS_SKIN_TONE)
|
||||
H.change_skin_tone(max(H.s_tone - 10, -195))
|
||||
|
||||
if(H.dna.species.bodyflags & HAS_SKIN_COLOR) //take current alien color and darken it slightly
|
||||
H.change_skin_tone(min(-H.s_tone + 45, 220)) // adjusts our skin tone by 10 - makes it darker
|
||||
else if(H.dna.species.bodyflags & HAS_ICON_SKIN_TONE)
|
||||
switch(H.dna.species.name)
|
||||
if("Human")
|
||||
H.change_skin_tone(max(H.s_tone, 10)) // bronze - `icons/mob/human_races/human_skintones/r_human_bronzed.dmi`
|
||||
if("Vox")
|
||||
H.change_skin_tone(3) // brown - `icons/mob/human_races/vox/r_voxbrn.dmi`
|
||||
if("Nian")
|
||||
H.change_skin_tone(1) // default - `icons/mob/human_races/nian/r_moth.dmi`
|
||||
if("Grey")
|
||||
H.change_skin_tone(4) // red - `icons/mob/human_races/grey/r_grey_red.dmi`
|
||||
else if(H.dna.species.bodyflags & HAS_SKIN_COLOR) // take current alien color and darken it slightly
|
||||
H.change_skin_color("#9B7653")
|
||||
|
||||
/datum/reagent/admin_cleaner
|
||||
|
||||
@@ -47,28 +47,15 @@
|
||||
|
||||
if("skin_tone")
|
||||
if(can_change_skin_tone())
|
||||
var/new_s_tone = null
|
||||
var/new_s_tone
|
||||
if(owner.dna.species.bodyflags & HAS_SKIN_TONE)
|
||||
new_s_tone = input(usr, "Choose your character's skin tone:\n(Light 1 - 220 Dark)", "Skin Tone", owner.s_tone) as num|null
|
||||
if(isnum(new_s_tone) && (!..()))
|
||||
new_s_tone = max(min(round(new_s_tone), 220),1)
|
||||
new_s_tone = tgui_input_number(usr, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Character Preference", owner.s_tone, 220, 1)
|
||||
else if(owner.dna.species.bodyflags & HAS_ICON_SKIN_TONE)
|
||||
var/const/MAX_LINE_ENTRIES = 4
|
||||
var/prompt = "Choose your character's skin tone: 1-[length(owner.dna.species.icon_skin_tones)]\n("
|
||||
for(var/i in 1 to length(owner.dna.species.icon_skin_tones))
|
||||
if(i > MAX_LINE_ENTRIES && !((i - 1) % MAX_LINE_ENTRIES))
|
||||
prompt += "\n"
|
||||
prompt += "[i] = [owner.dna.species.icon_skin_tones[i]]"
|
||||
if(i != length(owner.dna.species.icon_skin_tones))
|
||||
prompt += ", "
|
||||
prompt += ")"
|
||||
var/prompt = "Choose your character's skin tone: 1-[length(owner.dna.species.icon_skin_tones)]\n(Light to Dark)"
|
||||
new_s_tone = tgui_input_number(usr, prompt, "Character Preference", owner.s_tone, length(owner.dna.species.icon_skin_tones), 1)
|
||||
|
||||
new_s_tone = input(usr, prompt, "Skin Tone", owner.s_tone) as num|null
|
||||
if(isnum(new_s_tone) && (!..()))
|
||||
new_s_tone = max(min(round(new_s_tone), length(owner.dna.species.icon_skin_tones)), 1)
|
||||
|
||||
if(new_s_tone)
|
||||
owner.change_skin_tone(new_s_tone)
|
||||
if(!isnull(new_s_tone) && (!..()) && owner.change_skin_tone(new_s_tone))
|
||||
update_dna()
|
||||
|
||||
if("skin_color")
|
||||
if(can_change_skin_color())
|
||||
|
||||
Reference in New Issue
Block a user