This commit is contained in:
Timothy Teakettle
2021-04-23 21:13:32 +01:00
parent 358085c284
commit e89b05cfdd
2 changed files with 64 additions and 56 deletions
+12 -9
View File
@@ -124,7 +124,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/eye_type = DEFAULT_EYES_TYPE //Eye type
var/split_eye_colors = FALSE
var/datum/species/pref_species = new /datum/species/human() //Mutant race
var/list/features = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF", "mcolor3" = "FFFFFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "horns_color" = "85615a", "ears" = "None", "wings" = "None", "wings_color" = "FFF", "frills" = "None", "deco_wings" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", "arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain", "mam_body_markings" = "Plain", "mam_ears" = "None", "mam_snouts" = "None", "mam_tail" = "None", "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = DEF_COCK_SHAPE, "cock_length" = COCK_SIZE_DEF, "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF, "cock_color" = "ffffff", "cock_taur" = FALSE, "has_balls" = FALSE, "balls_color" = "ffffff", "balls_shape" = DEF_BALLS_SHAPE, "balls_size" = BALLS_SIZE_DEF, "balls_cum_rate" = CUM_RATE, "balls_cum_mult" = CUM_RATE_MULT, "balls_efficiency" = CUM_EFFICIENCY, "has_breasts" = FALSE, "breasts_color" = "ffffff", "breasts_size" = BREASTS_SIZE_DEF, "breasts_shape" = DEF_BREASTS_SHAPE, "breasts_producing" = FALSE, "has_vag" = FALSE, "vag_shape" = DEF_VAGINA_SHAPE, "vag_color" = "ffffff", "has_womb" = FALSE, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, "vag_visibility" = GEN_VISIBLE_NO_UNDIES, "ipc_screen" = "Sunburst", "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_notes" = "", "meat_type" = "Mammalian", "body_model" = MALE, "body_size" = RESIZE_DEFAULT_SIZE, "color_scheme" = OLD_CHARACTER_COLORING)
var/list/features = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF", "mcolor3" = "FFFFFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "horns_color" = "85615a", "ears" = "None", "wings" = "None", "wings_color" = "FFF", "frills" = "None", "deco_wings" = "None", "spines" = "None", "body_markings" = list(), "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", "arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain", "mam_body_markings" = list(), "mam_ears" = "None", "mam_snouts" = "None", "mam_tail" = "None", "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = DEF_COCK_SHAPE, "cock_length" = COCK_SIZE_DEF, "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF, "cock_color" = "ffffff", "cock_taur" = FALSE, "has_balls" = FALSE, "balls_color" = "ffffff", "balls_shape" = DEF_BALLS_SHAPE, "balls_size" = BALLS_SIZE_DEF, "balls_cum_rate" = CUM_RATE, "balls_cum_mult" = CUM_RATE_MULT, "balls_efficiency" = CUM_EFFICIENCY, "has_breasts" = FALSE, "breasts_color" = "ffffff", "breasts_size" = BREASTS_SIZE_DEF, "breasts_shape" = DEF_BREASTS_SHAPE, "breasts_producing" = FALSE, "has_vag" = FALSE, "vag_shape" = DEF_VAGINA_SHAPE, "vag_color" = "ffffff", "has_womb" = FALSE, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, "vag_visibility" = GEN_VISIBLE_NO_UNDIES, "ipc_screen" = "Sunburst", "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_notes" = "", "meat_type" = "Mammalian", "body_model" = MALE, "body_size" = RESIZE_DEFAULT_SIZE, "color_scheme" = OLD_CHARACTER_COLORING)
var/custom_speech_verb = "default" //if your say_mod is to be something other than your races
var/custom_tongue = "default" //if your tongue is to be something other than your races
@@ -1725,12 +1725,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
//let's ensure that no weird shit happens on species swapping.
custom_species = null
if(!parent.can_have_part("body_markings"))
features["body_markings"] = "None"
features["body_markings"] = list()
if(!parent.can_have_part("mam_body_markings"))
features["mam_body_markings"] = "None"
features["mam_body_markings"] = list()
if(parent.can_have_part("mam_body_markings"))
if(features["mam_body_markings"] == "None")
features["mam_body_markings"] = "Plain"
features["mam_body_markings"] = list()
if(parent.can_have_part("tail_lizard"))
features["tail_lizard"] = "Smooth"
if(pref_species.id == "felinid")
@@ -1963,9 +1963,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/new_body_markings
new_body_markings = input(user, "Choose your character's body markings:", "Character Preference") as null|anything in GLOB.body_markings_list
if(new_body_markings)
features["body_markings"] = new_body_markings
var/marking_list = list()
for(var/part in list(ARM_LEFT, ARM_RIGHT, LEG_LEFT, LEG_RIGHT, CHEST, HEAD))
marking_list += list(part, new_body_markings)
features["body_markings"] = marking_list
if(new_body_markings != "None")
features["mam_body_markings"] = "None"
features["mam_body_markings"] = list()
if("legs")
var/new_legs
@@ -2101,10 +2104,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(new_mam_body_markings)
features["mam_body_markings"] = new_mam_body_markings
if(new_mam_body_markings != "None")
features["body_markings"] = "None"
features["body_markings"] = list()
else if(new_mam_body_markings == "None")
features["mam_body_markings"] = "Plain"
features["body_markings"] = "None"
features["mam_body_markings"] = list()
features["body_markings"] = list()
//Xeno Bodyparts
if("xenohead")//Head or caste type
+52 -47
View File
@@ -47,10 +47,11 @@
var/species_color = ""
var/mutation_color = ""
var/no_update = 0
var/body_markings = "" //for bodypart markings
var/body_markings_icon = 'modular_citadel/icons/mob/mam_markings.dmi'
var/body_markings = "" //for bodypart markings, deprecated
var/list/body_markings_list // stores body markings as lists, with the first value being the name of the bodypart, the second value being the name of the marking, and the third being the colour
var/marking_value // combination of old aux_marking and body_marking variables as they were always set together to the same value
var/static/default_body_markings_icon = 'modular_citadel/icons/mob/mam_markings.dmi'
var/list/markings_color = list()
var/aux_marking
var/digitigrade_type
var/animal_origin = null //for nonhuman bodypart (e.g. monkey)
@@ -632,8 +633,7 @@
color_src = FALSE
base_bp_icon = DEFAULT_BODYPART_ICON
no_update = TRUE
body_markings = "husk" // reeee
aux_marking = "husk"
marking_value = "husk"
if(no_update)
return
@@ -649,11 +649,7 @@
//body marking memes
var/list/colorlist = list()
//var/advanced_color_system = (H.dna.features["color_scheme"] == ADVANCED_CHARACTER_COLORING)
colorlist.Cut()
//colorlist += advanced_color_system ? ReadRGB("[H.dna.features["mam_body_markings_primary"]]00") : ReadRGB("[H.dna.features["mcolor"]]00")
//colorlist += advanced_color_system ? ReadRGB("[H.dna.features["mam_body_markings_secondary"]]00") : ReadRGB("[H.dna.features["mcolor2"]]00")
//colorlist += advanced_color_system ? ReadRGB("[H.dna.features["mam_body_markings_tertiary"]]00") : ReadRGB("[H.dna.features["mcolor3"]]00")
colorlist += ReadRGB("[H.dna.features["mcolor"]]00")
colorlist += ReadRGB("[H.dna.features["mcolor2"]]00")
colorlist += ReadRGB("[H.dna.features["mcolor3"]]00")
@@ -688,21 +684,26 @@
else
digitigrade_type = null
if(S.mutant_bodyparts["mam_body_markings"])
var/datum/sprite_accessory/Smark
Smark = GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]]
if(Smark)
body_markings_icon = Smark.icon
if(H.dna.features["mam_body_markings"] != "None")
body_markings = Smark?.icon_state || lowertext(H.dna.features["mam_body_markings"])
aux_marking = Smark?.icon_state || lowertext(H.dna.features["mam_body_markings"])
else
body_markings = "plain"
aux_marking = "plain"
if(S.mutant_bodyparts["mam_body_markings"]) // checks if the species can actually have body markings
// get all markings for this bodypart type
for(var/list/marking in H.dna.features["mam_body_markings"])
// marking is a list containing bodypart type, bodymarking name, and then the colour (colour won't be used in v1)
if(marking[1] == body_part)
var/datum/sprite_accessory/Smark
Smark = GLOB.mam_body_markings_list[marking[2]]
var/body_markings_icon = default_body_markings_icon
if(Smark)
body_markings_icon = Smark.icon
var/marking_value = "" // combination of body and aux markings from old system
if(H.dna.features["mam_body_markings"] != "None")
marking_value = Smark?.icon_state || lowertext(H.dna.features["mam_body_markings"])
else
marking_value = "plain"
body_markings_list += list(body_markings_icon, marking_value)
markings_color = list(colorlist)
else
body_markings = null
aux_marking = null
marking_value = null
if(S.override_bp_icon)
base_bp_icon = S.override_bp_icon
@@ -728,8 +729,7 @@
if(is_robotic_limb())
dmg_overlay_type = "robotic"
if(is_robotic_limb(FALSE))
body_markings = null
aux_marking = null
marking_value = null
if(dropping_limb)
no_update = TRUE //when attached, the limb won't be affected by the appearance changes of its mob owner.
@@ -755,7 +755,7 @@
var/image_dir = 0
var/icon_gender = (body_gender == FEMALE) ? "f" : "m" //gender of the icon, if applicable
/*
if(dropped)
image_dir = SOUTH
if(dmg_overlay_type)
@@ -772,7 +772,7 @@
. += image(body_markings_icon, "[body_markings]_[body_zone]", -MARKING_LAYER, image_dir)
else
. += image(body_markings_icon, "[body_markings]_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir)
*/
var/image/limb = image(layer = -BODYPARTS_LAYER, dir = image_dir)
var/list/aux = list()
var/image/marking
@@ -808,21 +808,22 @@
limb.icon_state = "[species_id]_[body_zone]"
// Body markings
if(!isnull(body_markings))
if(!length(body_markings_list))
if(species_id == "husk")
marking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[body_zone]", -MARKING_LAYER, image_dir)
else if(species_id == "husk" && use_digitigrade)
marking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir)
else if(!use_digitigrade)
if(body_zone == BODY_ZONE_CHEST)
marking = image(body_markings_icon, "[body_markings]_[body_zone]_[icon_gender]", -MARKING_LAYER, image_dir)
else
marking = image(body_markings_icon, "[body_markings]_[body_zone]", -MARKING_LAYER, image_dir)
else
marking = image(body_markings_icon, "[body_markings]_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir)
. += marking
for(var/list/marking_list in body_markings_list)
// marking stores icon and value for the specific bodypart
if(!use_digitigrade)
if(body_zone == BODY_ZONE_CHEST)
. += image(marking_list[1], "[marking_list[2]]_[body_zone]_[icon_gender]", -MARKING_LAYER, image_dir)
else
. += image(marking_list[1], "[marking_list[2]]_[body_zone]", -MARKING_LAYER, image_dir)
else
. += image(marking[1], "[marking_list[2]]_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir)
// Citadel End
@@ -830,11 +831,12 @@
for(var/I in aux_icons)
var/aux_layer = aux_icons[I]
aux += image(limb.icon, "[species_id]_[I]", -aux_layer, image_dir)
if(!isnull(aux_marking))
if(!isnull(marking_value))
if(species_id == "husk")
auxmarking += image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[I]", -aux_layer, image_dir)
else
auxmarking += image(body_markings_icon, "[body_markings]_[I]", -aux_layer, image_dir)
for(var/marking_list in body_markings_list)
auxmarking += image(body_markings_list[1], "[body_markings_list[2]]_[I]", -aux_layer, image_dir)
. += aux
. += auxmarking
@@ -849,11 +851,12 @@
for(var/I in aux_icons)
var/aux_layer = aux_icons[I]
aux += image(limb.icon, "[I]", -aux_layer, image_dir)
if(!isnull(aux_marking))
if(!isnull(marking_value))
if(species_id == "husk")
auxmarking += image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[I]", -aux_layer, image_dir)
else
auxmarking += image(body_markings_icon, "[body_markings]_[I]", -aux_layer, image_dir)
for(var/marking_list in body_markings_list)
auxmarking += image(body_markings_list[1], "[body_markings_list[2]]_[I]", -aux_layer, image_dir)
. += auxmarking
. += aux
@@ -863,14 +866,16 @@
else if(species_id == "husk" && use_digitigrade)
marking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_digitigrade_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir)
else if(!use_digitigrade)
if(body_zone == BODY_ZONE_CHEST)
marking = image(body_markings_icon, "[body_markings]_[body_zone]_[icon_gender]", -MARKING_LAYER, image_dir)
else
marking = image(body_markings_icon, "[body_markings]_[body_zone]", -MARKING_LAYER, image_dir)
else
marking = image(body_markings_icon, "[body_markings]_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir)
. += marking
for(var/list/marking_list in body_markings_list)
// marking stores icon and value for the specific bodypart
if(!use_digitigrade)
if(body_zone == BODY_ZONE_CHEST)
. += image(marking_list[1], "[marking_list[2]]_[body_zone]_[icon_gender]", -MARKING_LAYER, image_dir)
else
. += image(marking_list[1], "[marking_list[2]]_[body_zone]", -MARKING_LAYER, image_dir)
else
. += image(marking[1], "[marking_list[2]]_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir)
return
if(color_src) //TODO - add color matrix support for base species limbs
@@ -891,7 +896,7 @@
if(grayscale)
I.icon_state += "_g"
I.color = draw_color
if(!isnull(aux_marking))
if(!isnull(marking_value))
for(var/a in auxmarking)
var/image/I = a
if(species_id == "husk")