diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm
index 841d54d61c1..f534646e182 100644
--- a/code/modules/client/preference_setup/general/03_body.dm
+++ b/code/modules/client/preference_setup/general/03_body.dm
@@ -281,7 +281,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
out += "\[...\]
"
else
out += "
"
-
+
out += "Hair
"
if(has_flag(mob_species, HAS_HAIR_COLOR))
out += "Change Color [HTML_RECT(rgb(pref.r_hair, pref.g_hair, pref.b_hair))] "
@@ -304,7 +304,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
out += "
Body Color
"
out += "Change Color [HTML_RECT(rgb(pref.r_skin, pref.g_skin, pref.b_skin))]
"
-
+
out += "
Body Markings +
"
for(var/M in pref.body_markings)
@@ -351,7 +351,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
mob_species = all_species[pref.species]
pref.gender = sanitize_gender(pref.gender, pref.species)
- var/bodytype = mob_species.get_bodytype()
+ //var/bodytype = mob_species.get_bodytype()
//grab one of the valid hair styles for the newly chosen species
var/list/valid_hairstyles = list()
@@ -363,7 +363,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
continue
if(pref.gender == FEMALE && S.gender == MALE)
continue
- if(!(bodytype in S.species_allowed))
+ if(!(mob_species.type in S.species_allowed))
continue
valid_hairstyles[hairstyle] = hair_styles_list[hairstyle]
@@ -380,7 +380,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
continue
if(pref.gender == FEMALE && S.gender == MALE)
continue
- if(!(bodytype in S.species_allowed))
+ if(!(mob_species.type in S.species_allowed))
continue
valid_facialhairstyles[facialhairstyle] = facial_hair_styles_list[facialhairstyle]
@@ -416,11 +416,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
else if(href_list["hair_style"])
if(mob_species.bald)
return
- var/bodytype = mob_species.get_bodytype()
+ //var/bodytype = mob_species.get_bodytype()
var/list/valid_hairstyles = list()
for(var/hairstyle in hair_styles_list)
var/datum/sprite_accessory/S = hair_styles_list[hairstyle]
- if(!(bodytype in S.species_allowed))
+ if(!(mob_species.type in S.species_allowed))
continue
valid_hairstyles[hairstyle] = hair_styles_list[hairstyle]
@@ -481,14 +481,14 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
if(mob_species.bald)
return
var/list/valid_facialhairstyles = list()
- var/bodytype = mob_species.get_bodytype()
+ //var/bodytype = mob_species.get_bodytype()
for(var/facialhairstyle in facial_hair_styles_list)
var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle]
if(pref.gender == MALE && S.gender == FEMALE)
continue
if(pref.gender == FEMALE && S.gender == MALE)
continue
- if(!(bodytype in S.species_allowed))
+ if(!(mob_species.type in S.species_allowed))
continue
valid_facialhairstyles[facialhairstyle] = facial_hair_styles_list[facialhairstyle]
@@ -501,12 +501,12 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
else if(href_list["marking_style"])
var/list/usable_markings = pref.body_markings ^ body_marking_styles_list
var/datum/species/species = global.all_species[pref.species]
- var/btype = species.get_bodytype()
+ //var/btype = species.get_bodytype()
for(var/M in usable_markings)
var/datum/sprite_accessory/S = usable_markings[M]
if(!S.species_allowed.len)
continue
- else if(!(btype in S.species_allowed))
+ else if(!(species.type in S.species_allowed))
usable_markings -= M
if (!usable_markings.len)
diff --git a/code/modules/mob/abstract/new_player/sprite_accessories.dm b/code/modules/mob/abstract/new_player/sprite_accessories.dm
index 3cf425b4615..a7024f9a2e4 100644
--- a/code/modules/mob/abstract/new_player/sprite_accessories.dm
+++ b/code/modules/mob/abstract/new_player/sprite_accessories.dm
@@ -27,8 +27,8 @@
// Determines if the accessory will be skipped or included in random hair generations
var/gender = NEUTER
- // Restrict some styles to specific species
- var/list/species_allowed = list("Human")
+ // Restrict some styles to specific species. This requires the type path of the datum of the species in question, as well as all children of that datum if applicable.
+ var/list/species_allowed = list(/datum/species/human,/datum/species/human/offworlder,/datum/species/machine/shell,/datum/species/machine/shell/rogue,/datum/species/zombie)
// Whether or not the accessory can be affected by colouration
var/do_colouration = 1
@@ -69,7 +69,7 @@ Follow by example and make good judgement based on length which list to include
name = "Bald" // try to capitalize the names please~
icon_state = "bald" // you do not need to define _s or _l sub-states, game automatically does this for you
gender = MALE
- species_allowed = list("Human","Unathi")
+ species_allowed = list(/datum/species/human,/datum/species/human/offworlder,/datum/species/machine/shell,/datum/species/machine/shell/rogue,/datum/species/zombie,/datum/species/unathi,/datum/species/zombie/unathi)
length = 0
chatname = "bald head" //aim to keep these lowercase so they fit into the hair tugging message
@@ -231,7 +231,7 @@ Follow by example and make good judgement based on length which list to include
name = "Bob"
icon_state = "hair_bob"
gender = FEMALE
- species_allowed = list("Human","Unathi")
+ species_allowed = list(/datum/species/human,/datum/species/human/offworlder,/datum/species/machine/shell,/datum/species/machine/shell/rogue,/datum/species/zombie,/datum/species/unathi,/datum/species/zombie/unathi)
chatname = "short hair"
bob_chin
@@ -255,7 +255,7 @@ Follow by example and make good judgement based on length which list to include
name = "Bobcurl"
icon_state = "hair_bobcurl"
gender = FEMALE
- species_allowed = list("Human","Unathi")
+ species_allowed = list(/datum/species/human,/datum/species/human/offworlder,/datum/species/machine/shell,/datum/species/machine/shell/rogue,/datum/species/zombie,/datum/species/unathi,/datum/species/zombie/unathi)
chatname = "curls"
bobcurl2
@@ -409,14 +409,14 @@ Follow by example and make good judgement based on length which list to include
name = "Buzzcut"
icon_state = "hair_buzzcut"
gender = MALE
- species_allowed = list("Human","Unathi")
+ species_allowed = list(/datum/species/human,/datum/species/human/offworlder,/datum/species/machine/shell,/datum/species/machine/shell/rogue,/datum/species/zombie,/datum/species/unathi,/datum/species/zombie/unathi)
chatname = "unbuzzed hair" //grabbing the grabbable hair
buzzcut2
name = "Buzzcut 2"
icon_state = "hair_buzzcut2"
gender = MALE
- species_allowed = list("Human","Unathi")
+ species_allowed = list(/datum/species/human,/datum/species/human/offworlder,/datum/species/machine/shell,/datum/species/machine/shell/rogue,/datum/species/zombie,/datum/species/unathi,/datum/species/zombie/unathi)
chatname = "unbuzzed hair"
chrono
@@ -1297,7 +1297,7 @@ Follow by example and make good judgement based on length which list to include
spiky
name = "Spiky"
icon_state = "hair_spiky"
- species_allowed = list("Human","Unathi")
+ species_allowed = list(/datum/species/human,/datum/species/human/offworlder,/datum/species/machine/shell,/datum/species/machine/shell/rogue,/datum/species/zombie,/datum/species/unathi,/datum/species/zombie/unathi)
chatname = "mighty spikes"
straightlong
@@ -1729,7 +1729,8 @@ Follow by example and make good judgement based on length which list to include
name = "Shaved"
icon_state = "bald"
gender = NEUTER
- species_allowed = list("Human","Unathi","Tajara","Skrell","Vox")
+ species_allowed = list(/datum/species/human,/datum/species/human/offworlder,/datum/species/machine/shell,/datum/species/machine/shell/rogue,/datum/species/zombie,/datum/species/unathi,/datum/species/zombie/unathi,
+ /datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara,/datum/species/skrell,/datum/species/zombie/skrell,/datum/species/vox)
threeOclock
name = "3 O'clock Shadow"
@@ -1790,7 +1791,7 @@ Follow by example and make good judgement based on length which list to include
elvis
name = "Elvis Sideburns"
icon_state = "facial_elvis"
- species_allowed = list("Human","Unathi")
+ species_allowed = list(/datum/species/human,/datum/species/human/offworlder,/datum/species/machine/shell,/datum/species/machine/shell/rogue,/datum/species/zombie,/datum/species/unathi,/datum/species/zombie/unathi)
fullbeard
name = "Full Beard"
@@ -1923,7 +1924,7 @@ Follow by example and make good judgement based on length which list to include
icon = 'icons/mob/human_face/unathi_hair.dmi'
name = "Unathi Aquatic Frills"
icon_state = "unathi_aquaticfrills"
- species_allowed = list("Unathi")
+ species_allowed = list(/datum/species/unathi,/datum/species/zombie/unathi)
length = 0
chatname = "frills"
@@ -2137,7 +2138,7 @@ Follow by example and make good judgement based on length which list to include
icon = 'icons/mob/human_face/skrell_hair.dmi'
name = "Skrell Short Tentacles"
icon_state = "skrell_hair_m"
- species_allowed = list("Skrell")
+ species_allowed = list(/datum/species/skrell,/datum/species/zombie/skrell)
length = 6
chatname = "Short Tentacles"
@@ -2166,7 +2167,7 @@ Follow by example and make good judgement based on length which list to include
icon = 'icons/mob/human_face/tajara_hair.dmi'
name = "Tajaran Ears"
icon_state = "ears_plain"
- species_allowed = list("Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
taj_ears_bangs
name = "Tajara Bangs"
@@ -2259,7 +2260,7 @@ Follow by example and make good judgement based on length which list to include
icon = 'icons/mob/human_face/vox_hair.dmi'
name = "Kingly Vox Quills"
icon_state = "vox_kingly"
- species_allowed = list("Vox")
+ species_allowed = list(/datum/species/vox)
chatname = "quills"
vox_braid_long
@@ -2293,7 +2294,7 @@ Follow by example and make good judgement based on length which list to include
icon = 'icons/mob/human_face/vaurca_hair.dmi'
name = "Classic Antennae"
icon_state = "vaurca_classic"
- species_allowed = list("Vaurca")
+ species_allowed = list(/datum/species/bug,/datum/species/bug/type_b)
gender = NEUTER
chatname = "antennae"
@@ -2374,7 +2375,7 @@ Follow by example and make good judgement based on length which list to include
icon = 'icons/mob/human_face/tajara_facial_hair.dmi'
name = "Tajara Goatee"
icon_state = "facial_goatee"
- species_allowed = list("Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
taj_goatee_faded
name = "Tajara Goatee Faded"
@@ -2406,7 +2407,7 @@ Follow by example and make good judgement based on length which list to include
icon = 'icons/mob/human_face/unathi_hair.dmi'
name = "Unathi Aquatic Frills"
icon_state = "facial_aquaticfrills"
- species_allowed = list("Unathi")
+ species_allowed = list(/datum/species/unathi,/datum/species/zombie/unathi)
gender = NEUTER
una_bighorns
@@ -2567,7 +2568,7 @@ Follow by example and make good judgement based on length which list to include
icon = 'icons/mob/human_face/ipc_screens.dmi'
name = "blank IPC screen"
icon_state = "ipc_blank"
- species_allowed = list("Machine")
+ species_allowed = list(/datum/species/machine)
gender = NEUTER
ipc_screen_blue
@@ -2698,7 +2699,7 @@ Follow by example and make good judgement based on length which list to include
icon = 'icons/mob/human_face/dionae_hair.dmi'
name = "Mono Eye"
icon_state = "monoeye"
- species_allowed = list("Diona")
+ species_allowed = list(/datum/species/diona)
gender = NEUTER
do_colouration = FALSE
@@ -2739,264 +2740,350 @@ Follow by example and make good judgement based on length which list to include
name = "Tiger Stripes (Tajara)"
icon_state = "tiger"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_GROIN)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/unathi,/datum/species/zombie/unathi,/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
taj_paw_socks
name = "Socks Coloration (Tajara)"
icon_state = "taj_pawsocks"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
una_paw_socks
name = "Socks Coloration (Unathi)"
icon_state = "una_pawsocks"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
- species_allowed = list("Unathi")
+ species_allowed = list(/datum/species/unathi,/datum/species/zombie/unathi)
belly_hands_feet
name = "Hands,Feet,Belly Color (Minor)"
icon_state = "bellyhandsfeetsmall"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_CHEST)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
patches
name = "Color Patches"
icon_state = "patches"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_CHEST,BP_GROIN)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
patchesface
name = "Color Patches (Face)"
icon_state = "patchesface"
body_parts = list(BP_HEAD)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
bands
name = "Color Bands"
icon_state = "bands"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_CHEST,BP_GROIN)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara", "Unathi")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara,/datum/species/unathi,/datum/species/zombie/unathi)
bandsface
name = "Color Bands (Face)"
icon_state = "bandsface"
body_parts = list(BP_HEAD)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara", "Unathi")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara,/datum/species/unathi,/datum/species/zombie/unathi)
tigerhead
name = "Tiger Stripes (Head, Minor)"
icon_state = "tigerhead"
body_parts = list(BP_HEAD)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
tigerface
name = "Tiger Stripes (Head, Major)"
icon_state = "tigerface"
body_parts = list(BP_HEAD)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
backstripe
name = "Back Stripe"
icon_state = "backstripe"
body_parts = list(BP_CHEST)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara", "Unathi")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara,/datum/species/unathi,/datum/species/zombie/unathi)
taj_nose
name = "Nose Color"
icon_state = "taj_nose"
body_parts = list(BP_HEAD)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
taj_muzzle
name = "Muzzle Color"
icon_state = "taj_muzzle"
body_parts = list(BP_HEAD)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
taj_face
name = "Cheeks Color"
icon_state = "taj_face"
body_parts = list(BP_HEAD)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
taj_all
name = "All Tajara Head"
icon_state = "taj_all"
body_parts = list(BP_HEAD)
- species_allowed = list("Tajara", "Zhan-Khazan Tajara", "M'sai Tajara")
+ species_allowed = list(/datum/species/tajaran,/datum/species/tajaran/zhan_khazan,/datum/species/tajaran/m_sai,/datum/species/zombie/tajara)
una_face
name = "Face Color"
icon_state = "una_face"
body_parts = list(BP_HEAD)
- species_allowed = list("Unathi")
+ species_allowed = list(/datum/species/unathi,/datum/species/zombie/unathi)
una_facelow
name = "Face Color Low"
icon_state = "una_facelow"
body_parts = list(BP_HEAD)
- species_allowed = list("Unathi")
+ species_allowed = list(/datum/species/unathi,/datum/species/zombie/unathi)
una_scutes
name = "Scutes"
icon_state = "una_scutes"
body_parts = list(BP_CHEST)
- species_allowed = list("Unathi")
+ species_allowed = list(/datum/species/unathi,/datum/species/zombie/unathi)
una_maswaist
name = "Masculine Waist (For Females)"
icon_state = "una_maswaist"
body_parts = list(BP_CHEST)
- species_allowed = list("Unathi")
+ species_allowed = list(/datum/species/unathi,/datum/species/zombie/unathi)
una_clawshand
name = "Claws (Hands)"
icon_state = "una_claws"
body_parts = list(BP_L_HAND,BP_R_HAND)
- species_allowed = list("Unathi")
+ species_allowed = list(/datum/species/unathi,/datum/species/zombie/unathi)
una_clawsfoot
name = "Claws (Feet)"
icon_state = "una_claws"
body_parts = list(BP_L_FOOT,BP_R_FOOT)
- species_allowed = list("Unathi")
+ species_allowed = list(/datum/species/unathi,/datum/species/zombie/unathi)
spelunker
name = "Spelunker"
icon_state = "spelunker"
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_GROIN,BP_HEAD)
- species_allowed = list("Vaurca")
+ species_allowed = list(/datum/species/bug,/datum/species/bug/type_b)
delver
name = "Delver"
icon_state = "delver"
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_GROIN,BP_HEAD)
- species_allowed = list("Vaurca")
+ species_allowed = list(/datum/species/bug,/datum/species/bug/type_b)
skr_tears
name = "Tear Stains"
icon_state = "skr_tears"
body_parts = list(BP_HEAD)
- species_allowed = list("Skrell")
+ species_allowed = list(/datum/species/skrell,/datum/species/zombie/skrell)
do_colouration = FALSE
skr_arms
name = "Skrell Arms"
icon_state = "skrell_arms"
body_parts = list(BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
- species_allowed = list("Skrell")
+ species_allowed = list(/datum/species/skrell,/datum/species/zombie/skrell)
diona_leaves
name = "Diona Leaves"
icon = 'icons/mob/human_races/markings_diona.dmi'
icon_state = "diona_leaves"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_GROIN,BP_HEAD)
- species_allowed = list("Diona")
+ species_allowed = list(/datum/species/diona)
diona_thorns_head
name = "Diona Thorns (Head)"
icon = 'icons/mob/human_races/markings_diona.dmi'
icon_state = "diona_thorns"
body_parts = list(BP_HEAD)
- species_allowed = list("Diona")
+ species_allowed = list(/datum/species/diona)
diona_thorns_torso
name = "Diona Thorns (Torso)"
icon = 'icons/mob/human_races/markings_diona.dmi'
icon_state = "diona_thorns"
body_parts = list(BP_CHEST)
- species_allowed = list("Diona")
+ species_allowed = list(/datum/species/diona)
diona_flowers_head
name = "Diona Flowers (Head)"
icon = 'icons/mob/human_races/markings_diona.dmi'
icon_state = "diona_flowers"
body_parts = list(BP_HEAD)
- species_allowed = list("Diona")
+ species_allowed = list(/datum/species/diona)
diona_flowers_torso
name = "Diona Flowers (Torso)"
icon = 'icons/mob/human_races/markings_diona.dmi'
icon_state = "diona_flowers"
body_parts = list(BP_CHEST)
- species_allowed = list("Diona")
+ species_allowed = list(/datum/species/diona)
diona_moss
name = "Diona Moss"
icon = 'icons/mob/human_races/markings_diona.dmi'
icon_state = "diona_moss"
body_parts = list(BP_CHEST)
- species_allowed = list("Diona")
+ species_allowed = list(/datum/species/diona)
diona_mushroom
name = "Diona Mushroom"
icon = 'icons/mob/human_races/markings_diona.dmi'
icon_state = "diona_mushroom"
body_parts = list(BP_HEAD)
- species_allowed = list("Diona")
+ species_allowed = list(/datum/species/diona)
diona_antennae
name = "Diona Antennae"
icon = 'icons/mob/human_races/markings_diona.dmi'
icon_state = "diona_antennae"
body_parts = list(BP_HEAD)
- species_allowed = list("Diona")
+ species_allowed = list(/datum/species/diona)
+//bishop
bishop_lights
- name = "Lights Colour"
+ name = "Bishop - Lights Colour"
icon = 'icons/mob/human_races/markings_bishop.dmi'
icon_state = "bishop_lights"
icon_blend_mode = ICON_MULTIPLY
is_painted = TRUE
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_HEAD)
- species_allowed = list("Bishop Accessory Frame")
+ species_allowed = list(/datum/species/machine/bishop)
bishop_mask
- name = "Face Mask"
+ name = "Bishop - Face Mask"
icon_state = "bishop_mask"
do_colouration = FALSE
body_parts = list(BP_HEAD)
bishop_triangular_mask
- name = "Triangular Face Mask"
+ name = "Bishop - Triangular Face Mask"
icon_state = "bishop_triangular_mask"
-/*
- zenghu
- icon = 'icons/mob/human_races/markings_zenghu.dmi'
- icon_state = "outer"
+ bishop_panels
+ name = "Bishop - Full Body Panel Colors"
+ icon_state = "bishop_panels"
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_HEAD)
+
+ bishop_head
+ name = "Bishop - Head Panel Colors"
+ body_parts = list(BP_HEAD)
+
+ bishop_legs
+ name = "Bishop - Leg Panel Colors"
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
+
+ bishop_arms
+ name = "Bishop - Arm Panel Colors"
+ body_parts = list(BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM)
+
+//hephaestus g1
+ g1_panels
+ name = "G1 - Full Panel Colors"
+ icon = 'icons/mob/human_races/markings_industrial.dmi'
+ icon_state = "g1_primary"
icon_blend_mode = ICON_MULTIPLY
- name = "Outer Finish"
- body_parts = list(BP_HEAD)
- species_allowed = list("Zeng-Hu Mobility Frame")
is_painted = TRUE
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM,BP_GROIN,BP_CHEST,BP_HEAD)
+ species_allowed = list(/datum/species/machine/industrial)
- inner
- name = "Inner Finish"
- icon_state = "inner"
- body_parts = list(BP_L_FOOT, BP_R_FOOT, BP_L_HAND, BP_R_HAND, BP_L_LEG, BP_R_LEG)
+ g1_head
+ name = "G1 - Head Panel Colors"
+ body_parts = list(BP_HEAD)
- l_foot
- name = "Inner Finish (Left Leg)"
- body_parts = list(BP_L_FOOT, BP_L_LEG)
+ g1_legs
+ name = "G1 - Leg Panel Colors"
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
- r_foot
- name = "Inner Finish (Right Leg)"
- body_parts = list(BP_R_FOOT, BP_R_LEG)
+ g1_arms
+ name = "G1 - Arm Panel Colors"
+ body_parts = list(BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM)
- l_hand
- name = "Inner Finish (Left Arm)"
- body_parts = list(BP_L_HAND, BP_L_ARM)
+ g1_lights
+ name = "G1 - Lights Color"
+ icon_state = "g1_lights"
+ body_parts = list(BP_CHEST,BP_HEAD)
- r_hand
- name = "Inner Finish (Right Arm)"
- body_parts = list(BP_R_HAND, BP_R_ARM)
+//hephaestus g2
+ g2_panels
+ name = "G2 - Full Panel Colors"
+ icon = 'icons/mob/human_races/markings_hephaestus.dmi'
+ icon_state = "g2_primary"
+ icon_blend_mode = ICON_MULTIPLY
+ is_painted = TRUE
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM,BP_GROIN,BP_CHEST,BP_HEAD)
+ species_allowed = list(/datum/species/machine/industrial/hephaestus)
- crest_leser
- name = "Head Coloration (Lesser)"
- icon_state = "lesser"
+ g2_head
+ name = "G2 - Head Panel Colors"
+ body_parts = list(BP_HEAD)
- crest_greater
- name = "Head Coloration (Greater)"
- icon_state = "greater"
-*/
+ g2_legs
+ name = "G2 - Leg Panel Colors"
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
+
+ g2_arms
+ name = "G2 - Arm Panel Colors"
+ body_parts = list(BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM)
+
+ g2_lights
+ name = "G2 - Lights Color"
+ icon_state = "g2_lights"
+ body_parts = list(BP_L_ARM,BP_R_ARM,BP_L_LEG,BP_R_LEG,BP_GROIN,BP_CHEST,BP_HEAD)
+
+//zeng-hu mobility frame
+ zeng_panels
+ name = "Zeng-Hu - Full Panel Colors"
+ icon = 'icons/mob/human_races/markings_zenghu.dmi'
+ icon_state = "zeng_primary"
+ icon_blend_mode = ICON_MULTIPLY
+ is_painted = TRUE
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM,BP_GROIN,BP_CHEST,BP_HEAD)
+ species_allowed = list(/datum/species/machine/zenghu)
+
+ zeng_head
+ name = "Zeng-Hu - Head Panel Colors"
+ body_parts = list(BP_HEAD)
+
+ zeng_legs
+ name = "Zeng-Hu - Leg Panel Colors"
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
+
+ zeng_arms
+ name = "Zeng-Hu - Arm Panel Colors"
+ body_parts = list(BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM)
+
+ zeng_lights
+ name = "Zeng-Hu - Lights Color"
+ icon_state = "zeng_lights"
+ body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_HEAD)
+
+//xion
+ xion_panels
+ name = "Xion - Full Panel Colors"
+ icon = 'icons/mob/human_races/markings_xion.dmi'
+ icon_state = "xion_primary"
+ icon_blend_mode = ICON_MULTIPLY
+ is_painted = TRUE
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM,BP_GROIN,BP_CHEST,BP_HEAD)
+ species_allowed = list(/datum/species/machine/industrial/xion)
+
+ xion_head
+ name = "Xion - Head Panel Colors"
+ body_parts = list(BP_HEAD)
+
+ xion_legs
+ name = "Xion - Leg Panel Colors"
+ body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
+
+ xion_arms
+ name = "Xion - Arm Panel Colors"
+ body_parts = list(BP_L_HAND,BP_R_HAND,BP_L_ARM,BP_R_ARM)
+
+ xion_lights
+ name = "Xion - Lights Color"
+ icon_state = "xion_lights"
+ body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_HEAD)
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm
index 66bcd8bfa05..803f0605b21 100644
--- a/code/modules/mob/living/carbon/human/appearance.dm
+++ b/code/modules/mob/living/carbon/human/appearance.dm
@@ -168,7 +168,7 @@
continue
if(check_gender && gender == FEMALE && S.gender == MALE)
continue
- if(!(species.get_bodytype() in S.species_allowed))
+ if(!(species.type in S.species_allowed))
continue
valid_hairstyles += hairstyle
@@ -185,7 +185,7 @@
continue
if(gender == FEMALE && S.gender == MALE)
continue
- if(!(species.get_bodytype() in S.species_allowed))
+ if(!(species.type in S.species_allowed))
continue
valid_facial_hairstyles += facialhairstyle
diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm
index bb044418a8a..b3d887a3a52 100644
--- a/code/modules/mob/living/carbon/human/human_powers.dm
+++ b/code/modules/mob/living/carbon/human/human_powers.dm
@@ -20,7 +20,7 @@
var/list/datum/sprite_accessory/hair/valid_hairstyles = list()
for(var/hair_string in hair_styles_list)
var/datum/sprite_accessory/hair/test = hair_styles_list[hair_string]
- if(test.length >= 2 && (species.bodytype in test.species_allowed))
+ if(test.length >= 2 && (species.type in test.species_allowed))
valid_hairstyles.Add(hair_string)
selected_string = input("Select a new hairstyle", "Your hairstyle", hair_style) as null|anything in valid_hairstyles
if(selected_string && h_style != selected_string)
@@ -41,7 +41,7 @@ mob/living/carbon/human/proc/change_monitor()
var/list/datum/sprite_accessory/facial_hair/valid_screenstyles = list()
for(var/screen_string in facial_hair_styles_list)
var/datum/sprite_accessory/facial_hair/test = facial_hair_styles_list[screen_string]
- if(species.bodytype in test.species_allowed)
+ if(species.type in test.species_allowed)
valid_screenstyles.Add(screen_string)
selected_string = input("Select a new screen", "Your monitor display", screen_style) as null|anything in valid_screenstyles
if(selected_string && f_style != selected_string)
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 7e0dc709234..7c37c37f895 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -354,7 +354,7 @@ There are several things that need to be remembered:
// Beard.
if(f_style)
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style]
- if(facial_hair_style && facial_hair_style.species_allowed && (GET_BODY_TYPE in facial_hair_style.species_allowed))
+ if(facial_hair_style && facial_hair_style.species_allowed && (species.type in facial_hair_style.species_allowed))
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = facial_hair_style.icon_state)
if(facial_hair_style.do_colouration)
facial_s.Blend(rgb(r_facial, g_facial, b_facial), facial_hair_style.icon_blend_mode)
@@ -364,7 +364,7 @@ There are several things that need to be remembered:
// Hair.
if(hair_is_visible)
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style]
- if(hair_style && (GET_BODY_TYPE in hair_style.species_allowed))
+ if(hair_style && (species.type in hair_style.species_allowed))
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = hair_style.icon_state)
if(hair_style.do_colouration)
hair_s.Blend(rgb(r_hair, g_hair, b_hair), hair_style.icon_blend_mode)
diff --git a/html/changelogs/colorable_ipc_panels.yml b/html/changelogs/colorable_ipc_panels.yml
new file mode 100644
index 00000000000..fc8945f2cdb
--- /dev/null
+++ b/html/changelogs/colorable_ipc_panels.yml
@@ -0,0 +1,8 @@
+author: Burrito Justice and Nienna
+
+delete-after: True
+
+changes:
+ - rscadd: "Added body markings for the G1, G2, Bishop, Zeng-Hu, and Xion IPC frames to be colored and customized."
+ - tweak: "The G2 sprite has been updated to give it a fresher look, courtesy of Nienna."
+ - tweak: "Changed how species are checked in the code. It now requires the full type path of the species datum, instead of the bodytype."
\ No newline at end of file
diff --git a/icons/mob/human_races/ipc/ind_hephaestus_preview.dmi b/icons/mob/human_races/ipc/ind_hephaestus_preview.dmi
index 43bb0753c64..cb8ee803d9f 100644
Binary files a/icons/mob/human_races/ipc/ind_hephaestus_preview.dmi and b/icons/mob/human_races/ipc/ind_hephaestus_preview.dmi differ
diff --git a/icons/mob/human_races/ipc/r_ind_hephaestus.dmi b/icons/mob/human_races/ipc/r_ind_hephaestus.dmi
index eb095f62fff..4c7e77672c0 100644
Binary files a/icons/mob/human_races/ipc/r_ind_hephaestus.dmi and b/icons/mob/human_races/ipc/r_ind_hephaestus.dmi differ
diff --git a/icons/mob/human_races/ipc/r_ind_hephaestus_old.dmi b/icons/mob/human_races/ipc/r_ind_hephaestus_old.dmi
new file mode 100644
index 00000000000..eb095f62fff
Binary files /dev/null and b/icons/mob/human_races/ipc/r_ind_hephaestus_old.dmi differ
diff --git a/icons/mob/human_races/markings_bishop.dmi b/icons/mob/human_races/markings_bishop.dmi
index 0be93603624..c8862dc0ba5 100644
Binary files a/icons/mob/human_races/markings_bishop.dmi and b/icons/mob/human_races/markings_bishop.dmi differ
diff --git a/icons/mob/human_races/markings_hephaestus.dmi b/icons/mob/human_races/markings_hephaestus.dmi
new file mode 100644
index 00000000000..4f51de06a15
Binary files /dev/null and b/icons/mob/human_races/markings_hephaestus.dmi differ
diff --git a/icons/mob/human_races/markings_industrial.dmi b/icons/mob/human_races/markings_industrial.dmi
new file mode 100644
index 00000000000..11ffc8db0c1
Binary files /dev/null and b/icons/mob/human_races/markings_industrial.dmi differ
diff --git a/icons/mob/human_races/markings_xion.dmi b/icons/mob/human_races/markings_xion.dmi
new file mode 100644
index 00000000000..01208bc80a6
Binary files /dev/null and b/icons/mob/human_races/markings_xion.dmi differ
diff --git a/icons/mob/human_races/markings_zenghu.dmi b/icons/mob/human_races/markings_zenghu.dmi
index 7d90ce44603..e509a29af64 100644
Binary files a/icons/mob/human_races/markings_zenghu.dmi and b/icons/mob/human_races/markings_zenghu.dmi differ