diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index a9f9e792c962..cd01cef70503 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -83,7 +83,6 @@ item_state = "cage" worn_x_dimension = 64 worn_y_dimension = 64 - dynamic_hair_suffix = "" /obj/item/storage/box/holy/sentinel name = "Stone Sentinel Kit" diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 9a5ad91cef0e..b1e1cc1f2105 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -35,13 +35,6 @@ var/pocket_storage_component_path - //These allow head/mask items to dynamically alter the user's hair - // and facial hair, checking hair_extensions.dmi and facialhair_extensions.dmi - // for a state matching hair_state+dynamic_hair_suffix - // THESE OVERRIDE THE HIDEHAIR FLAGS - var/dynamic_hair_suffix = ""//head > mask for head hair - var/dynamic_fhair_suffix = ""//mask > head for facial hair - ///These are armor values that protect the wearer, taken from the clothing's armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic(). var/list/armor_list = list() ///These are armor values that protect the clothing, taken from its armor datum. List updates on examine because it's currently only used to print armor ratings to chat in Topic(). diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index 69646a100668..11deb4ac8b53 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -7,17 +7,10 @@ slot_flags = ITEM_SLOT_HEAD var/blockTracking = 0 //For AI tracking var/can_toggle = null - dynamic_hair_suffix = "+generic" greyscale_icon_state = "hat" greyscale_colors = list(list(16,26)) supports_variations = VOX_VARIATION -/obj/item/clothing/head/Initialize() - . = ..() - if(ishuman(loc) && dynamic_hair_suffix) - var/mob/living/carbon/human/H = loc - H.update_hair() - ///Special throw_impact for hats to frisbee hats at people to place them on their heads/attempt to de-hat them. /obj/item/clothing/head/throw_impact(atom/hit_atom, datum/thrownthing/thrownthing) . = ..() diff --git a/code/modules/clothing/head/berets.dm b/code/modules/clothing/head/berets.dm index 4c8595f2541d..30a291dcb327 100644 --- a/code/modules/clothing/head/berets.dm +++ b/code/modules/clothing/head/berets.dm @@ -4,8 +4,6 @@ desc = "A red beret." icon_state = "beret" dog_fashion = /datum/dog_fashion/head/beret - dynamic_hair_suffix = "+generic" - dynamic_fhair_suffix = "+generic" /obj/item/clothing/head/beret/vintage name = "vintage beret" diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 55b2a117dccf..7dbe408eb39a 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -21,7 +21,6 @@ desc = "A rare chef's hat meant for hat collectors!" icon_state = "chef" item_state = "chef" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/chef @@ -50,7 +49,6 @@ name = "collectable police officer's hat" desc = "A collectable police officer's Hat. This hat emphasizes that you are THE LAW." icon_state = "policehelm" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/warden @@ -74,7 +72,6 @@ icon_state = "headslime" item_state = "headslime" clothing_flags = SNUG_FIT - dynamic_hair_suffix = "" /obj/item/clothing/head/collectable/flatcap name = "collectable flat cap" @@ -95,7 +92,6 @@ desc = "The fur feels... a bit too realistic." icon_state = "kitty" item_state = "kitty" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/kitty @@ -104,7 +100,6 @@ desc = "Not as lucky as the feet!" icon_state = "bunny" item_state = "bunny" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/rabbit @@ -128,7 +123,6 @@ name = "collectable HoS hat" desc = "Now you too can beat prisoners, set silly sentences, and arrest for no reason!" icon_state = "hoscap" - dynamic_hair_suffix = "" /obj/item/clothing/head/collectable/HoP name = "collectable HoP hat" diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 7885e4636823..0eba8a277915 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -20,7 +20,6 @@ actions_types = list(/datum/action/item_action/toggle_helmet_light) clothing_flags = SNUG_FIT resistance_flags = FIRE_PROOF - dynamic_hair_suffix = "+generic" light_system = MOVABLE_LIGHT_DIRECTIONAL light_range = 4 light_power = 0.8 diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index e6400198864e..1b3b5b3f8137 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -332,7 +332,6 @@ name = "police officer's hat" desc = "A police officer's Hat. This hat emphasizes that you are THE LAW." icon_state = "policehelm" - dynamic_hair_suffix = "" /obj/item/clothing/head/helmet/constable name = "constable helmet" diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index c4d13ef36948..0c61c587044f 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -12,7 +12,6 @@ desc = "The commander in chef's head wear." strip_delay = 10 equip_delay_other = 10 - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/chef //Captain @@ -138,7 +137,6 @@ icon_state = "hoscap" armor = list("melee" = 40, "bullet" = 30, "laser" = 25, "energy" = 35, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 60) strip_delay = 80 - dynamic_hair_suffix = "" /obj/item/clothing/head/HoS/cowboy name = "sheriff's hat" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 94de3eda735d..f10c75a76401 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -65,7 +65,6 @@ name = "nurse's hat" desc = "It allows quick identification of trained medical personnel." icon_state = "nursehat" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/nurse @@ -124,7 +123,6 @@ name = "rabbit ears" desc = "A headband with a pair of faux rabbit ears." icon_state = "bunny" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/rabbit @@ -165,14 +163,12 @@ desc = "Yarr." icon_state = "bandana" item_state = "bandana" - dynamic_hair_suffix = "" /obj/item/clothing/head/bowler name = "bowler-hat" desc = "Gentleman, elite aboard!" icon_state = "bowler" item_state = "bowler" - dynamic_hair_suffix = "" /obj/item/clothing/head/witchwig name = "witch costume wig" @@ -288,7 +284,6 @@ w_class = WEIGHT_CLASS_SMALL attack_verb = list("warned", "cautioned", "smashed") resistance_flags = NONE - dynamic_hair_suffix = "" /obj/item/clothing/head/santa name = "santa hat" @@ -303,7 +298,6 @@ name = "jester hat" desc = "A hat with bells, to add some merriness to the suit." icon_state = "jester_hat" - dynamic_hair_suffix = "" /obj/item/clothing/head/jester/alt icon_state = "jester2" @@ -331,7 +325,6 @@ icon_state = "crown" armor = list("melee" = 15, "bullet" = 0, "laser" = 0,"energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF - dynamic_hair_suffix = "" /obj/item/clothing/head/crown/fancy name = "magnificent crown" @@ -376,7 +369,6 @@ name = "french beret" desc = "A quality beret, infused with the aroma of chain-smoking, wine-swilling Parisians. You feel less inclined to engage in military conflict, for some reason." icon_state = "beret" - dynamic_hair_suffix = "" /obj/item/clothing/head/frenchberet/equipped(mob/M, slot) . = ..() @@ -439,7 +431,6 @@ item_state = "shrine_wig" worn_x_dimension = 64 worn_y_dimension = 64 - dynamic_hair_suffix = "" /obj/item/clothing/head/intern name = "\improper CentCom Head Intern beancap" @@ -505,8 +496,6 @@ name = "cowboy hat" desc = "A classic stetson hat, made from real imitation leather! Wearing it gives you a strong urge to yeehaw." icon_state = "cowboy" - dynamic_fhair_suffix = "+generic" - dynamic_fhair_suffix = "+generic" dog_fashion = /datum/dog_fashion/head/cowboy diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index eeea7622b4d9..b9e828ab3974 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -167,7 +167,6 @@ desc = "A pair of kitty ears. Meow!" icon_state = "kitty" color = "#999999" - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/kitty @@ -190,7 +189,6 @@ flags_inv = 0 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) light_range = 1 //luminosity when on - dynamic_hair_suffix = "" dog_fashion = /datum/dog_fashion/head/reindeer diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index 7448dc8cbcbe..4b19735b5f62 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -9,8 +9,6 @@ permeability_coefficient = 0.01 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - dynamic_hair_suffix = "" - dynamic_fhair_suffix = "" cold_protection = HEAD min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT heat_protection = HEAD diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 8a74e555469a..aa0367f12ead 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -60,8 +60,6 @@ Contains: desc = "An armored beret commonly used by special operations officers. Uses advanced force field technology to protect the head from space." icon_state = "beret_badge" greyscale_colors = "#397F3F#FFCE5B" - dynamic_hair_suffix = "+generic" - dynamic_fhair_suffix = "+generic" flags_inv = 0 armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 60, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) strip_delay = 130 @@ -317,7 +315,7 @@ Contains: light_system = NO_LIGHT_SUPPORT light_range = 0 //luminosity when on actions_types = list() - flags_inv = HIDEEARS|HIDEHAIR|HIDEFACIALHAIR //facial hair will clip with the helm, this'll need a dynamic_fhair_suffix at some point. + flags_inv = HIDEEARS|HIDEHAIR|HIDEFACIALHAIR /obj/item/clothing/head/helmet/space/hardsuit/carp/Initialize() . = ..() diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 59b252a9836a..0f8976009036 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -310,7 +310,6 @@ body_parts_covered = HEAD clothing_flags = THICKMATERIAL flags_inv = HIDEHAIR|HIDEEARS - dynamic_hair_suffix = "" /obj/item/clothing/suit/hooded/bloated_human //OH MY GOD WHAT HAVE YOU DONE!?!?!? name = "bloated human suit" diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 4255335cda74..0eb5a90676c6 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -75,7 +75,6 @@ /obj/item/clothing/head/hooded var/obj/item/clothing/suit/hooded/suit - dynamic_hair_suffix = "" /obj/item/clothing/head/hooded/Destroy() suit = null diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 5a1810e1fba1..ac91351c2324 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -61,8 +61,6 @@ clothing_flags = THICKMATERIAL | SNUG_FIT armor = list("melee" = 20, "bullet" = 0, "laser" = 20,"energy" = 30, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR - dynamic_hair_suffix = "" - dynamic_fhair_suffix = "" cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT heat_protection = HEAD diff --git a/code/modules/mob/dead/new_player/sprite_accessories/hair.dm b/code/modules/mob/dead/new_player/sprite_accessories/hair.dm index af774d9b055b..34d8dd274668 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/hair.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/hair.dm @@ -1,6 +1,6 @@ // Hair for use on mobs // Keep the names alphabetical, and capitalized. -// You do not need to define _s or _l sub-states, game automatically does this for you +// You do not need to define _s or _l sub-states, game automatically does this for you //what is this /datum/sprite_accessory/hair icon = 'icons/mob/human_face.dmi' // default icon for all hairs @@ -302,6 +302,14 @@ name = "Gentle" icon_state = "hair_gentle" +/datum/sprite_accessory/hair/gloomy + name = "Gloomy" + icon_state = "hair_gloomy" + +/datum/sprite_accessory/hair/gloomy_long + name = "Gloomy (Long)" + icon_state = "hair_gloomylong" + /datum/sprite_accessory/hair/halfbang name = "Half-banged Hair" icon_state = "hair_halfbang" @@ -310,9 +318,9 @@ name = "Half-banged Hair 2" icon_state = "hair_halfbang2" -/datum/sprite_accessory/hair/halfshaved - name = "Half-shaved" - icon_state = "hair_halfshaved" +/datum/sprite_accessory/hair/halfshave + name = "Half-shave" + icon_state = "hair_halfshave" /datum/sprite_accessory/hair/harley name = "Harley" @@ -694,6 +702,10 @@ name = "Tress Shoulder" icon_state = "hair_tressshoulder" +/datum/sprite_accessory/hair/tribun + name = "Tri-bun" + icon_state = "hair_tribun" + /datum/sprite_accessory/hair/trimmed name = "Trimmed" icon_state = "hair_trimmed" @@ -706,6 +718,10 @@ name = "Twintails" icon_state = "hair_twintail" +/datum/sprite_accessory/hair/ruby + name = "Ruby" + icon_state = "hair_ruby" + /datum/sprite_accessory/hair/undercut name = "Undercut" icon_state = "hair_undercut" diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 0317631206bc..756af00f1839 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -284,10 +284,6 @@ /mob/living/carbon/human/head_update(obj/item/I, forced) if((I.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || forced) update_hair() - else - var/obj/item/clothing/C = I - if(istype(C) && C.dynamic_hair_suffix) - update_hair() if(I.flags_inv & HIDEEYES || forced) update_inv_glasses() if(I.flags_inv & HIDEEARS || forced) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 8a8677523fc1..fbe020099ee8 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -560,9 +560,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/hair_hidden = FALSE //ignored if the matching dynamic_X_suffix is non-empty var/facialhair_hidden = FALSE // ^ - var/dynamic_hair_suffix = "" //if this is non-null, and hair+suffix matches an iconstate, then we render that hair instead - var/dynamic_fhair_suffix = "" - //for augmented heads if(!IS_ORGANIC_LIMB(HD)) return @@ -570,41 +567,19 @@ GLOBAL_LIST_EMPTY(roundstart_races) //we check if our hat or helmet hides our facial hair. if(H.head) var/obj/item/I = H.head - if(isclothing(I)) - var/obj/item/clothing/C = I - dynamic_fhair_suffix = C.dynamic_fhair_suffix if(I.flags_inv & HIDEFACIALHAIR) facialhair_hidden = TRUE if(H.wear_mask) var/obj/item/I = H.wear_mask - if(isclothing(I)) - var/obj/item/clothing/C = I - dynamic_fhair_suffix = C.dynamic_fhair_suffix //mask > head in terms of facial hair if(I.flags_inv & HIDEFACIALHAIR) facialhair_hidden = TRUE - if(H.facial_hairstyle && (FACEHAIR in species_traits) && (!facialhair_hidden || dynamic_fhair_suffix)) + if(H.facial_hairstyle && (FACEHAIR in species_traits) && !facialhair_hidden) S = GLOB.facial_hairstyles_list[H.facial_hairstyle] if(S) - //List of all valid dynamic_fhair_suffixes - var/static/list/fextensions - if(!fextensions) - var/icon/fhair_extensions = icon('icons/mob/facialhair_extensions.dmi') - fextensions = list() - for(var/s in fhair_extensions.IconStates(1)) - fextensions[s] = TRUE - qdel(fhair_extensions) - - //Is hair+dynamic_fhair_suffix a valid iconstate? - var/fhair_state = S.icon_state - var/fhair_file = S.icon - if(fextensions[fhair_state+dynamic_fhair_suffix]) - fhair_state += dynamic_fhair_suffix - fhair_file = 'icons/mob/facialhair_extensions.dmi' - - var/mutable_appearance/facial_overlay = mutable_appearance(fhair_file, fhair_state, -HAIR_LAYER) + var/mutable_appearance/facial_overlay = mutable_appearance(S.icon, S.icon_state, -HAIR_LAYER) if(!forced_colour) if(hair_color) @@ -625,21 +600,15 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(H.head) var/obj/item/I = H.head - if(isclothing(I)) - var/obj/item/clothing/C = I - dynamic_hair_suffix = C.dynamic_hair_suffix if(I.flags_inv & HIDEHAIR) hair_hidden = TRUE if(H.wear_mask) var/obj/item/I = H.wear_mask - if(!dynamic_hair_suffix && isclothing(I)) //head > mask in terms of head hair - var/obj/item/clothing/C = I - dynamic_hair_suffix = C.dynamic_hair_suffix if(I.flags_inv & HIDEHAIR) hair_hidden = TRUE - if(!hair_hidden || dynamic_hair_suffix) + if(!hair_hidden) var/mutable_appearance/hair_overlay = mutable_appearance(layer = -HAIR_LAYER) var/mutable_appearance/gradient_overlay = mutable_appearance(layer = -HAIR_LAYER) if(!hair_hidden && !H.getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain @@ -651,21 +620,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) S = GLOB.hairstyles_list[H.hairstyle] if(S) - //List of all valid dynamic_hair_suffixes - var/static/list/extensions - if(!extensions) - var/icon/hair_extensions = icon('icons/mob/hair_extensions.dmi') //hehe - extensions = list() - for(var/s in hair_extensions.IconStates(1)) - extensions[s] = TRUE - qdel(hair_extensions) - - //Is hair+dynamic_hair_suffix a valid iconstate? var/hair_state = S.icon_state var/hair_file = S.icon - if(extensions[hair_state+dynamic_hair_suffix]) - hair_state += dynamic_hair_suffix - hair_file = 'icons/mob/hair_extensions.dmi' hair_overlay.icon = hair_file hair_overlay.icon_state = hair_state diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm index 0af67016116f..cab30f0219ef 100644 --- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm +++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm @@ -102,7 +102,6 @@ Slimecrossing Armor item_state = "peaceflower" slot_flags = ITEM_SLOT_HEAD body_parts_covered = NONE - dynamic_hair_suffix = "" force = 0 throwforce = 0 w_class = WEIGHT_CLASS_TINY diff --git a/icons/mob/hair_extensions.dmi b/icons/mob/hair_extensions.dmi deleted file mode 100644 index cafc9fab781c..000000000000 Binary files a/icons/mob/hair_extensions.dmi and /dev/null differ diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index d130ba2cf2e3..a819dd3ca780 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ