diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index fbea043787..5cd5f273ac 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -1,20 +1,22 @@ // Species flags. -#define NO_BLOOD 1 // Vessel var is not filled with blood, cannot bleed out. -#define NO_BREATHE 2 // Cannot suffocate or take oxygen loss. -#define NO_SCAN 4 // Cannot be scanned in a DNA machine/genome-stolen. -#define NO_PAIN 8 // Cannot suffer halloss/recieves deceptive health indicator. -#define NO_SLIP 16 // Cannot fall over. -#define NO_POISON 32 // Cannot not suffer toxloss. -#define HAS_SKIN_TONE 64 // Skin tone selectable in chargen. (0-255) -#define HAS_SKIN_COLOR 128 // Skin colour selectable in chargen. (RGB) -#define HAS_LIPS 256 // Lips are drawn onto the mob icon. (lipstick) -#define HAS_UNDERWEAR 512 // Underwear is drawn onto the mob icon. -#define IS_PLANT 1024 // Is a treeperson. -#define IS_WHITELISTED 2048 // Must be whitelisted to play. -#define HAS_EYE_COLOR 4096 // Eye colour selectable in chargen. (RGB) -#define CAN_JOIN 8192 // Species is selectable in chargen. -#define IS_RESTRICTED 16384 // Is not a core/normally playable species. (castes, mutantraces) -// unused: 32768 - higher than this will overflow +#define NO_BLOOD 0x1 // Vessel var is not filled with blood, cannot bleed out. +#define NO_BREATHE 0x2 // Cannot suffocate or take oxygen loss. +#define NO_SCAN 0x4 // Cannot be scanned in a DNA machine/genome-stolen. +#define NO_PAIN 0x8 // Cannot suffer halloss/recieves deceptive health indicator. +#define NO_SLIP 0x10 // Cannot fall over. +#define NO_POISON 0x20 // Cannot not suffer toxloss. +#define IS_PLANT 0x40 // Is a treeperson. +#define IS_WHITELISTED 0x80 // Must be whitelisted to play. +#define CAN_JOIN 0x100 // Species is selectable in chargen. +#define IS_RESTRICTED 0x200 // Is not a core/normally playable species. (castes, mutantraces) +// unused: 0x8000 - higher than this will overflow + +// Species appearance flags +#define HAS_SKIN_TONE 0x1 // Skin tone selectable in chargen. (0-255) +#define HAS_SKIN_COLOR 0x2 // Skin colour selectable in chargen. (RGB) +#define HAS_LIPS 0x4 // Lips are drawn onto the mob icon. (lipstick) +#define HAS_UNDERWEAR 0x8 // Underwear is drawn onto the mob icon. +#define HAS_EYE_COLOR 0x10 // Eye colour selectable in chargen. (RGB) // Languages. #define LANGUAGE_HUMAN 1 @@ -36,13 +38,14 @@ #define LANGUAGE_GUTTER "Gutter" // Language flags. -#define WHITELISTED 1 // Language is available if the speaker is whitelisted. -#define RESTRICTED 2 // Language can only be accquired by spawning or an admin. -#define NONVERBAL 4 // Language has a significant non-verbal component. Speech is garbled without line-of-sight. -#define SIGNLANG 8 // Language is completely non-verbal. Speech is displayed through emotes for those who can understand. -#define HIVEMIND 16 // Broadcast to all mobs with this language. -#define NONGLOBAL 32 // Do not add to general languages list. -#define INNATE 64 // All mobs can be assumed to speak and understand this language. (audible emotes) -#define NO_TALK_MSG 128 // Do not show the "\The [speaker] talks into \the [radio]" message -#define NO_STUTTER 256 // No stuttering, slurring, or other speech problems +#define WHITELISTED 1 // Language is available if the speaker is whitelisted. +#define RESTRICTED 2 // Language can only be acquired by spawning or an admin. +#define NONVERBAL 4 // Language has a significant non-verbal component. Speech is garbled without line-of-sight. +#define SIGNLANG 8 // Language is completely non-verbal. Speech is displayed through emotes for those who can understand. +#define HIVEMIND 16 // Broadcast to all mobs with this language. +#define NONGLOBAL 32 // Do not add to general languages list. +#define INNATE 64 // All mobs can be assumed to speak and understand this language. (audible emotes) +#define NO_TALK_MSG 128 // Do not show the "\The [speaker] talks into \the [radio]" message +#define NO_STUTTER 256 // No stuttering, slurring, or other speech problems #define COMMON_VERBS 512 // Robots will apply regular verbs to this + diff --git a/code/game/objects/structures/under_wardrobe.dm b/code/game/objects/structures/under_wardrobe.dm index d053849496..edc3962cdf 100644 --- a/code/game/objects/structures/under_wardrobe.dm +++ b/code/game/objects/structures/under_wardrobe.dm @@ -8,7 +8,7 @@ /obj/structure/undies_wardrobe/attack_hand(mob/user as mob) src.add_fingerprint(user) var/mob/living/carbon/human/H = user - if(!ishuman(user) || (H.species && !(H.species.flags & HAS_UNDERWEAR))) + if(!ishuman(user) || (H.species && !(H.species.appearance_flags & HAS_UNDERWEAR))) user << "Sadly there's nothing in here for you to wear." return 0 diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 05be064416..31ff20dd1a 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -649,11 +649,11 @@ datum/preferences dat += "
Has excellent traction." if(current_species.flags & NO_POISON) dat += "
Immune to most poisons." - if(current_species.flags & HAS_SKIN_TONE) + if(current_species.appearance_flags & HAS_SKIN_TONE) dat += "
Has a variety of skin tones." - if(current_species.flags & HAS_SKIN_COLOR) + if(current_species.appearance_flags & HAS_SKIN_COLOR) dat += "
Has a variety of skin colours." - if(current_species.flags & HAS_EYE_COLOR) + if(current_species.appearance_flags & HAS_EYE_COLOR) dat += "
Has a variety of eye colours." if(current_species.flags & IS_PLANT) dat += "
Has a plantlike physiology." diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 3b8e566964..1d7a2b0171 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -110,7 +110,7 @@ return 1 /mob/living/carbon/human/proc/change_skin_color(var/red, var/green, var/blue) - if(red == r_skin && green == g_skin && blue == b_skin || !(species.flags & HAS_SKIN_COLOR)) + if(red == r_skin && green == g_skin && blue == b_skin || !(species.appearance_flags & HAS_SKIN_COLOR)) return r_skin = red @@ -122,7 +122,7 @@ return 1 /mob/living/carbon/human/proc/change_skin_tone(var/tone) - if(s_tone == tone || !(species.flags & HAS_SKIN_TONE)) + if(s_tone == tone || !(species.appearance_flags & HAS_SKIN_TONE)) return s_tone = tone diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm index 905e962dd1..eb609bcf0d 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm @@ -31,7 +31,8 @@ poison_type = "oxygen" siemens_coefficient = 0.2 - flags = CAN_JOIN | IS_WHITELISTED | NO_SCAN | HAS_EYE_COLOR + flags = CAN_JOIN | IS_WHITELISTED | NO_SCAN + appearance_flags = HAS_EYE_COLOR blood_color = "#2299FC" flesh_color = "#808D11" diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index aa6d4666b0..dbd34e7908 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -103,6 +103,7 @@ var/siemens_coefficient = 1 // The lower, the thicker the skin and better the insulation. var/darksight = 2 // Native darksight distance. var/flags = 0 // Various specific features. + var/appearance_flags = 0 // Appearance/display related features. var/slowdown = 0 // Passive movement speed malus (or boost, if negative) var/primitive_form // Lesser form, if any (ie. monkey for humans) var/greater_form // Greater form, if any, ie. human for monkeys. diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 5ba275057b..e30d43893c 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -11,7 +11,8 @@ num_alternate_languages = 2 secondary_langs = list("Sol Common") - flags = CAN_JOIN | HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR + flags = CAN_JOIN + appearance_flags = HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR /datum/species/unathi name = "Unathi" @@ -41,7 +42,8 @@ heat_level_2 = 480 //Default 400 heat_level_3 = 1100 //Default 1000 - flags = CAN_JOIN | IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR + flags = CAN_JOIN | IS_WHITELISTED + appearance_flags = HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR flesh_color = "#34AF10" @@ -96,7 +98,8 @@ primitive_form = "Farwa" - flags = CAN_JOIN | IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR + flags = CAN_JOIN | IS_WHITELISTED + appearance_flags = HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR flesh_color = "#AFA59E" base_color = "#333333" @@ -129,7 +132,8 @@ num_alternate_languages = 2 secondary_langs = list("Skrellian") - flags = CAN_JOIN | IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR + flags = CAN_JOIN | IS_WHITELISTED + appearance_flags = HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR flesh_color = "#8CD7A3" blood_color = "#1D2CBF" diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 3bb42237a8..ad4db049c6 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -325,10 +325,10 @@ var/global/list/damage_icon_parts = list() stand_icon.Blend(base_icon,ICON_OVERLAY) //Underwear - if(underwear && species.flags & HAS_UNDERWEAR) + if(underwear && species.appearance_flags & HAS_UNDERWEAR) stand_icon.Blend(new /icon('icons/mob/human.dmi', underwear), ICON_OVERLAY) - if(undershirt && species.flags & HAS_UNDERWEAR) + if(undershirt && species.appearance_flags & HAS_UNDERWEAR) stand_icon.Blend(new /icon('icons/mob/human.dmi', undershirt), ICON_OVERLAY) if(update_icons) diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm index 4486a0fb82..a2505c467c 100644 --- a/code/modules/nano/modules/human_appearance.dm +++ b/code/modules/nano/modules/human_appearance.dm @@ -140,10 +140,10 @@ return owner && (flags & flag) /datum/nano_module/appearance_changer/proc/can_change_skin_tone() - return owner && (flags & APPEARANCE_SKIN) && owner.species.flags & HAS_SKIN_TONE + return owner && (flags & APPEARANCE_SKIN) && owner.species.appearance_flags & HAS_SKIN_TONE /datum/nano_module/appearance_changer/proc/can_change_skin_color() - return owner && (flags & APPEARANCE_SKIN) && owner.species.flags & HAS_SKIN_COLOR + return owner && (flags & APPEARANCE_SKIN) && owner.species.appearance_flags & HAS_SKIN_COLOR /datum/nano_module/appearance_changer/proc/cut_and_generate_data() // Making the assumption that the available species remain constant diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index bc9a47e25f..15362abb5e 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -19,9 +19,9 @@ var/global/list/limb_icon_cache = list() return if(species && human.species && species.name != human.species.name) return - if(!isnull(human.s_tone) && (human.species.flags & HAS_SKIN_TONE)) + if(!isnull(human.s_tone) && (human.species.appearance_flags & HAS_SKIN_TONE)) s_tone = human.s_tone - if(human.species.flags & HAS_SKIN_COLOR) + if(human.species.appearance_flags & HAS_SKIN_COLOR) s_col = list(human.r_skin, human.g_skin, human.b_skin) /obj/item/organ/external/proc/sync_colour_to_dna() @@ -29,9 +29,9 @@ var/global/list/limb_icon_cache = list() s_col = null if(status & ORGAN_ROBOT) return - if(!isnull(dna.GetUIValue(DNA_UI_SKIN_TONE)) && (species.flags & HAS_SKIN_TONE)) + if(!isnull(dna.GetUIValue(DNA_UI_SKIN_TONE)) && (species.appearance_flags & HAS_SKIN_TONE)) s_tone = dna.GetUIValue(DNA_UI_SKIN_TONE) - if(species.flags & HAS_SKIN_COLOR) + if(species.appearance_flags & HAS_SKIN_COLOR) s_col = list(dna.GetUIValue(DNA_UI_SKIN_R), dna.GetUIValue(DNA_UI_SKIN_G), dna.GetUIValue(DNA_UI_SKIN_B)) /obj/item/organ/external/head/sync_colour_to_human(var/mob/living/carbon/human/human) @@ -60,7 +60,7 @@ var/global/list/limb_icon_cache = list() mob_icon.Blend(eyes_icon, ICON_OVERLAY) overlays |= eyes_icon - if(owner.lip_style && (species && (species.flags & HAS_LIPS))) + if(owner.lip_style && (species && (species.appearance_flags & HAS_LIPS))) var/icon/lip_icon = new/icon('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s") overlays |= lip_icon mob_icon.Blend(lip_icon, ICON_OVERLAY)