Fix improper skin tones and lots of DNA inconsistencies. Improve mob spawners by a little (#29271)

* sane appearance

* updatepaths

* flip-vitiligo

* equal color options

* ...

* Update golems.dm

* typo
This commit is contained in:
kyunkyunkyun
2025-05-25 15:41:39 +00:00
committed by GitHub
parent af87e274ed
commit b1709bb93b
21 changed files with 301 additions and 333 deletions
+26 -27
View File
@@ -98,7 +98,7 @@ GLOBAL_LIST_EMPTY(bad_blocks)
/datum/dna/proc/ResetUIFrom(mob/living/carbon/human/character)
// INITIALIZE!
ResetUI(1)
ResetUI(TRUE)
// Hair
// FIXME: Species-specific defaults pls
var/obj/item/organ/external/head/head = character.get_organ("head")
@@ -120,33 +120,33 @@ GLOBAL_LIST_EMPTY(bad_blocks)
head_traits_to_dna(character, head)
eye_color_to_dna(eyes_organ)
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_SKIN_R, color2R(character.skin_colour), 255, TRUE)
SetUIValueRange(DNA_UI_SKIN_G, color2G(character.skin_colour), 255, TRUE)
SetUIValueRange(DNA_UI_SKIN_B, color2B(character.skin_colour), 255, TRUE)
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)
SetUIValueRange(DNA_UI_HEAD_MARK_B, color2B(character.m_colours["head"]), 255, 1)
SetUIValueRange(DNA_UI_HEAD_MARK_R, color2R(character.m_colours["head"]), 255, TRUE)
SetUIValueRange(DNA_UI_HEAD_MARK_G, color2G(character.m_colours["head"]), 255, TRUE)
SetUIValueRange(DNA_UI_HEAD_MARK_B, color2B(character.m_colours["head"]), 255, TRUE)
SetUIValueRange(DNA_UI_BODY_MARK_R, color2R(character.m_colours["body"]), 255, 1)
SetUIValueRange(DNA_UI_BODY_MARK_G, color2G(character.m_colours["body"]), 255, 1)
SetUIValueRange(DNA_UI_BODY_MARK_B, color2B(character.m_colours["body"]), 255, 1)
SetUIValueRange(DNA_UI_BODY_MARK_R, color2R(character.m_colours["body"]), 255, TRUE)
SetUIValueRange(DNA_UI_BODY_MARK_G, color2G(character.m_colours["body"]), 255, TRUE)
SetUIValueRange(DNA_UI_BODY_MARK_B, color2B(character.m_colours["body"]), 255, TRUE)
SetUIValueRange(DNA_UI_TAIL_MARK_R, color2R(character.m_colours["tail"]), 255, 1)
SetUIValueRange(DNA_UI_TAIL_MARK_G, color2G(character.m_colours["tail"]), 255, 1)
SetUIValueRange(DNA_UI_TAIL_MARK_B, color2B(character.m_colours["tail"]), 255, 1)
SetUIValueRange(DNA_UI_TAIL_MARK_R, color2R(character.m_colours["tail"]), 255, TRUE)
SetUIValueRange(DNA_UI_TAIL_MARK_G, color2G(character.m_colours["tail"]), 255, TRUE)
SetUIValueRange(DNA_UI_TAIL_MARK_B, color2B(character.m_colours["tail"]), 255, TRUE)
SetUIValueRange(DNA_UI_SKIN_TONE, 35-character.s_tone, 220, 1) // Value can be negative.
SetUIValueRange(DNA_UI_SKIN_TONE, abs(35 - character.s_tone), 220, TRUE)
SetUIValueRange(DNA_UI_HEAD_MARK_STYLE, head_marks, length(GLOB.marking_styles_list), 1)
SetUIValueRange(DNA_UI_BODY_MARK_STYLE, body_marks, length(GLOB.marking_styles_list), 1)
SetUIValueRange(DNA_UI_TAIL_MARK_STYLE, tail_marks, length(GLOB.marking_styles_list), 1)
SetUIValueRange(DNA_UI_HEAD_MARK_STYLE, head_marks, length(GLOB.marking_styles_list), TRUE)
SetUIValueRange(DNA_UI_BODY_MARK_STYLE, body_marks, length(GLOB.marking_styles_list), TRUE)
SetUIValueRange(DNA_UI_TAIL_MARK_STYLE, tail_marks, length(GLOB.marking_styles_list), TRUE)
SetUIValueRange(DNA_UI_PHYSIQUE, GLOB.character_physiques.Find(character.physique), length(GLOB.character_physiques), 1)
SetUIValueRange(DNA_UI_HEIGHT, GLOB.character_heights.Find(character.height), length(GLOB.character_heights), 1)
SetUIValueRange(DNA_UI_PHYSIQUE, GLOB.character_physiques.Find(character.physique), length(GLOB.character_physiques), TRUE)
SetUIValueRange(DNA_UI_HEIGHT, GLOB.character_heights.Find(character.height), length(GLOB.character_heights), TRUE)
var/list/bodyacc = GLOB.body_accessory_by_name.Find(character.body_accessory?.name || "None")
SetUIValueRange(DNA_UI_BACC_STYLE, bodyacc, length(GLOB.body_accessory_by_name), 1)
SetUIValueRange(DNA_UI_BACC_STYLE, bodyacc, length(GLOB.body_accessory_by_name), TRUE)
switch(character.body_type)
if(FEMALE)
@@ -157,16 +157,15 @@ GLOBAL_LIST_EMPTY(bad_blocks)
//Set the Gender
switch(character.gender)
if(FEMALE)
SetUITriState(DNA_UI_GENDER, DNA_GENDER_FEMALE, 1)
SetUITriState(DNA_UI_GENDER, DNA_GENDER_FEMALE, TRUE)
if(MALE)
SetUITriState(DNA_UI_GENDER, DNA_GENDER_MALE, 1)
SetUITriState(DNA_UI_GENDER, DNA_GENDER_MALE, TRUE)
if(PLURAL)
SetUITriState(DNA_UI_GENDER, DNA_GENDER_PLURAL, 1)
SetUITriState(DNA_UI_GENDER, DNA_GENDER_PLURAL, TRUE)
if(head)
head.dna.UI = character.dna.UI
if(eyes_organ)
eyes_organ.dna.UI = character.dna.UI
// updates DNA for our external and internal organs
for(var/obj/item/organ/organ in (character.bodyparts + character.internal_organs))
organ.dna.UI = character.dna.UI
UpdateUI()
+1 -1
View File
@@ -152,7 +152,7 @@
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))
H.m_colours["tail"] = rgb(dna.GetUIValueRange(DNA_UI_TAIL_MARK_R, 255), dna.GetUIValueRange(DNA_UI_TAIL_MARK_G, 255), dna.GetUIValueRange(DNA_UI_TAIL_MARK_B, 255))
H.s_tone = 35 - dna.GetUIValueRange(DNA_UI_SKIN_TONE, 220) // Value can be negative.
H.s_tone = 35 - dna.GetUIValueRange(DNA_UI_SKIN_TONE, 220)
switch(dna.GetUIState(DNA_UI_BODY_TYPE))
if(DNA_GENDER_FEMALE)
+1 -1
View File
@@ -939,7 +939,7 @@
if(!new_tone)
new_tone = 35
else
new_tone = 35 - max(min(round(text2num(new_tone)), 220), 1)
new_tone = max(min(round(text2num(new_tone)), 220), 1)
M.change_skin_tone(new_tone)
if(M.dna.species.bodyflags & HAS_ICON_SKIN_TONE)