diff --git a/code/datums/diseases/advance/symptoms/beard.dm b/code/datums/diseases/advance/symptoms/beard.dm index b537c31edac..0b7280c6a5f 100644 --- a/code/datums/diseases/advance/symptoms/beard.dm +++ b/code/datums/diseases/advance/symptoms/beard.dm @@ -32,5 +32,5 @@ if(index > 0 && H.facial_hairstyle != beard_order[index]) to_chat(H, span_warning("Your chin itches.")) H.facial_hairstyle = beard_order[index] - H.update_hair(is_creating = TRUE) + H.update_body_parts() diff --git a/code/datums/diseases/advance/symptoms/shedding.dm b/code/datums/diseases/advance/symptoms/shedding.dm index fe199c60ce3..344bb9df603 100644 --- a/code/datums/diseases/advance/symptoms/shedding.dm +++ b/code/datums/diseases/advance/symptoms/shedding.dm @@ -45,4 +45,4 @@ H.hairstyle = "Bald" else H.hairstyle = "Balding Hair" - H.update_hair(is_creating = TRUE) + H.update_body_parts() diff --git a/code/datums/dna.dm b/code/datums/dna.dm index b4b99d750e9..13f406c5f09 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -608,8 +608,8 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block()) external_organ.mutate_feature(features, src) if(icon_update) - dna.species.handle_body(src) // We want 'update_body_parts()' to be called only if mutcolor_update is TRUE, so no 'update_body()' here. - update_hair(is_creating = TRUE) + dna.species.handle_body(src) // We want 'update_body_parts(update_limb_data = TRUE)' to be called only if mutcolor_update is TRUE, so no 'update_body()' here. + update_body_parts() //We can call this because it doesnt refresh limb data, and it handles hair and such. if(mutcolor_update) update_body_parts(update_limb_data = TRUE) if(mutations_overlay_update) diff --git a/code/datums/quirks/neutral.dm b/code/datums/quirks/neutral.dm index 6386405770a..c141522968e 100644 --- a/code/datums/quirks/neutral.dm +++ b/code/datums/quirks/neutral.dm @@ -294,7 +294,7 @@ var/mob/living/carbon/human/human_holder = quirk_holder old_hair = human_holder.hairstyle human_holder.hairstyle = "Bald" - human_holder.update_hair(is_creating = TRUE) + human_holder.update_body_parts() RegisterSignal(human_holder, COMSIG_CARBON_EQUIP_HAT, .proc/equip_hat) RegisterSignal(human_holder, COMSIG_CARBON_UNEQUIP_HAT, .proc/unequip_hat) @@ -314,7 +314,7 @@ . = ..() var/mob/living/carbon/human/human_holder = quirk_holder human_holder.hairstyle = old_hair - human_holder.update_hair(is_creating = TRUE) + human_holder.update_body_parts() UnregisterSignal(human_holder, list(COMSIG_CARBON_EQUIP_HAT, COMSIG_CARBON_UNEQUIP_HAT)) human_holder.clear_mood_event("bad_hair_day") diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index acf4f869799..56f2db077f1 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -121,7 +121,7 @@ else H.hairstyle = "Skinhead" - H.update_hair(is_creating = TRUE) + H.update_body_parts() playsound(loc, 'sound/items/welder2.ogg', 20, TRUE) @@ -150,7 +150,7 @@ if(new_style && do_after(user, 60, target = H)) user.visible_message(span_notice("[user] successfully changes [H]'s facial hairstyle using [src]."), span_notice("You successfully change [H]'s facial hairstyle using [src].")) H.facial_hairstyle = new_style - H.update_hair(is_creating = TRUE) + H.update_body_parts() return else return @@ -201,7 +201,7 @@ if(new_style && do_after(user, 60, target = H)) user.visible_message(span_notice("[user] successfully changes [H]'s hairstyle using [src]."), span_notice("You successfully change [H]'s hairstyle using [src].")) H.hairstyle = new_style - H.update_hair(is_creating = TRUE) + H.update_body_parts() return else diff --git a/code/game/objects/items/dyekit.dm b/code/game/objects/items/dyekit.dm index d1a5a8f00da..1007d9971e0 100644 --- a/code/game/objects/items/dyekit.dm +++ b/code/game/objects/items/dyekit.dm @@ -47,4 +47,4 @@ human_target.grad_style[gradient_key] = new_grad_style human_target.grad_color[gradient_key] = sanitize_hexcolor(new_grad_color) playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5) - human_target.update_hair(is_creating = TRUE) + human_target.update_body_parts() diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 7473aa62f0d..b6cefb8eb2c 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -49,7 +49,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) hairdresser.hairstyle = new_style - hairdresser.update_hair(is_creating = TRUE) + hairdresser.update_body_parts() /obj/structure/mirror/examine_status(mob/user) if(broken) @@ -250,7 +250,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) if(new_face_color) amazed_human.facial_hair_color = sanitize_hexcolor(new_face_color) amazed_human.dna.update_ui_block(DNA_FACIAL_HAIR_COLOR_BLOCK) - amazed_human.update_hair() + amazed_human.update_body_parts() if(BODY_ZONE_PRECISE_EYES) var/new_eye_color = input(amazed_human, "Choose your eye color", "Eye Color", amazed_human.eye_color_left) as color|null diff --git a/code/modules/antagonists/blob/blob_mobs.dm b/code/modules/antagonists/blob/blob_mobs.dm index da78d1977af..ab573071441 100644 --- a/code/modules/antagonists/blob/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob_mobs.dm @@ -188,7 +188,7 @@ icon = H.icon icon_state = "zombie" H.hairstyle = null - H.update_hair(is_creating = TRUE) + H.update_body_parts() H.forceMove(src) oldguy = H update_icons() diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index ff10a808899..c2fa37b117f 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -95,7 +95,7 @@ H.temporarilyRemoveItemFromInventory(H.wear_suit, TRUE) H.update_worn_oversuit() H.update_worn_head() - H.update_hair(is_creating = TRUE) + H.update_body_parts() if(blood_on_castoff) H.add_splatter_floor() diff --git a/code/modules/antagonists/creep/creep.dm b/code/modules/antagonists/creep/creep.dm index 6c8e8dcda66..0479e19e989 100644 --- a/code/modules/antagonists/creep/creep.dm +++ b/code/modules/antagonists/creep/creep.dm @@ -41,7 +41,7 @@ var/mob/living/carbon/human/dummy/consistent/victim_dummy = new victim_dummy.hair_color = "#bb9966" // Brown victim_dummy.hairstyle = "Messy" - victim_dummy.update_hair(is_creating = TRUE) + victim_dummy.update_body_parts() var/icon/obsessed_icon = render_preview_outfit(preview_outfit) obsessed_icon.Blend(icon('icons/effects/blood.dmi', "uniformblood"), ICON_OVERLAY) diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index 3571d209389..cffc0ad40f1 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -206,7 +206,7 @@ /datum/antagonist/rev/head/proc/make_assistant_icon(hairstyle) var/mob/living/carbon/human/dummy/consistent/assistant = new assistant.hairstyle = hairstyle - assistant.update_hair(is_creating = TRUE) + assistant.update_body_parts() var/icon/assistant_icon = render_preview_outfit(/datum/outfit/job/assistant/consistent, assistant) assistant_icon.ChangeOpacity(0.5) diff --git a/code/modules/antagonists/thief/thief.dm b/code/modules/antagonists/thief/thief.dm index 3576ad97340..f7d56837db3 100644 --- a/code/modules/antagonists/thief/thief.dm +++ b/code/modules/antagonists/thief/thief.dm @@ -165,7 +165,7 @@ thief.physique = FEMALE //update_body() and gender block or something thief.hair_color = "#2A71DC" //hair color dna block thief.skin_tone = "caucasian2" //skin tone dna block - thief.hairstyle = "Bun Head 2" //update_hair() + thief.hairstyle = "Bun Head 2" //update_body_parts() thief.dna.update_ui_block(DNA_GENDER_BLOCK) thief.dna.update_ui_block(DNA_HAIR_COLOR_BLOCK) thief.dna.update_ui_block(DNA_SKIN_TONE_BLOCK) diff --git a/code/modules/client/preferences/species_features/basic.dm b/code/modules/client/preferences/species_features/basic.dm index 1d6351313ad..057377327e8 100644 --- a/code/modules/client/preferences/species_features/basic.dm +++ b/code/modules/client/preferences/species_features/basic.dm @@ -66,7 +66,7 @@ /datum/preference/choiced/facial_hairstyle/apply_to_human(mob/living/carbon/human/target, value) target.facial_hairstyle = value - target.update_hair(is_creating = TRUE) + target.update_body_parts() /datum/preference/choiced/facial_hairstyle/compile_constant_data() var/list/data = ..() @@ -83,7 +83,7 @@ /datum/preference/color/facial_hair_color/apply_to_human(mob/living/carbon/human/target, value) target.facial_hair_color = value - target.update_hair(is_creating = TRUE) + target.update_body_parts() /datum/preference/choiced/facial_hair_gradient category = PREFERENCE_CATEGORY_SECONDARY_FEATURES @@ -97,7 +97,7 @@ /datum/preference/choiced/facial_hair_gradient/apply_to_human(mob/living/carbon/human/target, value) LAZYSETLEN(target.grad_style, GRADIENTS_LEN) target.grad_style[GRADIENT_FACIAL_HAIR_KEY] = value - target.update_hair(is_creating = TRUE) + target.update_body_parts() /datum/preference/choiced/facial_hair_gradient/create_default_value() return "None" @@ -111,7 +111,7 @@ /datum/preference/color/facial_hair_gradient/apply_to_human(mob/living/carbon/human/target, value) LAZYSETLEN(target.grad_color, GRADIENTS_LEN) target.grad_color[GRADIENT_FACIAL_HAIR_KEY] = value - target.update_hair(is_creating = TRUE) + target.update_body_parts() /datum/preference/color/facial_hair_gradient/is_accessible(datum/preferences/preferences) if (!..(preferences)) @@ -160,7 +160,7 @@ /datum/preference/choiced/hair_gradient/apply_to_human(mob/living/carbon/human/target, value) LAZYSETLEN(target.grad_style, GRADIENTS_LEN) target.grad_style[GRADIENT_HAIR_KEY] = value - target.update_hair(is_creating = TRUE) + target.update_body_parts() /datum/preference/choiced/hair_gradient/create_default_value() return "None" @@ -174,7 +174,7 @@ /datum/preference/color/hair_gradient/apply_to_human(mob/living/carbon/human/target, value) LAZYSETLEN(target.grad_color, GRADIENTS_LEN) target.grad_color[GRADIENT_HAIR_KEY] = value - target.update_hair(is_creating = TRUE) + target.update_body_parts() /datum/preference/color/hair_gradient/is_accessible(datum/preferences/preferences) if (!..(preferences)) diff --git a/code/modules/clothing/outfits/event.dm b/code/modules/clothing/outfits/event.dm index e17d725d7f5..c24abb233a0 100644 --- a/code/modules/clothing/outfits/event.dm +++ b/code/modules/clothing/outfits/event.dm @@ -25,4 +25,4 @@ H.facial_hairstyle = "Beard (Full)" H.hair_color = "#FFFFFF" H.facial_hair_color = "#FFFFFF" - H.update_hair(is_creating = TRUE) + H.update_body_parts() diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 23df4b90eae..3a33bf2aee4 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -46,7 +46,7 @@ if(brainmob && !(C.stat == DEAD || (HAS_TRAIT(C, TRAIT_DEATHCOMA)))) to_chat(brainmob, span_danger("You can't feel your body! You're still just a brain!")) forceMove(C) - C.update_hair() + C.update_body_parts() return if(brainmob) @@ -71,7 +71,7 @@ BT.on_gain() //Update the body's icon so it doesnt appear debrained anymore - C.update_hair() + C.update_body_parts() /obj/item/organ/internal/brain/Remove(mob/living/carbon/C, special = 0, no_id_transfer = FALSE) // Delete skillchips first as parent proc sets owner to null, and skillchips need to know the brain's owner. @@ -91,7 +91,7 @@ if((!gc_destroyed || (owner && !owner.gc_destroyed)) && !no_id_transfer) transfer_identity(C) - C.update_hair() + C.update_body_parts() /obj/item/organ/internal/brain/proc/transfer_identity(mob/living/L) name = "[L.name]'s brain" diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 9f878fa6fe8..1a78e233b4b 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -664,7 +664,7 @@ emote("scream") facial_hairstyle = "Shaved" hairstyle = "Bald" - update_hair(is_creating = TRUE) + update_body_parts() ADD_TRAIT(src, TRAIT_DISFIGURED, TRAIT_GENERIC) update_damage_overlays() diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index 0c859e4a500..fb1ceedda4f 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -16,7 +16,7 @@ Most of the time we only wish to update one overlay: In these cases, instead of updating every overlay using the old behaviour (regenerate_icons), we instead call the appropriate update_X proc. e.g. - update_l_hand() - e.g.2 - update_hair() + e.g.2 - update_body_parts() Note: Recent changes by aranclanos+carn: update_icons() no longer needs to be called. @@ -41,23 +41,10 @@ There are several things that need to be remembered: > There are also these special cases: update_damage_overlays() //handles damage overlays for brute/burn damage - update_body() //Handles updating your mob's body layer and mutant bodyparts - as well as sprite-accessories that didn't really fit elsewhere (underwear, undershirts, socks, lips, eyes) - //NOTE: update_mutantrace() is now merged into this! - update_hair() //Handles updating your hair overlay (used to be update_face, but mouth and - eyes were merged into update_body()) - - + update_body_parts() //Handles bodyparts, and everything bodyparts render. (Organs, hair, facial features) + update_body() //Calls update_body_parts(), as well as updates mutant bodyparts, the old, not-actually-bodypart system. */ -//HAIR OVERLAY -/mob/living/carbon/human/update_hair(is_creating) - var/obj/item/bodypart/head/my_head = get_bodypart(BODY_ZONE_HEAD) - if(!my_head) - return - my_head.update_limb(FALSE, is_creating) - update_body_parts() - /* --------------------------------------- */ //For legacy support. /mob/living/carbon/human/regenerate_icons() @@ -454,7 +441,7 @@ There are several things that need to be remembered: suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1] suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2] overlays_standing[SUIT_LAYER] = suit_overlay - update_hair() + update_body_parts() update_mutant_bodyparts() apply_overlay(SUIT_LAYER) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index efc546d6823..16e6e375c50 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -289,7 +289,7 @@ /mob/living/carbon/human/wear_mask_update(obj/item/I, toggle_off = 1) if((I.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || (initial(I.flags_inv) & (HIDEHAIR|HIDEFACIALHAIR))) - update_hair() + update_body_parts() if(toggle_off && internal && !getorganslot(ORGAN_SLOT_BREATHING_TUBE)) internal = null if(I.flags_inv & HIDEEYES) @@ -299,7 +299,7 @@ /mob/living/carbon/human/head_update(obj/item/I, forced) if((I.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || forced) - update_hair() + update_body_parts() if(I.flags_inv & HIDEEYES || forced) update_worn_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 702adbc29f1..caa22dd026d 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -786,6 +786,10 @@ GLOBAL_LIST_EMPTY(features_by_species) if(BODY_FRONT_LAYER) return "FRONT" +///Proc that will randomise the hair, or primary appearance element (i.e. for moths wings) of a species' associated mob +/datum/species/proc/randomize_main_appearance_element(mob/living/carbon/human/human_mob) + human_mob.hairstyle = random_hairstyle(human_mob.gender) + human_mob.update_body_parts() ///Proc that will randomise the underwear (i.e. top, pants and socks) of a species' associated mob /datum/species/proc/randomize_active_underwear(mob/living/carbon/human/human_mob) @@ -1047,7 +1051,7 @@ GLOBAL_LIST_EMPTY(features_by_species) return target.facial_hairstyle = "Shaved" target.hairstyle = "Bald" - target.update_hair(is_creating = TRUE) + target.update_body_parts() ////////////////// // ATTACK PROCS // diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index 37ac482d056..ed6b27d63f1 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -77,8 +77,6 @@ var/obj/item/organ/internal/heart/ethereal/ethereal_heart = C.getorganslot(ORGAN_SLOT_HEART) ethereal_heart.ethereal_color = default_color - //The following code is literally only to make admin-spawned ethereals not be black. - C.dna.features["mcolor"] = C.dna.features["ethcolor"] //Ethcolor and Mut color are both dogshit and i hate them for(var/obj/item/bodypart/limb as anything in C.bodyparts) if(limb.limb_id == SPECIES_ETHEREAL) limb.update_limb(is_creating = TRUE) @@ -121,7 +119,9 @@ else ethereal_light.set_light_on(FALSE) fixed_mut_color = rgb(128,128,128) - ethereal.update_body(is_creating = TRUE) + ethereal.hair_color = current_color + ethereal.facial_hair_color = current_color + ethereal.update_body() /datum/species/ethereal/proc/on_emp_act(mob/living/carbon/human/H, severity) SIGNAL_HANDLER diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index f32f06de613..831f2c23ef6 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -128,7 +128,7 @@ /datum/species/human/felinid/prepare_human_for_preview(mob/living/carbon/human/human_for_preview) human_for_preview.hairstyle = "Hime Cut" human_for_preview.hair_color = "#ffcccc" // pink - human_for_preview.update_hair(is_creating = TRUE) + human_for_preview.update_body_parts() var/obj/item/organ/internal/ears/cat/cat_ears = human_for_preview.getorgan(/obj/item/organ/internal/ears/cat) if (cat_ears) diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 156b727c362..ecc6ef84630 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -19,7 +19,7 @@ /datum/species/human/prepare_human_for_preview(mob/living/carbon/human/human) human.hairstyle = "Business Hair" human.hair_color = "#bb9966" // brown - human.update_hair(is_creating = TRUE) + human.update_body_parts() /datum/species/human/randomize_features(mob/living/carbon/human/human_mob) human_mob.skin_tone = random_skin_tone() diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm index c483c1a01ce..8f1077fcb63 100644 --- a/code/modules/mob/living/carbon/human/status_procs.dm +++ b/code/modules/mob/living/carbon/human/status_procs.dm @@ -29,7 +29,7 @@ /mob/living/carbon/human/cure_husk(list/sources) . = ..() if(.) - update_hair() + update_body_parts() /mob/living/carbon/human/become_husk(source) if(istype(dna.species, /datum/species/skeleton)) //skeletons shouldn't be husks. @@ -37,4 +37,4 @@ return . = ..() if(.) - update_hair() + update_body_parts() diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm index f439ce85c9d..2fc7cdf595e 100644 --- a/code/modules/mod/mod_activation.dm +++ b/code/modules/mod/mod_activation.dm @@ -211,7 +211,7 @@ wearer.update_worn_head() wearer.update_worn_mask() wearer.update_worn_glasses() - wearer.update_hair() + wearer.update_body_parts() /// Finishes the suit's activation, starts processing /obj/item/mod/control/proc/finish_activation(on) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index f4b73379d73..c60fa985d38 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2015,10 +2015,10 @@ All effects don't start immediately, but rather get worse over time; the rate is continue is_between_the_sheets = TRUE break - + if(!drinker.IsSleeping() || !is_between_the_sheets) return - + if(drinker.getBruteLoss() && drinker.getFireLoss()) //If you are damaged by both types, slightly increased healing but it only heals one. The more the merrier wink wink. if(prob(50)) drinker.adjustBruteLoss(-0.25 * REM * delta_time) @@ -2397,12 +2397,12 @@ All effects don't start immediately, but rather get worse over time; the rate is if(metabolizer.age > 70) metabolizer.facial_hair_color = "#cccccc" metabolizer.hair_color = "#cccccc" - metabolizer.update_hair(is_creating = TRUE) + metabolizer.update_body_parts() if(metabolizer.age > 100) metabolizer.become_nearsighted(type) if(metabolizer.gender == MALE) metabolizer.facial_hairstyle = "Beard (Very Long)" - metabolizer.update_hair(is_creating = TRUE) + metabolizer.update_body_parts() if(metabolizer.age > 969) //Best not let people get older than this or i might incur G-ds wrath metabolizer.visible_message(span_notice("[metabolizer] becomes older than any man should be.. and crumbles into dust!")) diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 27bd1c0a609..22fd95820bc 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -121,7 +121,7 @@ var/mob/living/carbon/human/H = M H.facial_hairstyle = "Shaved" H.hairstyle = "Bald" - H.update_hair(is_creating = TRUE) // makes you loose hair as well + H.update_body_parts() // makes you loose hair as well M.set_species(/datum/species/human/krokodil_addict) M.adjustBruteLoss(50 * REM, 0) // holy shit your skin just FELL THE FUCK OFF ..() @@ -708,7 +708,6 @@ druggy_dna.species.species_traits -= NOBLOODOVERLAY invisible_man.update_body() - invisible_man.update_hair() invisible_man.sound_environment_override = NONE if(!invisible_man.hud_used) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index b8793eb01d6..96a070c81e6 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1082,7 +1082,7 @@ var/mob/living/carbon/human/exposed_human = exposed_mob exposed_human.hair_color = "#CC22FF" exposed_human.facial_hair_color = "#CC22FF" - exposed_human.update_hair() + exposed_human.update_body_parts() /datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/carbon/M, delta_time, times_fired) M.adjustBruteLoss(-1.5 * REM * delta_time, 0) @@ -1453,7 +1453,7 @@ return exposed_human.hair_color = "#9922ff" exposed_human.facial_hair_color = "#9922ff" - exposed_human.update_hair() + exposed_human.update_body_parts() /datum/reagent/medicine/polypyr/overdose_process(mob/living/M, delta_time, times_fired) M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5 * REM * delta_time) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index f4e89ccceb9..e964a1d57fc 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2185,7 +2185,7 @@ var/mob/living/carbon/human/exposed_human = exposed_mob exposed_human.hair_color = pick(potential_colors) exposed_human.facial_hair_color = pick(potential_colors) - exposed_human.update_hair() + exposed_human.update_body_parts() /datum/reagent/barbers_aid name = "Barber's Aid" @@ -2207,7 +2207,7 @@ to_chat(exposed_human, span_notice("Hair starts sprouting from your scalp.")) exposed_human.hairstyle = picked_hair exposed_human.facial_hairstyle = picked_beard - exposed_human.update_hair(is_creating = TRUE) + exposed_human.update_body_parts() /datum/reagent/concentrated_barbers_aid name = "Concentrated Barber's Aid" @@ -2227,7 +2227,7 @@ to_chat(exposed_human, span_notice("Your hair starts growing at an incredible speed!")) exposed_human.hairstyle = "Very Long Hair" exposed_human.facial_hairstyle = "Beard (Very Long)" - exposed_human.update_hair(is_creating = TRUE) + exposed_human.update_body_parts() /datum/reagent/concentrated_barbers_aid/on_mob_life(mob/living/carbon/M, delta_time, times_fired) . = ..() @@ -2249,7 +2249,7 @@ else message = span_notice("Your scalp mutates, a full head of hair sprouting from it.") to_chat(M, message) - human_mob.update_hair(is_creating = TRUE) + human_mob.update_body_parts() /datum/reagent/baldium name = "Baldium" @@ -2269,7 +2269,7 @@ to_chat(exposed_human, span_danger("Your hair is falling out in clumps!")) exposed_human.hairstyle = "Bald" exposed_human.facial_hairstyle = "Shaved" - exposed_human.update_hair(is_creating = TRUE) + exposed_human.update_body_parts() /datum/reagent/saltpetre name = "Saltpetre" diff --git a/code/modules/reagents/withdrawal/generic_addictions.dm b/code/modules/reagents/withdrawal/generic_addictions.dm index b34216ae10d..7cb4564ae94 100644 --- a/code/modules/reagents/withdrawal/generic_addictions.dm +++ b/code/modules/reagents/withdrawal/generic_addictions.dm @@ -111,7 +111,7 @@ if(affected_human.gender == MALE) to_chat(affected_human, span_warning("Your chin itches.")) affected_human.facial_hairstyle = "Beard (Full)" - affected_human.update_hair(is_creating = TRUE) + affected_human.update_body_parts() //Only like gross food affected_human.dna?.species.liked_food = GROSS affected_human.dna?.species.disliked_food = NONE diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index fa8d3173d3c..6797b477b67 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -30,8 +30,6 @@ var/limb_id = SPECIES_HUMAN //Defines what sprite the limb should use if it is also sexually dimorphic. VAR_PROTECTED/limb_gender = "m" - ///Does this limb have a greyscale version? - var/uses_mutcolor = TRUE ///Is there a sprite difference between male and female? var/is_dimorphic = FALSE ///The actual color a limb is drawn as, set by /proc/update_limb() @@ -660,7 +658,7 @@ else skin_tone = "" - if(((MUTCOLORS in owner_species.species_traits) || (DYNCOLORS in owner_species.species_traits)) && uses_mutcolor) //Ethereal code. Motherfuckers. + if(((MUTCOLORS in owner_species.species_traits) || (DYNCOLORS in owner_species.species_traits))) //Ethereal code. Motherfuckers. if(owner_species.fixed_mut_color) species_color = owner_species.fixed_mut_color else diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index b9275774a79..2975325fd62 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -140,7 +140,7 @@ synchronize_bodytypes(phantom_owner) phantom_owner.update_health_hud() //update the healthdoll phantom_owner.update_body() - phantom_owner.update_hair() + phantom_owner.update_body_parts() if(!drop_loc) // drop_loc = null happens when a "dummy human" used for rendering icons on prefs screen gets its limbs replaced. qdel(src) @@ -418,6 +418,21 @@ pill_action.Grant(new_head_owner) break + ///Transfer existing hair properties to the new human. + if(!special && ishuman(new_head_owner)) + var/mob/living/carbon/human/sexy_chad = new_head_owner + sexy_chad.hairstyle = hair_style + sexy_chad.hair_color = hair_color + sexy_chad.facial_hair_color = facial_hair_color + sexy_chad.facial_hairstyle = facial_hairstyle + if(hair_gradient_style || facial_hair_gradient_style) + LAZYSETLEN(sexy_chad.grad_style, GRADIENTS_LEN) + LAZYSETLEN(sexy_chad.grad_color, GRADIENTS_LEN) + sexy_chad.grad_style[GRADIENT_HAIR_KEY] = hair_gradient_style + sexy_chad.grad_color[GRADIENT_HAIR_KEY] = hair_gradient_color + sexy_chad.grad_style[GRADIENT_FACIAL_HAIR_KEY] = facial_hair_gradient_style + sexy_chad.grad_color[GRADIENT_FACIAL_HAIR_KEY] = facial_hair_gradient_color + new_head_owner.updatehealth() new_head_owner.update_body() new_head_owner.update_damage_overlays() diff --git a/code/modules/surgery/bodyparts/hair.dm b/code/modules/surgery/bodyparts/hair.dm new file mode 100644 index 00000000000..71f53549387 --- /dev/null +++ b/code/modules/surgery/bodyparts/hair.dm @@ -0,0 +1,111 @@ +#define SET_OVERLAY_VALUE(X,Y,Z) if(X) X.Y = Z + +///Part of `update_limb()`, this proc does what the name implies. +/obj/item/bodypart/head/proc/update_hair_and_lips() + var/mob/living/carbon/human/human_head_owner = owner + var/datum/species/owner_species = human_head_owner.dna.species + + if(human_head_owner.lip_style && (LIPS in owner_species.species_traits)) + lip_style = human_head_owner.lip_style + lip_color = human_head_owner.lip_color + else + lip_style = null + lip_color = "white" + + ///FACIAL HAIR CHECKS START + //we check if our hat or helmet hides our facial hair. + facial_hair_hidden = FALSE + if(human_head_owner.head) + var/obj/item/hat = human_head_owner.head + if(hat.flags_inv & HIDEFACIALHAIR) + facial_hair_hidden = TRUE + + if(human_head_owner.wear_mask) + var/obj/item/mask = human_head_owner.wear_mask + if(mask.flags_inv & HIDEFACIALHAIR) + facial_hair_hidden = TRUE + ///FACIAL HAIR CHECKS END + ///HAIR CHECKS START + hair_hidden = FALSE + if(human_head_owner.head) + var/obj/item/hat = human_head_owner.head + if(hat.flags_inv & HIDEHAIR) + hair_hidden = TRUE + + if(human_head_owner.w_uniform) + var/obj/item/item_uniform = human_head_owner.w_uniform + if(item_uniform.flags_inv & HIDEHAIR) + hair_hidden = TRUE + + if(human_head_owner.wear_mask) + var/obj/item/mask = human_head_owner.wear_mask + if(mask.flags_inv & HIDEHAIR) + hair_hidden = TRUE + ///HAIR CHECKS END + + if(!hair_hidden && !owner.getorganslot(ORGAN_SLOT_BRAIN) && !(NOBLOOD in species_flags_list)) + show_debrained = TRUE + else + show_debrained = FALSE + + var/datum/sprite_accessory/sprite_accessory + + facial_overlay = null + facial_gradient_overlay = null + hair_overlay = null + hair_gradient_overlay = null + + hair_alpha = owner_species.hair_alpha + hair_color = human_head_owner.hair_color + facial_hair_color = human_head_owner.facial_hair_color + fixed_hair_color = owner_species.fixed_mut_color //Can be null + hair_style = human_head_owner.hairstyle + facial_hairstyle = human_head_owner.facial_hairstyle + + + if(facial_hairstyle && !facial_hair_hidden && (FACEHAIR in species_flags_list)) + sprite_accessory = GLOB.facial_hairstyles_list[facial_hairstyle] + if(sprite_accessory) + //Create the overlay + facial_overlay = mutable_appearance(sprite_accessory.icon, sprite_accessory.icon_state, -HAIR_LAYER) + facial_overlay.overlays += emissive_blocker(facial_overlay.icon, facial_overlay.icon_state, alpha = hair_alpha) + //Gradients + facial_hair_gradient_style = LAZYACCESS(human_head_owner.grad_style, GRADIENT_FACIAL_HAIR_KEY) + if(facial_hair_gradient_style) + facial_hair_gradient_color = LAZYACCESS(human_head_owner.grad_color, GRADIENT_FACIAL_HAIR_KEY) + facial_gradient_overlay = make_gradient_overlay(sprite_accessory.icon, sprite_accessory.icon_state, HAIR_LAYER, GLOB.facial_hair_gradients_list[facial_hair_gradient_style], facial_hair_gradient_color) + + facial_overlay.overlays += emissive_blocker(sprite_accessory.icon, sprite_accessory.icon_state, alpha = hair_alpha) + + if(!hair_hidden && !show_debrained && (HAIR in species_flags_list)) + sprite_accessory = GLOB.hairstyles_list[hair_style] + if(sprite_accessory) + hair_overlay = mutable_appearance(sprite_accessory.icon, sprite_accessory.icon_state, -HAIR_LAYER) + hair_overlay.overlays += emissive_blocker(hair_overlay.icon, hair_overlay.icon_state, alpha = hair_alpha) + hair_gradient_style = LAZYACCESS(human_head_owner.grad_style, GRADIENT_HAIR_KEY) + if(hair_gradient_style) + hair_gradient_color = LAZYACCESS(human_head_owner.grad_color, GRADIENT_HAIR_KEY) + hair_gradient_overlay = make_gradient_overlay(sprite_accessory.icon, sprite_accessory.icon_state, HAIR_LAYER, GLOB.hair_gradients_list[hair_gradient_style], hair_gradient_color) + + //CREATION-ONLY END + //HAIR COLOR START + if(!override_hair_color) + if(hair_color_source) + if(hair_color_source == "fixedmutcolor") + SET_OVERLAY_VALUE(facial_overlay, color, fixed_hair_color) + SET_OVERLAY_VALUE(hair_overlay, color, fixed_hair_color) + else if(hair_color_source == "mutcolor") + SET_OVERLAY_VALUE(facial_overlay, color, facial_hair_color) + SET_OVERLAY_VALUE(hair_overlay, color, hair_color) + else + SET_OVERLAY_VALUE(facial_overlay, color, hair_color_source) + SET_OVERLAY_VALUE(hair_overlay, color, hair_color_source) + else + SET_OVERLAY_VALUE(facial_overlay, color, facial_hair_color) + SET_OVERLAY_VALUE(hair_overlay, color, hair_color) + else + SET_OVERLAY_VALUE(facial_overlay, color, override_hair_color) + SET_OVERLAY_VALUE(hair_overlay, color, override_hair_color) + //HAIR COLOR END + +#undef SET_OVERLAY_VALUE diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 6a739f7ff28..7b3644b321f 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -166,7 +166,6 @@ return ..() -#define SET_OVERLAY_VALUE(X,Y,Z) if(X) X.Y = Z /obj/item/bodypart/head/update_limb(dropping_limb, is_creating) . = ..() @@ -178,117 +177,10 @@ lip_style = null stored_lipstick_trait = null - else if(!animal_origin && ishuman(owner)) - - var/mob/living/carbon/human/human_head_owner = owner - var/datum/species/owner_species = human_head_owner.dna.species - - if(human_head_owner.lip_style && (LIPS in owner_species.species_traits)) - lip_style = human_head_owner.lip_style - lip_color = human_head_owner.lip_color - else - lip_style = null - lip_color = "white" - - ///FACIAL HAIR CHECKS START - //we check if our hat or helmet hides our facial hair. - facial_hair_hidden = FALSE - if(human_head_owner.head) - var/obj/item/hat = human_head_owner.head - if(hat.flags_inv & HIDEFACIALHAIR) - facial_hair_hidden = TRUE - - if(human_head_owner.wear_mask) - var/obj/item/mask = human_head_owner.wear_mask - if(mask.flags_inv & HIDEFACIALHAIR) - facial_hair_hidden = TRUE - ///FACIAL HAIR CHECKS END - ///HAIR CHECKS START - hair_hidden = FALSE - if(human_head_owner.head) - var/obj/item/hat = human_head_owner.head - if(hat.flags_inv & HIDEHAIR) - hair_hidden = TRUE - - if(human_head_owner.w_uniform) - var/obj/item/item_uniform = human_head_owner.w_uniform - if(item_uniform.flags_inv & HIDEHAIR) - hair_hidden = TRUE - - if(human_head_owner.wear_mask) - var/obj/item/mask = human_head_owner.wear_mask - if(mask.flags_inv & HIDEHAIR) - hair_hidden = TRUE - ///HAIR CHECKS END - - if(!hair_hidden && !owner.getorgan(/obj/item/organ/internal/brain) && !(NOBLOOD in species_flags_list)) - show_debrained = TRUE - else - show_debrained = FALSE - - //CREATION-ONLY START - if(is_creating) - var/datum/sprite_accessory/sprite_accessory - - facial_overlay = null - facial_gradient_overlay = null - hair_overlay = null - hair_gradient_overlay = null - - hair_alpha = owner_species.hair_alpha - hair_color = human_head_owner.hair_color - facial_hair_color = human_head_owner.facial_hair_color - fixed_hair_color = owner_species.fixed_mut_color //Can be null - hair_style = human_head_owner.hairstyle - facial_hairstyle = human_head_owner.facial_hairstyle + if(!animal_origin && ishuman(owner)) + update_hair_and_lips() - if(facial_hairstyle && !facial_hair_hidden && (FACEHAIR in species_flags_list)) - sprite_accessory = GLOB.facial_hairstyles_list[facial_hairstyle] - if(sprite_accessory) - //Create the overlay - facial_overlay = mutable_appearance(sprite_accessory.icon, sprite_accessory.icon_state, -HAIR_LAYER) - facial_overlay.overlays += emissive_blocker(facial_overlay.icon, facial_overlay.icon_state, alpha = hair_alpha) - //Gradients - facial_hair_gradient_style = LAZYACCESS(human_head_owner.grad_style, GRADIENT_FACIAL_HAIR_KEY) - if(facial_hair_gradient_style) - facial_hair_gradient_color = LAZYACCESS(human_head_owner.grad_color, GRADIENT_FACIAL_HAIR_KEY) - facial_gradient_overlay = make_gradient_overlay(sprite_accessory.icon, sprite_accessory.icon_state, HAIR_LAYER, GLOB.facial_hair_gradients_list[facial_hair_gradient_style], facial_hair_gradient_color) - - facial_overlay.overlays += emissive_blocker(sprite_accessory.icon, sprite_accessory.icon_state, alpha = hair_alpha) - - if(!hair_hidden && !show_debrained && (HAIR in species_flags_list)) - sprite_accessory = GLOB.hairstyles_list[hair_style] - if(sprite_accessory) - hair_overlay = mutable_appearance(sprite_accessory.icon, sprite_accessory.icon_state, -HAIR_LAYER) - hair_overlay.overlays += emissive_blocker(hair_overlay.icon, hair_overlay.icon_state, alpha = hair_alpha) - hair_gradient_style = LAZYACCESS(human_head_owner.grad_style, GRADIENT_HAIR_KEY) - if(hair_gradient_style) - hair_gradient_color = LAZYACCESS(human_head_owner.grad_color, GRADIENT_HAIR_KEY) - hair_gradient_overlay = make_gradient_overlay(sprite_accessory.icon, sprite_accessory.icon_state, HAIR_LAYER, GLOB.hair_gradients_list[hair_gradient_style], hair_gradient_color) - - //CREATION-ONLY END - //HAIR COLOR START - if(!override_hair_color) - if(hair_color_source) - if(hair_color_source == "fixedmutcolor") - SET_OVERLAY_VALUE(facial_overlay, color, fixed_hair_color) - SET_OVERLAY_VALUE(hair_overlay, color, fixed_hair_color) - else if(hair_color_source == "mutcolor") - SET_OVERLAY_VALUE(facial_overlay, color, facial_hair_color) - SET_OVERLAY_VALUE(hair_overlay, color, hair_color) - else - SET_OVERLAY_VALUE(facial_overlay, color, hair_color_source) - SET_OVERLAY_VALUE(hair_overlay, color, hair_color_source) - else - SET_OVERLAY_VALUE(facial_overlay, color, facial_hair_color) - SET_OVERLAY_VALUE(hair_overlay, color, hair_color) - else - SET_OVERLAY_VALUE(facial_overlay, color, override_hair_color) - SET_OVERLAY_VALUE(hair_overlay, color, override_hair_color) - //HAIR COLOR END - -#undef SET_OVERLAY_VALUE ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// /obj/item/bodypart/head/get_limb_icon(dropped, draw_external_organs) @@ -361,10 +253,11 @@ . += hair_overlay if(hair_gradient_overlay) . += hair_gradient_overlay -///Set the haircolor of a human. Override instead sets the override value, it will not be changed away from the override value until override is set to null. -/mob/proc/set_haircolor(hex_string, override) + +/mob/living/proc/set_haircolor(hex_string, override) return +///Set the haircolor of a human. Override instead sets the override value, it will not be changed away from the override value until override is set to null. /mob/living/carbon/human/set_haircolor(hex_string, override) var/obj/item/bodypart/head/my_head = get_bodypart(BODY_ZONE_HEAD) if(!my_head) @@ -373,8 +266,8 @@ if(override) my_head.override_hair_color = hex_string else - my_head.hair_color = hex_string - update_hair(is_creating = TRUE) + hair_color = hex_string + update_body_parts() /obj/item/bodypart/head/proc/make_gradient_overlay(file, icon, layer, datum/sprite_accessory/gradient, grad_color) RETURN_TYPE(/mutable_appearance) diff --git a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm index a581790b31f..1ec29994a42 100644 --- a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm @@ -2,30 +2,67 @@ icon_greyscale = 'icons/mob/species/ethereal/bodyparts.dmi' limb_id = SPECIES_ETHEREAL is_dimorphic = FALSE - uses_mutcolor = TRUE + +/obj/item/bodypart/head/ethereal/update_limb(dropping_limb, is_creating) + . = ..() + if(isethereal(owner)) + var/mob/living/carbon/human/potato_oc = owner + var/datum/species/ethereal/eth_holder = potato_oc.dna.species + species_color = eth_holder.current_color /obj/item/bodypart/chest/ethereal icon_greyscale = 'icons/mob/species/ethereal/bodyparts.dmi' limb_id = SPECIES_ETHEREAL is_dimorphic = FALSE - uses_mutcolor = TRUE + +/obj/item/bodypart/chest/ethereal/update_limb(dropping_limb, is_creating) + . = ..() + if(isethereal(owner)) + var/mob/living/carbon/human/potato_oc = owner + var/datum/species/ethereal/eth_holder = potato_oc.dna.species + species_color = eth_holder.current_color /obj/item/bodypart/l_arm/ethereal icon_greyscale = 'icons/mob/species/ethereal/bodyparts.dmi' limb_id = SPECIES_ETHEREAL - uses_mutcolor = TRUE + +/obj/item/bodypart/l_arm/ethereal/update_limb(dropping_limb, is_creating) + . = ..() + if(isethereal(owner)) + var/mob/living/carbon/human/potato_oc = owner + var/datum/species/ethereal/eth_holder = potato_oc.dna.species + species_color = eth_holder.current_color /obj/item/bodypart/r_arm/ethereal icon_greyscale = 'icons/mob/species/ethereal/bodyparts.dmi' limb_id = SPECIES_ETHEREAL - uses_mutcolor = TRUE + +/obj/item/bodypart/r_arm/ethereal/update_limb(dropping_limb, is_creating) + . = ..() + if(isethereal(owner)) + var/mob/living/carbon/human/potato_oc = owner + var/datum/species/ethereal/eth_holder = potato_oc.dna.species + species_color = eth_holder.current_color + /obj/item/bodypart/l_leg/ethereal icon_greyscale = 'icons/mob/species/ethereal/bodyparts.dmi' limb_id = SPECIES_ETHEREAL - uses_mutcolor = TRUE + +/obj/item/bodypart/l_leg/ethereal/update_limb(dropping_limb, is_creating) + . = ..() + if(isethereal(owner)) + var/mob/living/carbon/human/potato_oc = owner + var/datum/species/ethereal/eth_holder = potato_oc.dna.species + species_color = eth_holder.current_color /obj/item/bodypart/r_leg/ethereal icon_greyscale = 'icons/mob/species/ethereal/bodyparts.dmi' limb_id = SPECIES_ETHEREAL - uses_mutcolor = TRUE + +/obj/item/bodypart/r_leg/ethereal/update_limb(dropping_limb, is_creating) + . = ..() + if(isethereal(owner)) + var/mob/living/carbon/human/potato_oc = owner + var/datum/species/ethereal/eth_holder = potato_oc.dna.species + species_color = eth_holder.current_color diff --git a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm index 6cc2cf24563..06417f84122 100644 --- a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm @@ -1,38 +1,31 @@ /obj/item/bodypart/head/lizard icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' limb_id = SPECIES_LIZARD - uses_mutcolor = TRUE is_dimorphic = FALSE /obj/item/bodypart/chest/lizard icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_LIZARD is_dimorphic = TRUE /obj/item/bodypart/l_arm/lizard icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_LIZARD /obj/item/bodypart/r_arm/lizard icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_LIZARD /obj/item/bodypart/l_leg/lizard icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_LIZARD /obj/item/bodypart/r_leg/lizard icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_LIZARD /obj/item/bodypart/l_leg/digitigrade icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' - uses_mutcolor = TRUE limb_id = BODYPART_TYPE_DIGITIGRADE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE @@ -59,7 +52,6 @@ /obj/item/bodypart/r_leg/digitigrade icon_greyscale = 'icons/mob/species/lizard/bodyparts.dmi' - uses_mutcolor = TRUE limb_id = BODYPART_TYPE_DIGITIGRADE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE diff --git a/tgstation.dme b/tgstation.dme index d89ad010bd8..279178cc8a8 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4378,6 +4378,7 @@ #include "code\modules\surgery\advanced\bioware\vein_threading.dm" #include "code\modules\surgery\bodyparts\_bodyparts.dm" #include "code\modules\surgery\bodyparts\dismemberment.dm" +#include "code\modules\surgery\bodyparts\hair.dm" #include "code\modules\surgery\bodyparts\head.dm" #include "code\modules\surgery\bodyparts\helpers.dm" #include "code\modules\surgery\bodyparts\parts.dm"