Merge pull request #12873 from silicons/FUCK
FUCK - rewrites sanitize_hexcolor to support converting from RGB to RRGGBB
This commit is contained in:
@@ -145,9 +145,9 @@
|
|||||||
continue
|
continue
|
||||||
if(!S.ckeys_allowed)
|
if(!S.ckeys_allowed)
|
||||||
snowflake_ipc_antenna_list[S.name] = mspath
|
snowflake_ipc_antenna_list[S.name] = mspath
|
||||||
var/color1 = random_short_color()
|
var/color1 = random_color()
|
||||||
var/color2 = random_short_color()
|
var/color2 = random_color()
|
||||||
var/color3 = random_short_color()
|
var/color3 = random_color()
|
||||||
|
|
||||||
var/body_model = MALE
|
var/body_model = MALE
|
||||||
switch(intended_gender)
|
switch(intended_gender)
|
||||||
|
|||||||
@@ -51,40 +51,111 @@
|
|||||||
return default
|
return default
|
||||||
return default
|
return default
|
||||||
|
|
||||||
/proc/sanitize_hexcolor(color, desired_format=3, include_crunch=0, default)
|
#define RGB_FORMAT_INVALID 0
|
||||||
|
#define RGB_FORMAT_SHORT 1
|
||||||
|
#define RGB_FORMAT_LONG 2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sanitizes a hexadecimal color. Always outputs lowercase.
|
||||||
|
*
|
||||||
|
* @params
|
||||||
|
* * color - input color, 3 or 6 characters without the #.
|
||||||
|
* * desired_format - 3 or 6 characters without the potential #. can only put in 3 or 6 here.
|
||||||
|
* * include_crunch - do we put a # at the start
|
||||||
|
* * default - default color. must be 3 or 6 characters with or without #.
|
||||||
|
* * default_replacement - what we replace broken letters with.
|
||||||
|
*/
|
||||||
|
/proc/sanitize_hexcolor(color, desired_format = 3, include_crunch = 0, default = rgb(218, 72, 255), default_replacement = "f")
|
||||||
|
if(!istext(default) || (length(default) < 3))
|
||||||
|
CRASH("Default should be a text string of RGB format, with or without the crunch, 3 or 6 characters. Default was instead [default]")
|
||||||
|
if(!istext(default_replacement) || (length(default_replacement) != 1))
|
||||||
|
CRASH("Invalid default_replacement: [default_replacement]")
|
||||||
|
default_replacement = lowertext(default_replacement)
|
||||||
|
switch(text2ascii(default_replacement))
|
||||||
|
if(48 to 57)
|
||||||
|
if(97 to 102)
|
||||||
|
if(65 to 70)
|
||||||
|
else // yeah yeah i know 3 empty if's..
|
||||||
|
CRASH("Invalid default_replacement: [default_replacement]")
|
||||||
var/crunch = include_crunch ? "#" : ""
|
var/crunch = include_crunch ? "#" : ""
|
||||||
if(!istext(color))
|
if(!istext(color))
|
||||||
color = ""
|
color = default
|
||||||
|
|
||||||
var/start = 1 + (text2ascii(color, 1) == 35)
|
|
||||||
var/len = length(color)
|
var/len = length(color)
|
||||||
var/char = ""
|
// get rid of crunch
|
||||||
// RRGGBB -> RGB but awful
|
if(len && color[1] == "#")
|
||||||
var/convert_to_shorthand = desired_format == 3 && length_char(color) > 3
|
if(len >= 2)
|
||||||
|
color = copytext(color, 2)
|
||||||
|
else
|
||||||
|
color = ""
|
||||||
|
len = length(color)
|
||||||
|
|
||||||
. = ""
|
switch(desired_format)
|
||||||
var/i = start
|
if(3)
|
||||||
while(i <= len)
|
desired_format = RGB_FORMAT_SHORT
|
||||||
|
if(6)
|
||||||
|
desired_format = RGB_FORMAT_LONG
|
||||||
|
else
|
||||||
|
CRASH("Invalid desired_format: [desired_format]. Must be 3 or 6.")
|
||||||
|
var/current_format = RGB_FORMAT_INVALID
|
||||||
|
switch(length(color))
|
||||||
|
if(3)
|
||||||
|
current_format = RGB_FORMAT_SHORT
|
||||||
|
if(6)
|
||||||
|
current_format = RGB_FORMAT_LONG
|
||||||
|
else
|
||||||
|
current_format = RGB_FORMAT_INVALID
|
||||||
|
|
||||||
|
if(current_format == RGB_FORMAT_INVALID) // nah
|
||||||
|
color = default // process default
|
||||||
|
if(color[1] == "#") // we checked default was at least 3 chars long earlier
|
||||||
|
color = copytext(color, 2)
|
||||||
|
len = length(color)
|
||||||
|
switch(len)
|
||||||
|
if(3)
|
||||||
|
current_format = RGB_FORMAT_SHORT
|
||||||
|
if(6)
|
||||||
|
current_format = RGB_FORMAT_LONG
|
||||||
|
else
|
||||||
|
CRASH("Default was not 3 or 6 RGB hexadecimal characters: [default]")
|
||||||
|
|
||||||
|
var/sanitized = ""
|
||||||
|
var/char = ""
|
||||||
|
// first, sanitize hex
|
||||||
|
for(var/i in 1 to len)
|
||||||
char = color[i]
|
char = color[i]
|
||||||
switch(text2ascii(char))
|
switch(text2ascii(char))
|
||||||
if(48 to 57) //numbers 0 to 9
|
if(48 to 57) // 0 to 9
|
||||||
. += char
|
sanitized += char
|
||||||
if(97 to 102) //letters a to f
|
if(97 to 102) // a to f
|
||||||
. += char
|
sanitized += char
|
||||||
if(65 to 70) //letters A to F
|
if(65 to 70) // A to F (capitalized!)
|
||||||
. += lowertext(char)
|
sanitized += lowertext(char)
|
||||||
else
|
else
|
||||||
break
|
sanitized += default_replacement
|
||||||
i += length(char)
|
// do we need to convert?
|
||||||
if(convert_to_shorthand && i <= len) //skip next one
|
if(desired_format == current_format)
|
||||||
i += length(color[i])
|
return crunch + sanitized // no
|
||||||
|
// yes
|
||||||
|
if((desired_format == RGB_FORMAT_SHORT) && (current_format == RGB_FORMAT_LONG)) // downconvert
|
||||||
|
var/temp = ""
|
||||||
|
// we could do some math but we're lazy and in practice floor()ing this.
|
||||||
|
for(var/i in 1 to 6 step 2)
|
||||||
|
temp += sanitized[i]
|
||||||
|
sanitized = temp
|
||||||
|
else if((desired_format == RGB_FORMAT_LONG) && (current_format == RGB_FORMAT_SHORT)) // upconvert
|
||||||
|
var/temp = ""
|
||||||
|
for(var/i in 1 to 3)
|
||||||
|
temp += sanitized[i]
|
||||||
|
temp += sanitized[i]
|
||||||
|
sanitized = temp
|
||||||
|
else
|
||||||
|
CRASH("Invalid desired_format and current_format pair: [desired_format], [current_format]. Could not determine which way to convert.")
|
||||||
|
return crunch + sanitized
|
||||||
|
|
||||||
if(length_char(.) != desired_format)
|
#undef RGB_FORMAT_INVALID
|
||||||
if(default)
|
#undef RGB_FORMAT_SHORT
|
||||||
return default
|
#undef RGB_FORMAT_LONG
|
||||||
return crunch + repeat_string(desired_format, "0")
|
|
||||||
|
|
||||||
return crunch + .
|
|
||||||
|
|
||||||
/proc/sanitize_ooccolor(color)
|
/proc/sanitize_ooccolor(color)
|
||||||
if(length(color) != length_char(color))
|
if(length(color) != length_char(color))
|
||||||
|
|||||||
+6
-6
@@ -131,9 +131,9 @@
|
|||||||
L[DNA_FACIAL_HAIR_COLOR_BLOCK] = sanitize_hexcolor(H.facial_hair_color)
|
L[DNA_FACIAL_HAIR_COLOR_BLOCK] = sanitize_hexcolor(H.facial_hair_color)
|
||||||
L[DNA_SKIN_TONE_BLOCK] = construct_block(GLOB.skin_tones.Find(H.skin_tone), GLOB.skin_tones.len)
|
L[DNA_SKIN_TONE_BLOCK] = construct_block(GLOB.skin_tones.Find(H.skin_tone), GLOB.skin_tones.len)
|
||||||
L[DNA_EYE_COLOR_BLOCK] = sanitize_hexcolor(H.eye_color)
|
L[DNA_EYE_COLOR_BLOCK] = sanitize_hexcolor(H.eye_color)
|
||||||
L[DNA_COLOR_ONE_BLOCK] = sanitize_hexcolor(features["mcolor"])
|
L[DNA_COLOR_ONE_BLOCK] = sanitize_hexcolor(features["mcolor"], 6)
|
||||||
L[DNA_COLOR_TWO_BLOCK] = sanitize_hexcolor(features["mcolor2"])
|
L[DNA_COLOR_TWO_BLOCK] = sanitize_hexcolor(features["mcolor2"], 6)
|
||||||
L[DNA_COLOR_THREE_BLOCK] = sanitize_hexcolor(features["mcolor3"])
|
L[DNA_COLOR_THREE_BLOCK] = sanitize_hexcolor(features["mcolor3"], 6)
|
||||||
if(!GLOB.mam_tails_list.len)
|
if(!GLOB.mam_tails_list.len)
|
||||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, GLOB.mam_tails_list)
|
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, GLOB.mam_tails_list)
|
||||||
L[DNA_MUTANTTAIL_BLOCK] = construct_block(GLOB.mam_tails_list.Find(features["mam_tail"]), GLOB.mam_tails_list.len)
|
L[DNA_MUTANTTAIL_BLOCK] = construct_block(GLOB.mam_tails_list.Find(features["mam_tail"]), GLOB.mam_tails_list.len)
|
||||||
@@ -239,11 +239,11 @@
|
|||||||
if(DNA_HAIR_STYLE_BLOCK)
|
if(DNA_HAIR_STYLE_BLOCK)
|
||||||
setblock(uni_identity, blocknumber, construct_block(GLOB.hair_styles_list.Find(H.hair_style), GLOB.hair_styles_list.len))
|
setblock(uni_identity, blocknumber, construct_block(GLOB.hair_styles_list.Find(H.hair_style), GLOB.hair_styles_list.len))
|
||||||
if(DNA_COLOR_ONE_BLOCK)
|
if(DNA_COLOR_ONE_BLOCK)
|
||||||
sanitize_hexcolor(features["mcolor"])
|
sanitize_hexcolor(features["mcolor"], 6)
|
||||||
if(DNA_COLOR_TWO_BLOCK)
|
if(DNA_COLOR_TWO_BLOCK)
|
||||||
sanitize_hexcolor(features["mcolor2"])
|
sanitize_hexcolor(features["mcolor2"], 6)
|
||||||
if(DNA_COLOR_THREE_BLOCK)
|
if(DNA_COLOR_THREE_BLOCK)
|
||||||
sanitize_hexcolor(features["mcolor3"])
|
sanitize_hexcolor(features["mcolor3"], 6)
|
||||||
if(DNA_MUTANTTAIL_BLOCK)
|
if(DNA_MUTANTTAIL_BLOCK)
|
||||||
construct_block(GLOB.mam_tails_list.Find(features["mam_tail"]), GLOB.mam_tails_list.len)
|
construct_block(GLOB.mam_tails_list.Find(features["mam_tail"]), GLOB.mam_tails_list.len)
|
||||||
if(DNA_MUTANTEAR_BLOCK)
|
if(DNA_MUTANTEAR_BLOCK)
|
||||||
|
|||||||
@@ -1798,11 +1798,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
|
|
||||||
//Now that we changed our species, we must verify that the mutant colour is still allowed.
|
//Now that we changed our species, we must verify that the mutant colour is still allowed.
|
||||||
var/temp_hsv = RGBtoHSV(features["mcolor"])
|
var/temp_hsv = RGBtoHSV(features["mcolor"])
|
||||||
if(features["mcolor"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]))
|
if(features["mcolor"] == "#000000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]))
|
||||||
features["mcolor"] = pref_species.default_color
|
features["mcolor"] = pref_species.default_color
|
||||||
if(features["mcolor2"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]))
|
if(features["mcolor2"] == "#000000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]))
|
||||||
features["mcolor2"] = pref_species.default_color
|
features["mcolor2"] = pref_species.default_color
|
||||||
if(features["mcolor3"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]))
|
if(features["mcolor3"] == "#000000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]))
|
||||||
features["mcolor3"] = pref_species.default_color
|
features["mcolor3"] = pref_species.default_color
|
||||||
|
|
||||||
if("custom_species")
|
if("custom_species")
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
|||||||
var/id // if the game needs to manually check your race to do something not included in a proc here, it will use this
|
var/id // if the game needs to manually check your race to do something not included in a proc here, it will use this
|
||||||
var/limbs_id //this is used if you want to use a different species limb sprites. Mainly used for angels as they look like humans.
|
var/limbs_id //this is used if you want to use a different species limb sprites. Mainly used for angels as they look like humans.
|
||||||
var/name // this is the fluff name. these will be left generic (such as 'Lizardperson' for the lizard race) so servers can change them to whatever
|
var/name // this is the fluff name. these will be left generic (such as 'Lizardperson' for the lizard race) so servers can change them to whatever
|
||||||
var/default_color = "#FFF" // if alien colors are disabled, this is the color that will be used by that race
|
var/default_color = "#FFFFFF" // if alien colors are disabled, this is the color that will be used by that race
|
||||||
|
|
||||||
var/sexes = 1 // whether or not the race has sexual characteristics. at the moment this is only 0 for skeletons and shadows
|
var/sexes = 1 // whether or not the race has sexual characteristics. at the moment this is only 0 for skeletons and shadows
|
||||||
var/has_field_of_vision = TRUE
|
var/has_field_of_vision = TRUE
|
||||||
@@ -854,10 +854,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
|||||||
var/g = (H.dna.features["body_model"] == FEMALE) ? "f" : "m"
|
var/g = (H.dna.features["body_model"] == FEMALE) ? "f" : "m"
|
||||||
var/list/colorlist = list()
|
var/list/colorlist = list()
|
||||||
var/husk = HAS_TRAIT(H, TRAIT_HUSK)
|
var/husk = HAS_TRAIT(H, TRAIT_HUSK)
|
||||||
colorlist += husk ? ReadRGB("#a3a3a3") :ReadRGB("[H.dna.features["mcolor"]]0")
|
colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features["mcolor"]]00")
|
||||||
colorlist += husk ? ReadRGB("#a3a3a3") :ReadRGB("[H.dna.features["mcolor2"]]0")
|
colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features["mcolor2"]]00")
|
||||||
colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features["mcolor3"]]0")
|
colorlist += husk ? ReadRGB("#a3a3a3") : ReadRGB("[H.dna.features["mcolor3"]]00")
|
||||||
colorlist += list(0,0,0, hair_alpha)
|
colorlist += husk ? list(0, 0, 0) : list(0, 0, 0, hair_alpha)
|
||||||
for(var/index in 1 to colorlist.len)
|
for(var/index in 1 to colorlist.len)
|
||||||
colorlist[index] /= 255
|
colorlist[index] /= 255
|
||||||
|
|
||||||
@@ -1031,7 +1031,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
|||||||
H.apply_overlay(BODY_FRONT_LAYER)
|
H.apply_overlay(BODY_FRONT_LAYER)
|
||||||
H.apply_overlay(HORNS_LAYER)
|
H.apply_overlay(HORNS_LAYER)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Equip the outfit required for life. Replaces items currently worn.
|
* Equip the outfit required for life. Replaces items currently worn.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
default_color = "00FF00"
|
default_color = "00FF00"
|
||||||
species_traits = list(LIPS,EYECOLOR,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR,WINGCOLOR,CAN_SCAR)
|
species_traits = list(LIPS,EYECOLOR,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR,WINGCOLOR,CAN_SCAR)
|
||||||
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
|
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
|
||||||
mutant_bodyparts = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None",
|
mutant_bodyparts = list("mcolor" = "FFFFFF","mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_tail" = "None", "mam_ears" = "None",
|
||||||
"insect_wings" = "None", "insect_fluff" = "None", "mam_snouts" = "None", "taur" = "None", "insect_markings" = "None")
|
"insect_wings" = "None", "insect_fluff" = "None", "mam_snouts" = "None", "taur" = "None", "insect_markings" = "None")
|
||||||
attack_verb = "slash"
|
attack_verb = "slash"
|
||||||
attack_sound = 'sound/weapons/slash.ogg'
|
attack_sound = 'sound/weapons/slash.ogg'
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
|
icon_limbs = DEFAULT_BODYPART_ICON_CITADEL
|
||||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,HORNCOLOR,WINGCOLOR,CAN_SCAR)
|
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,HORNCOLOR,WINGCOLOR,CAN_SCAR)
|
||||||
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BEAST
|
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BEAST
|
||||||
mutant_bodyparts = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "deco_wings" = "None",
|
mutant_bodyparts = list("mcolor" = "FFFFFF","mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "deco_wings" = "None",
|
||||||
"mam_body_markings" = "Husky", "taur" = "None", "horns" = "None", "legs" = "Plantigrade", "meat_type" = "Mammalian")
|
"mam_body_markings" = "Husky", "taur" = "None", "horns" = "None", "legs" = "Plantigrade", "meat_type" = "Mammalian")
|
||||||
attack_verb = "claw"
|
attack_verb = "claw"
|
||||||
attack_sound = 'sound/weapons/slash.ogg'
|
attack_sound = 'sound/weapons/slash.ogg'
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
default_color = "FFFFFF"
|
default_color = "FFFFFF"
|
||||||
|
|
||||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR,CAN_SCAR)
|
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR,CAN_SCAR)
|
||||||
mutant_bodyparts = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None")
|
mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None")
|
||||||
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
||||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||||
disliked_food = GROSS | RAW
|
disliked_food = GROSS | RAW
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,WINGCOLOR)
|
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,WINGCOLOR)
|
||||||
mutantlungs = /obj/item/organ/lungs/slime
|
mutantlungs = /obj/item/organ/lungs/slime
|
||||||
mutant_heart = /obj/item/organ/heart/slime
|
mutant_heart = /obj/item/organ/heart/slime
|
||||||
mutant_bodyparts = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None", "deco_wings" = "None")
|
mutant_bodyparts = list("mcolor" = "FFFFFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None", "deco_wings" = "None")
|
||||||
inherent_traits = list(TRAIT_TOXINLOVER)
|
inherent_traits = list(TRAIT_TOXINLOVER)
|
||||||
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime
|
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime
|
||||||
gib_types = list(/obj/effect/gibspawner/slime, /obj/effect/gibspawner/slime/bodypartless)
|
gib_types = list(/obj/effect/gibspawner/slime, /obj/effect/gibspawner/slime/bodypartless)
|
||||||
@@ -443,7 +443,7 @@
|
|||||||
default_color = "00FFFF"
|
default_color = "00FFFF"
|
||||||
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR)
|
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR)
|
||||||
inherent_traits = list(TRAIT_TOXINLOVER)
|
inherent_traits = list(TRAIT_TOXINLOVER)
|
||||||
mutant_bodyparts = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Plain", "mam_snouts" = "None", "taur" = "None")
|
mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Plain", "mam_snouts" = "None", "taur" = "None")
|
||||||
say_mod = "says"
|
say_mod = "says"
|
||||||
hair_color = "mutcolor"
|
hair_color = "mutcolor"
|
||||||
hair_alpha = 160 //a notch brighter so it blends better.
|
hair_alpha = 160 //a notch brighter so it blends better.
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
name = "Anthromorphic Plant"
|
name = "Anthromorphic Plant"
|
||||||
id = "podweak"
|
id = "podweak"
|
||||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS)
|
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS)
|
||||||
mutant_bodyparts = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs")
|
mutant_bodyparts = list("mcolor" = "FFFFFF","mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs")
|
||||||
limbs_id = "pod"
|
limbs_id = "pod"
|
||||||
light_nutrition_gain_factor = 3
|
light_nutrition_gain_factor = 3
|
||||||
light_bruteheal = -0.2
|
light_bruteheal = -0.2
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,DRINKSBLOOD)
|
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,DRINKSBLOOD)
|
||||||
inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH)
|
inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH)
|
||||||
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
|
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
|
||||||
mutant_bodyparts = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "deco_wings" = "None")
|
mutant_bodyparts = list("mcolor" = "FFFFFF", "tail_human" = "None", "ears" = "None", "deco_wings" = "None")
|
||||||
exotic_bloodtype = "U"
|
exotic_bloodtype = "U"
|
||||||
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
||||||
mutant_heart = /obj/item/organ/heart/vampire
|
mutant_heart = /obj/item/organ/heart/vampire
|
||||||
|
|||||||
@@ -490,9 +490,9 @@
|
|||||||
//body marking memes
|
//body marking memes
|
||||||
var/list/colorlist = list()
|
var/list/colorlist = list()
|
||||||
colorlist.Cut()
|
colorlist.Cut()
|
||||||
colorlist += ReadRGB("[H.dna.features["mcolor"]]0")
|
colorlist += ReadRGB("[H.dna.features["mcolor"]]00")
|
||||||
colorlist += ReadRGB("[H.dna.features["mcolor2"]]0")
|
colorlist += ReadRGB("[H.dna.features["mcolor2"]]00")
|
||||||
colorlist += ReadRGB("[H.dna.features["mcolor3"]]0")
|
colorlist += ReadRGB("[H.dna.features["mcolor3"]]00")
|
||||||
colorlist += list(0,0,0, S.hair_alpha)
|
colorlist += list(0,0,0, S.hair_alpha)
|
||||||
for(var/index=1, index<=colorlist.len, index++)
|
for(var/index=1, index<=colorlist.len, index++)
|
||||||
colorlist[index] = colorlist[index]/255
|
colorlist[index] = colorlist[index]/255
|
||||||
|
|||||||
Reference in New Issue
Block a user