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 e26ab639747..a8a7f735f8d 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -662,8 +662,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 f2c92bf4345..dd4bf64ec92 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 f8dea081891..f08db2b7a2a 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 0f9de8038cc..8c4db4e7f06 100644 --- a/code/game/objects/items/dyekit.dm +++ b/code/game/objects/items/dyekit.dm @@ -53,14 +53,5 @@ 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) - - //SKYRAT EDIT ADDITION - uses-- - -/obj/item/dyespray/examine(mob/user) - . = ..() - . += "It has [uses] uses left." - - //SKYRAT EDIT END + human_target.update_body_parts() */ diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 2d788a8e262..ed16d9e62b7 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -50,7 +50,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) @@ -259,7 +259,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() amazed_human.update_mutant_bodyparts(force_update = TRUE) /// SKYRAT EDIT - Mirrors are no longer scared of colored ears if(BODY_ZONE_PRECISE_EYES) 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 31d3acf0368..07925de4ef6 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 b6e018d7279..f54601a84c2 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 868c2f55a3e..3a27ad79f2f 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -676,7 +676,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 d4bc398fa84..50d78a6960e 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() @@ -533,7 +520,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 0d5bc9e8a9c..c35cff7f399 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -385,7 +385,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) @@ -395,7 +395,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 c589c1ece8e..c8851ab653d 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -827,7 +827,7 @@ GLOBAL_LIST_EMPTY(features_by_species) human_mob.update_mutant_bodyparts() //SKYRAT EDIT ADDITION END human_mob.hairstyle = random_hairstyle(human_mob.gender) - human_mob.update_hair(is_creating = TRUE) + 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) @@ -1103,7 +1103,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 ea03504e0c2..d0e2f97e007 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) @@ -119,7 +117,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 26b7eb2e1f0..017663025c1 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -127,7 +127,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() /* SKYRAT EDIT - Making the species menu icons work better - ORIGINAL: var/obj/item/organ/internal/ears/cat/cat_ears = human_for_preview.getorgan(/obj/item/organ/internal/ears/cat) 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 ac73a68eff0..3dc1ca365b8 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/get_scream_sound(mob/living/carbon/human/human) if(human.gender == MALE) 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 5216a159f6c..5affcaba332 100644 --- a/code/modules/mod/mod_activation.dm +++ b/code/modules/mod/mod_activation.dm @@ -218,7 +218,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 6201c3e7f11..f7784e72adb 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2014,10 +2014,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) @@ -2396,12 +2396,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 05c8dfa831e..90c90c71ac1 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1093,7 +1093,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() // SKYRAT EDIT ADDITION BEGIN exposed_human.update_mutant_bodyparts(force_update=TRUE) // SKYRAT EDIT END @@ -1467,7 +1467,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 a5940178d5e..0dc82ae2731 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2188,7 +2188,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" @@ -2210,7 +2210,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" @@ -2230,7 +2230,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) . = ..() @@ -2252,7 +2252,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" @@ -2272,7 +2272,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 ea54a5be814..c2f57a0e6de 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 1290fba9c16..14666c330dc 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() @@ -708,7 +706,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 c4bfdc9e445..3043c3cfcad 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 63c3878285b..4d4a11d2324 100644 --- a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm @@ -1,39 +1,32 @@ /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 /* SKYRAT EDIT REMOVAL - MOVED TO MODULAR MUTANT_BODYPARTS.DM /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 @@ -60,7 +53,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/modular_skyrat/master_files/code/game/objects/items/dyekit.dm b/modular_skyrat/master_files/code/game/objects/items/dyekit.dm index 910e5573f7c..a52b5f00844 100644 --- a/modular_skyrat/master_files/code/game/objects/items/dyekit.dm +++ b/modular_skyrat/master_files/code/game/objects/items/dyekit.dm @@ -65,7 +65,7 @@ human_target.visible_message(span_notice("[user] finishes applying hair dye to [dying_themselves ? "their own" : "[human_target]'s"] hair, changing its color!"), span_notice("[dying_themselves ? "You finish" : "[user] finishes"] applying hair dye to [dying_themselves ? "your own" : "your"] hair, changing its color!"), ignored_mobs = user) if(!dying_themselves) balloon_alert(user, "dyeing complete!") - human_target.update_hair(is_creating = TRUE) + human_target.update_body_parts() uses-- diff --git a/modular_skyrat/master_files/code/game/objects/items/hhmirror.dm b/modular_skyrat/master_files/code/game/objects/items/hhmirror.dm index e0f8db57e5e..7456c59ae6d 100644 --- a/modular_skyrat/master_files/code/game/objects/items/hhmirror.dm +++ b/modular_skyrat/master_files/code/game/objects/items/hhmirror.dm @@ -81,7 +81,7 @@ to_chat(human_user, span_notice("Invalid color. Your color is not bright enough.")) human_user.update_body() - human_user.update_hair() + human_user.update_body_parts() human_user.update_body_parts() human_user.update_mutations_overlay() // no hulk lizard @@ -123,7 +123,7 @@ if(new_face_color) human_user.facial_hair_color = sanitize_hexcolor(new_face_color) human_user.dna.update_ui_block(DNA_FACIAL_HAIR_COLOR_BLOCK) - human_user.update_hair() + human_user.update_body_parts() if(BODY_ZONE_PRECISE_EYES) var/new_eye_color = input(human_user, "Choose your eye color", "Eye Color", human_user.eye_color_left) as color|null @@ -207,7 +207,7 @@ if(new_face_color) human_user.facial_hair_color = sanitize_hexcolor(new_face_color) human_user.dna.update_ui_block(DNA_FACIAL_HAIR_COLOR_BLOCK) - human_user.update_hair() + human_user.update_body_parts() if(BODY_ZONE_PRECISE_EYES) var/new_eye_color = input(human_user, "Choose your eye color", "Eye Color", human_user.eye_color_left) as color|null diff --git a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/_mutant_bodyparts.dm b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/_mutant_bodyparts.dm index 0e1a36fa48b..333cefcb83b 100644 --- a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/_mutant_bodyparts.dm +++ b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/_mutant_bodyparts.dm @@ -39,38 +39,31 @@ /obj/item/bodypart/head/mutant icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/mammal_parts_greyscale.dmi' limb_id = SPECIES_MAMMAL - uses_mutcolor = TRUE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC /obj/item/bodypart/chest/mutant icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/mammal_parts_greyscale.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_MAMMAL is_dimorphic = TRUE /obj/item/bodypart/l_arm/mutant icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/mammal_parts_greyscale.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_MAMMAL /obj/item/bodypart/r_arm/mutant icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/mammal_parts_greyscale.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_MAMMAL /obj/item/bodypart/l_leg/mutant icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/mammal_parts_greyscale.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_MAMMAL /obj/item/bodypart/r_leg/mutant icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/mammal_parts_greyscale.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_MAMMAL /obj/item/bodypart/l_leg/digitigrade icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/mammal_parts_greyscale.dmi' - uses_mutcolor = TRUE limb_id = "digitigrade" bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE @@ -80,7 +73,6 @@ /obj/item/bodypart/r_leg/digitigrade icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/mammal_parts_greyscale.dmi' - uses_mutcolor = TRUE limb_id = "digitigrade" bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_DIGITIGRADE diff --git a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/akula_bodyparts.dm b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/akula_bodyparts.dm index b07b87d8659..8da52d3d8bd 100644 --- a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/akula_bodyparts.dm +++ b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/akula_bodyparts.dm @@ -22,7 +22,6 @@ /obj/item/bodypart/r_leg/mutant/akula icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/akula_parts_greyscale.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_AKULA digitigrade_type = /obj/item/bodypart/r_leg/digitigrade/akula diff --git a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm index 7ae88e21b43..230ae40a3a8 100644 --- a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm +++ b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm @@ -3,35 +3,29 @@ icon_state = "moth_head_m" limb_id = SPECIES_MOTH is_dimorphic = TRUE - uses_mutcolor = TRUE /obj/item/bodypart/chest/moth icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/moth_parts_greyscale.dmi' icon_state = "moth_chest_m" limb_id = SPECIES_MOTH is_dimorphic = TRUE - uses_mutcolor = TRUE /obj/item/bodypart/l_arm/moth icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/moth_parts_greyscale.dmi' icon_state = "moth_l_arm" limb_id = SPECIES_MOTH - uses_mutcolor = TRUE /obj/item/bodypart/r_arm/moth icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/moth_parts_greyscale.dmi' icon_state = "moth_r_arm" limb_id = SPECIES_MOTH - uses_mutcolor = TRUE /obj/item/bodypart/l_leg/moth icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/moth_parts_greyscale.dmi' icon_state = "moth_l_leg" limb_id = SPECIES_MOTH - uses_mutcolor = TRUE /obj/item/bodypart/r_leg/moth icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/moth_parts_greyscale.dmi' icon_state = "moth_r_leg" limb_id = SPECIES_MOTH - uses_mutcolor = TRUE diff --git a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/robotic/_mutant_robotic_bodyparts.dm b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/robotic/_mutant_robotic_bodyparts.dm index 6b437314166..bde7ef6e436 100644 --- a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/robotic/_mutant_robotic_bodyparts.dm +++ b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/robotic/_mutant_robotic_bodyparts.dm @@ -4,14 +4,12 @@ limb_id = SPECIES_SYNTHMAMMAL is_dimorphic = TRUE should_draw_greyscale = TRUE - uses_mutcolor = TRUE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC brute_reduction = 0 burn_reduction = 0 /obj/item/bodypart/chest/robot/mutant icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/synthmammal_parts_greyscale.dmi' - uses_mutcolor = TRUE should_draw_greyscale = TRUE limb_id = SPECIES_SYNTHMAMMAL is_dimorphic = TRUE @@ -42,7 +40,6 @@ /obj/item/bodypart/r_leg/robot/mutant icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/synthmammal_parts_greyscale.dmi' - uses_mutcolor = TRUE should_draw_greyscale = TRUE limb_id = SPECIES_SYNTHMAMMAL digitigrade_type = /obj/item/bodypart/r_leg/robot/digitigrade @@ -53,7 +50,6 @@ icon = 'modular_skyrat/master_files/icons/mob/species/synthmammal_parts_greyscale.dmi' icon_static = 'modular_skyrat/master_files/icons/mob/species/synthmammal_parts_greyscale.dmi' icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/synthmammal_parts_greyscale.dmi' - uses_mutcolor = TRUE should_draw_greyscale = TRUE limb_id = "digitigrade" bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC | BODYTYPE_DIGITIGRADE @@ -69,7 +65,6 @@ icon = 'modular_skyrat/master_files/icons/mob/species/synthmammal_parts_greyscale.dmi' icon_static = 'modular_skyrat/master_files/icons/mob/species/synthmammal_parts_greyscale.dmi' icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/synthmammal_parts_greyscale.dmi' - uses_mutcolor = TRUE should_draw_greyscale = TRUE limb_id = "digitigrade" bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC | BODYTYPE_DIGITIGRADE diff --git a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/robotic/ipc_bodyparts.dm b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/robotic/ipc_bodyparts.dm index a161dde525b..02576a78c3f 100644 --- a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/robotic/ipc_bodyparts.dm +++ b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/robotic/ipc_bodyparts.dm @@ -1,32 +1,26 @@ // IPC bois! /obj/item/bodypart/head/robot/mutant/ipc icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/ipc_parts.dmi' - uses_mutcolor = FALSE is_dimorphic = FALSE limb_id = SPECIES_IPC /obj/item/bodypart/chest/robot/mutant/ipc icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/ipc_parts.dmi' - uses_mutcolor = FALSE is_dimorphic = FALSE limb_id = SPECIES_IPC /obj/item/bodypart/l_arm/robot/mutant/ipc icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/ipc_parts.dmi' - uses_mutcolor = FALSE limb_id = SPECIES_IPC /obj/item/bodypart/r_arm/robot/mutant/ipc icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/ipc_parts.dmi' - uses_mutcolor = FALSE limb_id = SPECIES_IPC /obj/item/bodypart/l_leg/robot/mutant/ipc icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/ipc_parts.dmi' - uses_mutcolor = FALSE limb_id = SPECIES_IPC /obj/item/bodypart/r_leg/robot/mutant/ipc icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/ipc_parts.dmi' - uses_mutcolor = FALSE limb_id = SPECIES_IPC diff --git a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/vox_bodyparts.dm b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/vox_bodyparts.dm index 374dfc60b85..befa1c0d647 100644 --- a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/vox_bodyparts.dm +++ b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/vox_bodyparts.dm @@ -27,7 +27,6 @@ /obj/item/bodypart/r_leg/mutant/vox icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/vox_parts_greyscale.dmi' - uses_mutcolor = TRUE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM limb_id = SPECIES_VOX digitigrade_type = /obj/item/bodypart/r_leg/digitigrade/vox diff --git a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/xenohybrid_bodyparts.dm b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/xenohybrid_bodyparts.dm index b81d16002cc..330d7b9ab28 100644 --- a/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/xenohybrid_bodyparts.dm +++ b/modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/xenohybrid_bodyparts.dm @@ -22,7 +22,6 @@ /obj/item/bodypart/r_leg/mutant/xenohybrid icon_greyscale = 'modular_skyrat/master_files/icons/mob/species/xeno_parts_greyscale.dmi' - uses_mutcolor = TRUE limb_id = SPECIES_XENO digitigrade_type = /obj/item/bodypart/r_leg/digitigrade/xenohybrid diff --git a/modular_skyrat/modules/better_vox/code/vox_bodyparts.dm b/modular_skyrat/modules/better_vox/code/vox_bodyparts.dm index d6d841fc535..d48a43c8b13 100644 --- a/modular_skyrat/modules/better_vox/code/vox_bodyparts.dm +++ b/modular_skyrat/modules/better_vox/code/vox_bodyparts.dm @@ -5,7 +5,6 @@ icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM | BODYTYPE_SNOUTED is_dimorphic = FALSE - uses_mutcolor = FALSE should_draw_greyscale = FALSE limb_id = SPECIES_VOX_PRIMALIS @@ -15,7 +14,6 @@ icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM is_dimorphic = FALSE - uses_mutcolor = FALSE should_draw_greyscale = FALSE limb_id = SPECIES_VOX_PRIMALIS @@ -24,7 +22,6 @@ icon_greyscale = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM - uses_mutcolor = FALSE should_draw_greyscale = FALSE limb_id = SPECIES_VOX_PRIMALIS @@ -33,7 +30,6 @@ icon_greyscale = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM - uses_mutcolor = FALSE should_draw_greyscale = FALSE limb_id = SPECIES_VOX_PRIMALIS @@ -42,7 +38,6 @@ icon_greyscale = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM - uses_mutcolor = FALSE should_draw_greyscale = FALSE limb_id = SPECIES_VOX_PRIMALIS @@ -50,9 +45,7 @@ icon_static = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' icon_greyscale = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' icon = 'modular_skyrat/modules/better_vox/icons/bodyparts/vox_bodyparts.dmi' - uses_mutcolor = TRUE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC | BODYTYPE_CUSTOM - uses_mutcolor = FALSE should_draw_greyscale = FALSE limb_id = SPECIES_VOX_PRIMALIS diff --git a/modular_skyrat/modules/black_mesa/code/mobs/headcrab.dm b/modular_skyrat/modules/black_mesa/code/mobs/headcrab.dm index 2a7dab4e2e5..7465622beb2 100644 --- a/modular_skyrat/modules/black_mesa/code/mobs/headcrab.dm +++ b/modular_skyrat/modules/black_mesa/code/mobs/headcrab.dm @@ -102,7 +102,7 @@ movement_type = GROUND icon_state = "" zombified_human.hairstyle = null - zombified_human.update_hair() + zombified_human.update_body_parts() zombified_human.forceMove(src) oldguy = zombified_human update_appearance() diff --git a/modular_skyrat/modules/customization/datums/dna.dm b/modular_skyrat/modules/customization/datums/dna.dm index db557d61903..ec45d09bf7d 100644 --- a/modular_skyrat/modules/customization/datums/dna.dm +++ b/modular_skyrat/modules/customization/datums/dna.dm @@ -288,9 +288,9 @@ GLOBAL_LIST_EMPTY(total_uf_len_by_block) dna.features["skin_color"] = sanitize_hexcolor(get_uni_identity_block(features, DNA_SKIN_COLOR_BLOCK)) 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() + 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_body_parts(update_limb_data = TRUE) if(mutations_overlay_update) update_mutations_overlay() diff --git a/modular_skyrat/modules/customization/modules/clothing/masks/breath.dm b/modular_skyrat/modules/customization/modules/clothing/masks/breath.dm index 9f0a582c9c8..c6061a7b4b1 100644 --- a/modular_skyrat/modules/customization/modules/clothing/masks/breath.dm +++ b/modular_skyrat/modules/customization/modules/clothing/masks/breath.dm @@ -50,7 +50,7 @@ icon_state = initial(icon_state) to_chat(user, "You pull the balaclava up to cover your whole head.") open = 0 - user.update_hair(0) + user.update_body_parts() user.update_inv_ears(0) user.update_worn_mask() //Updates mob icons diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/robotic/ipc.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/robotic/ipc.dm index ddf49a2e849..2c147b3adf8 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/robotic/ipc.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/robotic/ipc.dm @@ -87,8 +87,7 @@ var/datum/sprite_accessory/ipc_chassis/chassis_of_choice = GLOB.sprite_accessories["ipc_chassis"][chassis["name"]] for(var/obj/item/bodypart/iterating_bodypart as anything in target.bodyparts) //Override bodypart data as necessary - iterating_bodypart.uses_mutcolor = chassis_of_choice.color_src ? TRUE : FALSE - if(iterating_bodypart.uses_mutcolor) + if(chassis_of_choice.color_src) iterating_bodypart.should_draw_greyscale = TRUE iterating_bodypart.species_color = target.dna?.features["mcolor"] iterating_bodypart.limb_id = chassis_of_choice.icon_state diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm index 2e03b751876..45a815b4b97 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm @@ -198,14 +198,14 @@ switch(hair_reset) if("Hair") alterer.hair_color = sanitize_hexcolor(new_mutant_colour) - alterer.update_hair(is_creating = TRUE) + alterer.update_body_parts() if("Facial Hair") alterer.facial_hair_color = sanitize_hexcolor(new_mutant_colour) - alterer.update_hair(is_creating = TRUE) + alterer.update_body_parts() if("Both") alterer.hair_color = sanitize_hexcolor(new_mutant_colour) alterer.facial_hair_color = sanitize_hexcolor(new_mutant_colour) - alterer.update_hair(is_creating = TRUE) + alterer.update_body_parts() alterer.update_body(is_creating = TRUE) @@ -231,12 +231,12 @@ var/new_style = tgui_input_list(owner, "Select a hair style", "Hair Alterations", GLOB.hairstyles_list) if(new_style) alterer.hairstyle = new_style - alterer.update_hair(is_creating = TRUE) + alterer.update_body_parts() if("Facial Hair") var/new_style = tgui_input_list(alterer, "Select a facial hair style", "Hair Alterations", GLOB.facial_hairstyles_list) if(new_style) alterer.facial_hairstyle = new_style - alterer.update_hair(is_creating = TRUE) + alterer.update_body_parts() if("Hair Color") var/hair_area = tgui_alert(alterer, "Select which color you would like to change", "Hair Color Alterations", list("Hairstyle", "Facial Hair", "Both")) if(!hair_area) @@ -249,14 +249,14 @@ if("Hairstyle") alterer.hair_color = new_hair_color - alterer.update_hair(is_creating = TRUE) + alterer.update_body_parts() if("Facial Hair") alterer.facial_hair_color = new_hair_color - alterer.update_hair(is_creating = TRUE) + alterer.update_body_parts() if("Both") alterer.hair_color = new_hair_color alterer.facial_hair_color = new_hair_color - alterer.update_hair(is_creating = TRUE) + alterer.update_body_parts() /** * Alter DNA is an intermediary proc for the most part diff --git a/modular_skyrat/modules/moretraitoritems/code/syndiemirror.dm b/modular_skyrat/modules/moretraitoritems/code/syndiemirror.dm index 79aabc07454..f9d5f9089e0 100644 --- a/modular_skyrat/modules/moretraitoritems/code/syndiemirror.dm +++ b/modular_skyrat/modules/moretraitoritems/code/syndiemirror.dm @@ -45,7 +45,7 @@ if(do_after(user, haircut_duration, target_human)) target_human.hairstyle = hair_id - target_human.update_hair(is_creating = TRUE) + target_human.update_body_parts() user.visible_message(span_notice("[target_human]'s hair changes!"), span_notice("The nanites successfully alter [target_human]'s hair!")) else var/facial_hair_id = tgui_input_list(user, "Please select what facial hairstyle you'd like to sculpt!", "Select masterpiece", GLOB.facial_hairstyles_list) @@ -59,7 +59,7 @@ if(do_after(user, facial_haircut_duration, target_human)) target_human.facial_hairstyle = facial_hair_id - target_human.update_hair(is_creating = TRUE) + target_human.update_body_parts() user.visible_message(span_notice("[target_human]'s facial hair changes!"), span_notice("The nanites successfully alter [target_human]'s facial hair!")) /obj/item/storage/box/syndie_kit/chameleon/PopulateContents() diff --git a/modular_skyrat/modules/mutants/code/mutant_zombie_bodyparts.dm b/modular_skyrat/modules/mutants/code/mutant_zombie_bodyparts.dm index 3f0e908f453..88e25c0550b 100644 --- a/modular_skyrat/modules/mutants/code/mutant_zombie_bodyparts.dm +++ b/modular_skyrat/modules/mutants/code/mutant_zombie_bodyparts.dm @@ -6,7 +6,6 @@ icon_state = "mutant_head" is_dimorphic = FALSE limb_id = SPECIES_MUTANT - uses_mutcolor = TRUE species_color = "#ffffff" /obj/item/bodypart/chest/mutant_zombie diff --git a/modular_skyrat/modules/salon/code/misc_items.dm b/modular_skyrat/modules/salon/code/misc_items.dm index 78fb1e612be..5172ba9846a 100644 --- a/modular_skyrat/modules/salon/code/misc_items.dm +++ b/modular_skyrat/modules/salon/code/misc_items.dm @@ -90,7 +90,7 @@ else target_human.hairstyle = "Bald" - target_human.update_hair(is_creating = TRUE) + target_human.update_body_parts() playsound(loc, 'sound/items/unsheath.ogg', 20, TRUE) diff --git a/modular_skyrat/modules/salon/code/scissors.dm b/modular_skyrat/modules/salon/code/scissors.dm index 3f91e90e5d2..6a311a1c8a1 100644 --- a/modular_skyrat/modules/salon/code/scissors.dm +++ b/modular_skyrat/modules/salon/code/scissors.dm @@ -51,7 +51,7 @@ if(do_after(user, haircut_duration, target_human)) target_human.hairstyle = hair_id - target_human.update_hair(is_creating = TRUE) + target_human.update_body_parts() user.visible_message(span_notice("[user] successfully cuts [target_human]'s hair!"), span_notice("You successfully cut [target_human]'s hair!")) new /obj/effect/decal/cleanable/hair(get_turf(src)) else @@ -72,6 +72,6 @@ if(do_after(user, facial_haircut_duration, target_human)) target_human.facial_hairstyle = facial_hair_id - target_human.update_hair(is_creating = TRUE) + target_human.update_body_parts() user.visible_message(span_notice("[user] successfully cuts [target_human]'s facial hair!"), span_notice("You successfully cut [target_human]'s facial hair!")) new /obj/effect/decal/cleanable/hair(get_turf(src)) diff --git a/modular_skyrat/modules/salon/code/straight_razor.dm b/modular_skyrat/modules/salon/code/straight_razor.dm index 63ce9611e29..4c95830c63f 100644 --- a/modular_skyrat/modules/salon/code/straight_razor.dm +++ b/modular_skyrat/modules/salon/code/straight_razor.dm @@ -18,7 +18,7 @@ /obj/item/straight_razor/proc/shave(mob/living/carbon/human/target_human) target_human.facial_hairstyle = "Shaved" - target_human.update_hair(is_creating = TRUE) + target_human.update_body_parts() playsound(loc, 'sound/items/unsheath.ogg', 20, TRUE) /obj/item/straight_razor/attack(mob/attacked_mob, mob/living/user) diff --git a/tgstation.dme b/tgstation.dme index 89baa4cdf5f..42fe192ea85 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4441,6 +4441,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"