From e2477f010d04a1289388fbeb67f2c9dce4fec1be Mon Sep 17 00:00:00 2001 From: Shifty/Anthomansland Date: Sun, 7 Apr 2019 23:06:33 +0200 Subject: [PATCH 01/10] Appearance datums --- code/datums/datacore.dm | 16 +- .../bloodcult/bloodcult_runespells.dm | 18 +- .../factions/bloodcult/bloodcult_tattoos.dm | 18 +- code/datums/gamemode/role/catbeast.dm | 2 +- code/datums/religions.dm | 8 +- code/game/area/Space Station 13 areas.dm | 4 +- code/game/dna/dna2.dm | 32 ++-- code/game/dna/dna2_helpers.dm | 24 +-- code/game/dna/genes/monkey.dm | 4 +- code/game/gamemodes/changeling/horror.dm | 4 +- code/game/gamemodes/endgame/xmas/krampus.dm | 2 +- code/game/machinery/Sleeper.dm | 4 +- code/game/objects/items/weapons/cosmetics.dm | 36 ++-- code/game/objects/structures/mirror.dm | 4 +- .../striketeams/emergency_response_team.dm | 26 +-- code/game/striketeams/striketeam_datums.dm | 26 +-- code/game/turfs/simulated.dm | 4 +- code/modules/admin/admin_verbs.dm | 26 +-- code/modules/admin/topic.dm | 2 +- code/modules/admin/verbs/one_click_antag.dm | 2 +- code/modules/client/preferences.dm | 24 +-- code/modules/clothing/head/misc_special.dm | 2 +- code/modules/credits/episode_name.dm | 2 +- code/modules/events/heist.dm | 6 +- .../mob/living/carbon/human/appearance.dm | 162 ++++++++++++++++++ .../living/carbon/human/catbeast/catbeast.dm | 2 +- code/modules/mob/living/carbon/human/death.dm | 16 +- code/modules/mob/living/carbon/human/human.dm | 99 +++++------ .../mob/living/carbon/human/human_defines.dm | 18 +- .../carbon/human/life/handle_random_events.dm | 4 +- .../mob/living/carbon/human/update_icons.dm | 38 ++-- code/modules/mob/living/carbon/species.dm | 8 +- code/modules/mob/transform_procs.dm | 12 +- code/modules/organs/organ_external.dm | 18 +- code/modules/organs/organ_objects.dm | 18 +- code/modules/virus2/effect/stage_2.dm | 8 +- code/modules/virus2/effect/stage_3.dm | 38 ++-- vgstation13.dme | 1 + 38 files changed, 443 insertions(+), 295 deletions(-) create mode 100644 code/modules/mob/living/carbon/human/appearance.dm diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 805562a145c..103fbea27a7 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -144,25 +144,25 @@ proc/get_id_photo(var/mob/living/carbon/human/H) // Skin tone if(H.species.anatomy_flags & HAS_SKIN_TONE) - if (H.s_tone >= 0) - preview_icon.Blend(rgb(H.s_tone, H.s_tone, H.s_tone), ICON_ADD) + if (H.my_appearance.s_tone >= 0) + preview_icon.Blend(rgb(H.my_appearance.s_tone, H.my_appearance.s_tone, H.my_appearance.s_tone), ICON_ADD) else - preview_icon.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT) + preview_icon.Blend(rgb(-H.my_appearance.s_tone, -H.my_appearance.s_tone, -H.my_appearance.s_tone), ICON_SUBTRACT) var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s") - eyes_s.Blend(rgb(H.r_eyes, H.g_eyes, H.b_eyes), ICON_ADD) + eyes_s.Blend(rgb(H.my_appearance.r_eyes, H.my_appearance.g_eyes, H.my_appearance.b_eyes), ICON_ADD) - var/datum/sprite_accessory/hair_style = hair_styles_list[H.h_style] + var/datum/sprite_accessory/hair_style = hair_styles_list[H.my_appearance.h_style] if(hair_style) var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") - hair_s.Blend(rgb(H.r_hair, H.g_hair, H.b_hair), ICON_ADD) + hair_s.Blend(rgb(H.my_appearance.r_hair, H.my_appearance.g_hair, H.my_appearance.b_hair), ICON_ADD) eyes_s.Blend(hair_s, ICON_OVERLAY) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[H.f_style] + var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[H.my_appearance.f_style] if(facial_hair_style) var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") - facial_s.Blend(rgb(H.r_facial, H.g_facial, H.b_facial), ICON_ADD) + facial_s.Blend(rgb(H.my_appearance.r_facial, H.my_appearance.g_facial, H.my_appearance.b_facial), ICON_ADD) eyes_s.Blend(facial_s, ICON_OVERLAY) var/icon/clothes_s = null diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm index 1c4f6a38083..9fbb7726351 100644 --- a/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm +++ b/code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm @@ -2577,15 +2577,15 @@ var/list/bloodcult_exitportals = list() vessel.ckey = ghost.ckey qdel(husk) - vessel.r_hair = 90 - vessel.g_hair = 90 - vessel.b_hair = 90 - vessel.r_facial = 90 - vessel.g_facial = 90 - vessel.b_facial = 90 - vessel.r_eyes = 255 - vessel.g_eyes = 0 - vessel.b_eyes = 0 + vessel.my_appearance.r_hair = 90 + vessel.my_appearance.g_hair = 90 + vessel.my_appearance.b_hair = 90 + vessel.my_appearance.r_facial = 90 + vessel.my_appearance.g_facial = 90 + vessel.my_appearance.b_facial = 90 + vessel.my_appearance.r_eyes = 255 + vessel.my_appearance.g_eyes = 0 + vessel.my_appearance.b_eyes = 0 vessel.status_flags &= ~GODMODE vessel.regenerate_icons() //Let's not forget to make them cultists as well diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_tattoos.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_tattoos.dm index 697de7a172c..2e184cca31c 100644 --- a/code/datums/gamemode/factions/bloodcult/bloodcult_tattoos.dm +++ b/code/datums/gamemode/factions/bloodcult/bloodcult_tattoos.dm @@ -105,15 +105,15 @@ var/list/blood_communion = list() if (!istype(H)) return H.set_species("Manifested") - H.r_hair = 90 - H.g_hair = 90 - H.b_hair = 90 - H.r_facial = 90 - H.g_facial = 90 - H.b_facial = 90 - H.r_eyes = 255 - H.g_eyes = 0 - H.b_eyes = 0 + H.my_appearance.r_hair = 90 + H.my_appearance.g_hair = 90 + H.my_appearance.b_hair = 90 + H.my_appearance.r_facial = 90 + H.my_appearance.g_facial = 90 + H.my_appearance.b_facial = 90 + H.my_appearance.r_eyes = 255 + H.my_appearance.g_eyes = 0 + H.my_appearance.b_eyes = 0 H.revive(0) H.status_flags &= ~GODMODE H.status_flags &= ~CANSTUN diff --git a/code/datums/gamemode/role/catbeast.dm b/code/datums/gamemode/role/catbeast.dm index e4e550a1689..610e8c0f7d1 100644 --- a/code/datums/gamemode/role/catbeast.dm +++ b/code/datums/gamemode/role/catbeast.dm @@ -17,7 +17,7 @@ /datum/role/catbeast/OnPostSetup() var/mob/living/carbon/human/H = antag.current H.set_species("Tajaran", force_organs=1) - H.s_tone = CATBEASTBLACK + H.my_appearance.s_tone = CATBEASTBLACK H.dna.ResetUI() equip_catbeast(H) H.regenerate_icons() diff --git a/code/datums/religions.dm b/code/datums/religions.dm index 226907aa0dc..1eee4a00501 100755 --- a/code/datums/religions.dm +++ b/code/datums/religions.dm @@ -1215,8 +1215,8 @@ /datum/religion/art/equip_chaplain(var/mob/living/carbon/human/H) H.put_in_hands(new /obj/item/mounted/frame/painting) - H.h_style = "Big Afro" - H.f_style = "Full Beard" + H.my_appearance.h_style = "Big Afro" + H.my_appearance.f_style = "Full Beard" H.update_hair() /datum/religion/clean @@ -1230,8 +1230,8 @@ /datum/religion/clean/equip_chaplain(var/mob/living/carbon/human/H) H.put_in_hands(new /obj/item/weapon/mop) - H.h_style = "Bald" - H.f_style = "Shaved" + H.my_appearance.h_style = "Bald" + H.my_appearance.f_style = "Shaved" H.update_hair() /datum/religion/guns diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 2025e0c0465..7201e93b81c 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -2576,8 +2576,8 @@ var/list/the_station_areas = list ( sound_delay = rand(0, 50) for(var/mob/living/carbon/human/H in src) -// if(H.s_tone > -55) //ugh...nice/novel idea but please no. -// H.s_tone-- +// if(H.my_appearance.s_tone > -55) //ugh...nice/novel idea but please no. +// H.my_appearance.s_tone-- // H.update_body() if(H.client) mysound.status = SOUND_UPDATE diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm index 0aec870e13c..aa38d2c27af 100644 --- a/code/game/dna/dna2.dm +++ b/code/game/dna/dna2.dm @@ -172,28 +172,28 @@ var/global/list/facial_hair_styles_female_list = list() ResetUI(1) // Hair // FIXME: Species-specific defaults pls - if(!character.h_style) - character.h_style = "Skinhead" - var/hair = hair_styles_list.Find(character.h_style) + if(!character.my_appearance.h_style) + character.my_appearance.h_style = "Skinhead" + var/hair = hair_styles_list.Find(character.my_appearance.h_style) // Facial Hair - if(!character.f_style) - character.f_style = "Shaved" - var/beard = facial_hair_styles_list.Find(character.f_style) + if(!character.my_appearance.f_style) + character.my_appearance.f_style = "Shaved" + var/beard = facial_hair_styles_list.Find(character.my_appearance.f_style) - SetUIValueRange(DNA_UI_HAIR_R, character.r_hair, 255, 1) - SetUIValueRange(DNA_UI_HAIR_G, character.g_hair, 255, 1) - SetUIValueRange(DNA_UI_HAIR_B, character.b_hair, 255, 1) + SetUIValueRange(DNA_UI_HAIR_R, character.my_appearance.r_hair, 255, 1) + SetUIValueRange(DNA_UI_HAIR_G, character.my_appearance.g_hair, 255, 1) + SetUIValueRange(DNA_UI_HAIR_B, character.my_appearance.b_hair, 255, 1) - SetUIValueRange(DNA_UI_BEARD_R, character.r_facial, 255, 1) - SetUIValueRange(DNA_UI_BEARD_G, character.g_facial, 255, 1) - SetUIValueRange(DNA_UI_BEARD_B, character.b_facial, 255, 1) + SetUIValueRange(DNA_UI_BEARD_R, character.my_appearance.r_facial, 255, 1) + SetUIValueRange(DNA_UI_BEARD_G, character.my_appearance.g_facial, 255, 1) + SetUIValueRange(DNA_UI_BEARD_B, character.my_appearance.b_facial, 255, 1) - SetUIValueRange(DNA_UI_EYES_R, character.r_eyes, 255, 1) - SetUIValueRange(DNA_UI_EYES_G, character.g_eyes, 255, 1) - SetUIValueRange(DNA_UI_EYES_B, character.b_eyes, 255, 1) + SetUIValueRange(DNA_UI_EYES_R, character.my_appearance.r_eyes, 255, 1) + SetUIValueRange(DNA_UI_EYES_G, character.my_appearance.g_eyes, 255, 1) + SetUIValueRange(DNA_UI_EYES_B, character.my_appearance.b_eyes, 255, 1) - SetUIValueRange(DNA_UI_SKIN_TONE, 35-character.s_tone, 220, 1) // Value can be negative. + SetUIValueRange(DNA_UI_SKIN_TONE, 35-character.my_appearance.s_tone, 220, 1) // Value can be negative. SetUIState(DNA_UI_GENDER, character.gender!=MALE, 1) diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index 3617693b712..d98581c454d 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -139,19 +139,19 @@ src.dna.UpdateUI() dna.check_integrity() var/mob/living/carbon/human/H = src - H.r_hair = dna.GetUIValueRange(DNA_UI_HAIR_R, 255) - H.g_hair = dna.GetUIValueRange(DNA_UI_HAIR_G, 255) - H.b_hair = dna.GetUIValueRange(DNA_UI_HAIR_B, 255) + H.my_appearance.r_hair = dna.GetUIValueRange(DNA_UI_HAIR_R, 255) + H.my_appearance.g_hair = dna.GetUIValueRange(DNA_UI_HAIR_G, 255) + H.my_appearance.b_hair = dna.GetUIValueRange(DNA_UI_HAIR_B, 255) - H.r_facial = dna.GetUIValueRange(DNA_UI_BEARD_R, 255) - H.g_facial = dna.GetUIValueRange(DNA_UI_BEARD_G, 255) - H.b_facial = dna.GetUIValueRange(DNA_UI_BEARD_B, 255) + H.my_appearance.r_facial = dna.GetUIValueRange(DNA_UI_BEARD_R, 255) + H.my_appearance.g_facial = dna.GetUIValueRange(DNA_UI_BEARD_G, 255) + H.my_appearance.b_facial = dna.GetUIValueRange(DNA_UI_BEARD_B, 255) - H.r_eyes = dna.GetUIValueRange(DNA_UI_EYES_R, 255) - H.g_eyes = dna.GetUIValueRange(DNA_UI_EYES_G, 255) - H.b_eyes = dna.GetUIValueRange(DNA_UI_EYES_B, 255) + H.my_appearance.r_eyes = dna.GetUIValueRange(DNA_UI_EYES_R, 255) + H.my_appearance.g_eyes = dna.GetUIValueRange(DNA_UI_EYES_G, 255) + H.my_appearance.b_eyes = dna.GetUIValueRange(DNA_UI_EYES_B, 255) - H.s_tone = 35 - dna.GetUIValueRange(DNA_UI_SKIN_TONE, 220) // Value can be negative. + H.my_appearance.s_tone = 35 - dna.GetUIValueRange(DNA_UI_SKIN_TONE, 220) // Value can be negative. H.setGender(MALE) if (dna.GetUIState(DNA_UI_GENDER)) H.setGender(FEMALE) @@ -161,12 +161,12 @@ //Hair var/hair = dna.GetUIValueRange(DNA_UI_HAIR_STYLE,hair_styles_list.len) if((0 < hair) && (hair <= hair_styles_list.len)) - H.h_style = hair_styles_list[hair] + H.my_appearance.h_style = hair_styles_list[hair] //Facial Hair var/beard = dna.GetUIValueRange(DNA_UI_BEARD_STYLE,facial_hair_styles_list.len) if((0 < beard) && (beard <= facial_hair_styles_list.len)) - H.f_style = facial_hair_styles_list[beard] + H.my_appearance.f_style = facial_hair_styles_list[beard] H.update_body(0) H.update_hair() diff --git a/code/game/dna/genes/monkey.dm b/code/game/dna/genes/monkey.dm index 97dc5a6ea1b..a2f1ae915c2 100644 --- a/code/game/dna/genes/monkey.dm +++ b/code/game/dna/genes/monkey.dm @@ -100,8 +100,8 @@ O.real_name = randomname i++ O.UpdateAppearance() - O.h_style = random_hair_style(O.gender,O.species.name) - O.f_style = random_facial_hair_style(O.gender,O.species.name) + O.my_appearance.h_style = random_hair_style(O.gender,O.species.name) + O.my_appearance.f_style = random_facial_hair_style(O.gender,O.species.name) O.update_hair() O.take_overall_damage(M.getBruteLoss(), M.getFireLoss()) O.adjustToxLoss(M.getToxLoss()) diff --git a/code/game/gamemodes/changeling/horror.dm b/code/game/gamemodes/changeling/horror.dm index cea60c0ee1d..d9d326a9fec 100644 --- a/code/game/gamemodes/changeling/horror.dm +++ b/code/game/gamemodes/changeling/horror.dm @@ -38,6 +38,6 @@ /datum/species/horror/handle_post_spawn(var/mob/living/carbon/human/H) - H.h_style = "Bald" - H.f_style = "Shaved" + H.my_appearance.h_style = "Bald" + H.my_appearance.f_style = "Shaved" H.update_hair() \ No newline at end of file diff --git a/code/game/gamemodes/endgame/xmas/krampus.dm b/code/game/gamemodes/endgame/xmas/krampus.dm index 6db4b8a3ed6..0199ca6ccc5 100644 --- a/code/game/gamemodes/endgame/xmas/krampus.dm +++ b/code/game/gamemodes/endgame/xmas/krampus.dm @@ -28,7 +28,7 @@ status_flags = GODMODE|CANPUSH New(var/new_loc) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Krampus") maxHealth=999999 health=999999 diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index ab8e1abc178..c8a0b9269ee 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -641,10 +641,10 @@ if(ishuman(occupant)) var/mob/living/carbon/human/H = occupant if(isdiona(H)) - if(H.h_style != "Popped Hair") + if(H.my_appearance.h_style != "Popped Hair") to_chat(H, "Your head pops!") playsound(src, 'sound/effects/pop.ogg', 50, 1) - H.h_style = "Popped Hair" + H.my_appearance.h_style = "Popped Hair" H.update_hair() else if(isjusthuman(H) && Holiday == APRIL_FOOLS_DAY) H.GALize() diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index c3aa719ac80..eb0542abede 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -215,11 +215,11 @@ if(cover) to_chat(user, "You can't color [H == user ? "your" : "\the [H]'s"] facial hair through that [cover.name]!") return - if(!H.f_style || H.f_style == "Shaved") //if they have no facial hair + if(!H.my_appearance.f_style || H.my_appearance.f_style == "Shaved") //if they have no facial hair to_chat(user, "[H == user ? "You don't" : "\The [H] doesn't"] seem to have any facial hair!") return else - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[H.f_style] + var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[H.my_appearance.f_style] if(!facial_hair_style.do_colouration) to_chat(user, "[H == user ? "You don't" : "\The [H] doesn't"] seem to have any colorable facial hair!") return @@ -229,11 +229,11 @@ if(cover) to_chat(user, "You can't color [H == user ? "your" : "\the [H]'s"] hair through that [cover.name]!") return - if(!H.h_style || H.h_style == "Bald") //if they have no hair + if(!H.my_appearance.h_style || H.my_appearance.h_style == "Bald") //if they have no hair to_chat(user, "[H == user ? "You don't" : "\The [H] doesn't"] seem to have any hair!") return else - var/datum/sprite_accessory/hair_style = hair_styles_list[H.h_style] + var/datum/sprite_accessory/hair_style = hair_styles_list[H.my_appearance.h_style] if(!hair_style.do_colouration) to_chat(user, "[H == user ? "You don't" : "\The [H] doesn't"] seem to have any colorable hair!") return @@ -261,13 +261,13 @@ if(!H) return if(facial) - H.r_facial = color_r - H.g_facial = color_g - H.b_facial = color_b + H.my_appearance.r_facial = color_r + H.my_appearance.g_facial = color_g + H.my_appearance.b_facial = color_b else - H.r_hair = color_r - H.g_hair = color_g - H.b_hair = color_b + H.my_appearance.r_hair = color_r + H.my_appearance.g_hair = color_g + H.my_appearance.b_hair = color_b H.update_hair() playsound(src, 'sound/effects/spray2.ogg', 50, 1, -6) @@ -364,9 +364,9 @@ /obj/item/weapon/razor/proc/shave(mob/living/carbon/human/H, location = "mouth") if(location == "mouth") - H.f_style = "Shaved" + H.my_appearance.f_style = "Shaved" else - H.h_style = "Skinhead" + H.my_appearance.h_style = "Skinhead" H.update_hair() playsound(loc, 'sound/items/Welder2.ogg', 20, 1) @@ -380,7 +380,7 @@ if(H.check_body_part_coverage(MOUTH)) to_chat(user,"The mask is in the way!") return - if(H.f_style == "Shaved") + if(H.my_appearance.f_style == "Shaved") to_chat(user,"Already clean-shaven!") return @@ -403,7 +403,7 @@ if(H.check_body_part_coverage(HEAD)) to_chat(user,"The headgear is in the way!") return - if(H.h_style == "Bald" || H.h_style == "Skinhead") + if(H.my_appearance.h_style == "Bald" || H.my_appearance.h_style == "Skinhead") to_chat(user,"There is not enough hair left to shave!") return @@ -472,7 +472,7 @@ if (!Adjacent(user) || user.incapacitated()) return if (new_style) - H.h_style = new_style + H.my_appearance.h_style = new_style H.update_hair() /obj/item/weapon/pocket_mirror/proc/shatter() @@ -556,7 +556,7 @@ if(!H) return else - H.r_eyes = color_r - H.g_eyes = color_g - H.b_eyes = color_b + H.my_appearance.r_eyes = color_r + H.my_appearance.g_eyes = color_g + H.my_appearance.b_eyes = color_b H.update_body() diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index e6c8b564db2..57cca638447 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -47,7 +47,7 @@ if(userloc != H.loc) return //no tele-grooming if(new_style) - H.f_style = new_style + H.my_appearance.f_style = new_style H.update_hair() //handle normal hair @@ -57,7 +57,7 @@ if(userloc != H.loc) return //no tele-grooming if(new_style) - H.h_style = new_style + H.my_appearance.h_style = new_style H.update_hair() diff --git a/code/game/striketeams/emergency_response_team.dm b/code/game/striketeams/emergency_response_team.dm index 76ab984db38..b8cdb50db9e 100644 --- a/code/game/striketeams/emergency_response_team.dm +++ b/code/game/striketeams/emergency_response_team.dm @@ -55,28 +55,28 @@ var/list/response_team_members = list() //todo: make it a panel, like in character creation var/new_facial = input(user, "Please select facial hair color.", "Character Generation") as color if(new_facial) - M.r_facial = hex2num(copytext(new_facial, 2, 4)) - M.g_facial = hex2num(copytext(new_facial, 4, 6)) - M.b_facial = hex2num(copytext(new_facial, 6, 8)) + M.my_appearance.r_facial = hex2num(copytext(new_facial, 2, 4)) + M.my_appearance.g_facial = hex2num(copytext(new_facial, 4, 6)) + M.my_appearance.b_facial = hex2num(copytext(new_facial, 6, 8)) var/new_hair = input(user, "Please select hair color.", "Character Generation") as color if(new_facial) - M.r_hair = hex2num(copytext(new_hair, 2, 4)) - M.g_hair = hex2num(copytext(new_hair, 4, 6)) - M.b_hair = hex2num(copytext(new_hair, 6, 8)) + M.my_appearance.r_hair = hex2num(copytext(new_hair, 2, 4)) + M.my_appearance.g_hair = hex2num(copytext(new_hair, 4, 6)) + M.my_appearance.b_hair = hex2num(copytext(new_hair, 6, 8)) var/new_eyes = input(user, "Please select eye color.", "Character Generation") as color if(new_eyes) - M.r_eyes = hex2num(copytext(new_eyes, 2, 4)) - M.g_eyes = hex2num(copytext(new_eyes, 4, 6)) - M.b_eyes = hex2num(copytext(new_eyes, 6, 8)) + M.my_appearance.r_eyes = hex2num(copytext(new_eyes, 2, 4)) + M.my_appearance.g_eyes = hex2num(copytext(new_eyes, 4, 6)) + M.my_appearance.b_eyes = hex2num(copytext(new_eyes, 6, 8)) var/new_tone = input(user, "Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text if (!new_tone) new_tone = 35 - M.s_tone = max(min(round(text2num(new_tone)), 220), 1) - M.s_tone = -M.s_tone + 35 + M.my_appearance.s_tone = max(min(round(text2num(new_tone)), 220), 1) + M.my_appearance.s_tone = -M.my_appearance.s_tone + 35 // hair var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair @@ -92,12 +92,12 @@ var/list/response_team_members = list() //hair var/new_hstyle = input(user, "Select a hair style", "Grooming") as null|anything in hair_styles_list if(new_hstyle) - M.h_style = new_hstyle + M.my_appearance.h_style = new_hstyle // facial hair var/new_fstyle = input(user, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list if(new_fstyle) - M.f_style = new_fstyle + M.my_appearance.f_style = new_fstyle var/new_gender = alert(user, "Please select gender.", "Character Generation", "Male", "Female") if (new_gender) diff --git a/code/game/striketeams/striketeam_datums.dm b/code/game/striketeams/striketeam_datums.dm index 1e867c5882c..660b84c6b25 100644 --- a/code/game/striketeams/striketeam_datums.dm +++ b/code/game/striketeams/striketeam_datums.dm @@ -265,28 +265,28 @@ var/list/sent_strike_teams = list() if(can_customize_appearance) var/new_facial = input(user, "Please select facial hair color.", "Character Generation") as color if(new_facial) - new_commando.r_facial = hex2num(copytext(new_facial, 2, 4)) - new_commando.g_facial = hex2num(copytext(new_facial, 4, 6)) - new_commando.b_facial = hex2num(copytext(new_facial, 6, 8)) + new_commando.my_appearance.r_facial = hex2num(copytext(new_facial, 2, 4)) + new_commando.my_appearance.g_facial = hex2num(copytext(new_facial, 4, 6)) + new_commando.my_appearance.b_facial = hex2num(copytext(new_facial, 6, 8)) var/new_hair = input(user, "Please select hair color.", "Character Generation") as color if(new_facial) - new_commando.r_hair = hex2num(copytext(new_hair, 2, 4)) - new_commando.g_hair = hex2num(copytext(new_hair, 4, 6)) - new_commando.b_hair = hex2num(copytext(new_hair, 6, 8)) + new_commando.my_appearance.r_hair = hex2num(copytext(new_hair, 2, 4)) + new_commando.my_appearance.g_hair = hex2num(copytext(new_hair, 4, 6)) + new_commando.my_appearance.b_hair = hex2num(copytext(new_hair, 6, 8)) var/new_eyes = input(user, "Please select eye color.", "Character Generation") as color if(new_eyes) - new_commando.r_eyes = hex2num(copytext(new_eyes, 2, 4)) - new_commando.g_eyes = hex2num(copytext(new_eyes, 4, 6)) - new_commando.b_eyes = hex2num(copytext(new_eyes, 6, 8)) + new_commando.my_appearance.r_eyes = hex2num(copytext(new_eyes, 2, 4)) + new_commando.my_appearance.g_eyes = hex2num(copytext(new_eyes, 4, 6)) + new_commando.my_appearance.b_eyes = hex2num(copytext(new_eyes, 6, 8)) var/new_tone = input(user, "Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text if (!new_tone) new_tone = 35 - new_commando.s_tone = max(min(round(text2num(new_tone)), 220), 1) - new_commando.s_tone = -new_commando.s_tone + 35 + new_commando.my_appearance.s_tone = max(min(round(text2num(new_tone)), 220), 1) + new_commando.my_appearance.s_tone = -new_commando.my_appearance.s_tone + 35 // hair var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair @@ -302,12 +302,12 @@ var/list/sent_strike_teams = list() //hair var/new_hstyle = input(user, "Select a hair style", "Grooming") as null|anything in hair_styles_list if(new_hstyle) - new_commando.h_style = new_hstyle + new_commando.my_appearance.h_style = new_hstyle // facial hair var/new_fstyle = input(user, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list if(new_fstyle) - new_commando.f_style = new_fstyle + new_commando.my_appearance.f_style = new_fstyle var/new_gender = alert(user, "Please select gender.", "Character Generation", "Male", "Female") if (new_gender) diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index d40b92ff256..cb14a80bf84 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -61,8 +61,8 @@ bloodDNA = null // Floorlength braids? Enjoy your tripping. - if(H.h_style && !H.check_hidden_head_flags(HIDEHEADHAIR)) - var/datum/sprite_accessory/hair_style = hair_styles_list[H.h_style] + if(H.my_appearance.h_style && !H.check_hidden_head_flags(HIDEHEADHAIR)) + var/datum/sprite_accessory/hair_style = hair_styles_list[H.my_appearance.h_style] if(hair_style && (hair_style.flags & HAIRSTYLE_CANTRIP)) if(H.m_intent == "run" && prob(5)) if (H.Slip(4, 5)) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 4508c3cce6c..107089fec64 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -777,37 +777,37 @@ var/list/admin_verbs_mod = list( return var/new_facial = input("Please select facial hair color.", "Character Generation") as color if(new_facial) - M.r_facial = hex2num(copytext(new_facial, 2, 4)) - M.g_facial = hex2num(copytext(new_facial, 4, 6)) - M.b_facial = hex2num(copytext(new_facial, 6, 8)) + M.my_appearance.r_facial = hex2num(copytext(new_facial, 2, 4)) + M.my_appearance.g_facial = hex2num(copytext(new_facial, 4, 6)) + M.my_appearance.b_facial = hex2num(copytext(new_facial, 6, 8)) var/new_hair = input("Please select hair color.", "Character Generation") as color if(new_facial) - M.r_hair = hex2num(copytext(new_hair, 2, 4)) - M.g_hair = hex2num(copytext(new_hair, 4, 6)) - M.b_hair = hex2num(copytext(new_hair, 6, 8)) + M.my_appearance.r_hair = hex2num(copytext(new_hair, 2, 4)) + M.my_appearance.g_hair = hex2num(copytext(new_hair, 4, 6)) + M.my_appearance.b_hair = hex2num(copytext(new_hair, 6, 8)) var/new_eyes = input("Please select eye color.", "Character Generation") as color if(new_eyes) - M.r_eyes = hex2num(copytext(new_eyes, 2, 4)) - M.g_eyes = hex2num(copytext(new_eyes, 4, 6)) - M.b_eyes = hex2num(copytext(new_eyes, 6, 8)) + M.my_appearance.r_eyes = hex2num(copytext(new_eyes, 2, 4)) + M.my_appearance.g_eyes = hex2num(copytext(new_eyes, 4, 6)) + M.my_appearance.b_eyes = hex2num(copytext(new_eyes, 6, 8)) var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text if (new_tone) - M.s_tone = max(min(round(text2num(new_tone)), 220), 1) - M.s_tone = -M.s_tone + 35 + M.my_appearance.s_tone = max(min(round(text2num(new_tone)), 220), 1) + M.my_appearance.s_tone = -M.my_appearance.s_tone + 35 // hair var/new_hstyle = input(usr, "Select a hair style", "Grooming") as null|anything in hair_styles_list if(new_hstyle) - M.h_style = new_hstyle + M.my_appearance.h_style = new_hstyle // facial hair var/new_fstyle = input(usr, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list if(new_fstyle) - M.f_style = new_fstyle + M.my_appearance.f_style = new_fstyle var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female") if (new_gender) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index a8518ef11b3..c2042636b5e 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -3412,7 +3412,7 @@ feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","DF") for(var/mob/living/carbon/human/B in mob_list) - B.f_style = "Dward Beard" + B.my_appearance.f_style = "Dward Beard" B.update_hair() message_admins("[key_name_admin(usr)] activated dorf mode") if("ionstorm") diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index c39a31ad389..e49f2d972db 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -267,7 +267,7 @@ client/proc/one_click_antag() var/mob/living/carbon/human/new_vox = new(spawn_location.loc) new_vox.setGender(pick(MALE, FEMALE)) - new_vox.h_style = "Short Vox Quills" + new_vox.my_appearance.h_style = "Short Vox Quills" new_vox.regenerate_icons() new_vox.age = rand(12,20) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 1993ae10ae3..1428ea4093a 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1517,22 +1517,22 @@ NOTE: The change will take effect AFTER any current recruiting periods."} character.setGender(gender) character.age = age - character.r_eyes = r_eyes - character.g_eyes = g_eyes - character.b_eyes = b_eyes + character.my_appearance.r_eyes = r_eyes + character.my_appearance.g_eyes = g_eyes + character.my_appearance.b_eyes = b_eyes - character.r_hair = r_hair - character.g_hair = g_hair - character.b_hair = b_hair + character.my_appearance.r_hair = r_hair + character.my_appearance.g_hair = g_hair + character.my_appearance.b_hair = b_hair - character.r_facial = r_facial - character.g_facial = g_facial - character.b_facial = b_facial + character.my_appearance.r_facial = r_facial + character.my_appearance.g_facial = g_facial + character.my_appearance.b_facial = b_facial - character.s_tone = s_tone + character.my_appearance.s_tone = s_tone - character.h_style = h_style - character.f_style = f_style + character.my_appearance.h_style = h_style + character.my_appearance.f_style = f_style character.skills = skills diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 90c08ae4ae8..091655fab25 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -186,7 +186,7 @@ if(!istype(user) || !haircolored) return wear_override = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kitty") - wear_override.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD) + wear_override.Blend(rgb(user.my_appearance.r_hair, user.my_appearance.g_hair, user.my_appearance.b_hair), ICON_ADD) var/icon/earbit = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner") wear_override.Blend(earbit, ICON_OVERLAY) diff --git a/code/modules/credits/episode_name.dm b/code/modules/credits/episode_name.dm index a779c8bd817..266d1b271ce 100644 --- a/code/modules/credits/episode_name.dm +++ b/code/modules/credits/episode_name.dm @@ -214,7 +214,7 @@ voxcount++ if(isdiona(H)) dionacount++ - if(isjusthuman(H) && (H.h_style == "Bald" || H.h_style == "Skinhead") && !H.check_body_part_coverage(HEAD)) + if(isjusthuman(H) && (H.my_appearance.h_style == "Bald" || H.my_appearance.h_style == "Skinhead") && !H.check_body_part_coverage(HEAD)) baldycount++ if(M_FAT in H.mutations) fattycount++ diff --git a/code/modules/events/heist.dm b/code/modules/events/heist.dm index 76e958bb628..b604506d308 100644 --- a/code/modules/events/heist.dm +++ b/code/modules/events/heist.dm @@ -82,7 +82,7 @@ var/global/list/datum/mind/raiders = list() //Antags. var/mob/living/carbon/human/vox = raider.current vox.age = rand(12,20) - vox.s_tone = random_skin_tone("Vox") + vox.my_appearance.s_tone = random_skin_tone("Vox") vox.dna.mutantrace = "vox" vox.set_species("Vox") vox.fully_replace_character_name(vox.real_name, vox.generate_name()) @@ -90,8 +90,8 @@ var/global/list/datum/mind/raiders = list() //Antags. vox.flavor_text = "" vox.add_language(LANGUAGE_VOX) vox.remove_language(LANGUAGE_GALACTIC_COMMON) - vox.h_style = "Short Vox Quills" - vox.f_style = "Shaved" + vox.my_appearance.h_style = "Short Vox Quills" + vox.my_appearance.f_style = "Shaved" for(var/datum/organ/external/limb in vox.organs) limb.status &= ~(ORGAN_DESTROYED | ORGAN_ROBOT) vox.equip_vox_raider() diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm new file mode 100644 index 00000000000..db0e4177f68 --- /dev/null +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -0,0 +1,162 @@ +#define INDEX_RED 1 +#define INDEX_GREEN 2 +#define INDEX_BLUE 3 + +/datum/huamn_appearance + // For identification. + var/name + var/gender + + // "Proper" to the appearance datum. + var/s_tone + + var/h_style + var/r_hair + var/g_hair + var/b_hair + + var/f_style + var/r_facial + var/g_facial + var/b_facial + + var/r_eyes + var/g_eyes + var/b_eyes + +/mob/living/carbon/human/ + var/datum/huamn_appearance/my_appearance + +/mob/living/carbon/human/proc/switch_appearance(var/datum/huamn_appearance/new_looks) + if (!istype(new_looks)) + return + my_appearance = new_looks + regenerate_icons() + +/mob/living/carbon/human/proc/randomize_appearance_for(var/new_gender) + var/datum/huamn_appearance/appearance = new + + if (new_gender) + appearance.gender = new_gender + else + appearance.gender = pick(MALE, FEMALE) + + appearance.s_tone = random_skin_tone(species) + appearance.h_style = random_hair_style(gender, species) + appearance.f_style = random_facial_hair_style(gender, species) + + var/list/hair_colour = randomize_hair_color("hair") + var/list/facial_hair_colour = randomize_hair_color("facial") + var/list/eye_colour = randomize_eyes_color() + + appearance.r_hair = hair_colour[INDEX_RED] + appearance.g_hair = hair_colour[INDEX_GREEN] + appearance.b_hair = hair_colour[INDEX_BLUE] + + appearance.r_facial = facial_hair_colour[INDEX_RED] + appearance.g_facial = facial_hair_colour[INDEX_GREEN] + appearance.b_facial = facial_hair_colour[INDEX_BLUE] + + appearance.r_eyes = eye_colour[INDEX_RED] + appearance.g_eyes = eye_colour[INDEX_GREEN] + appearance.b_eyes = eye_colour[INDEX_BLUE] + gender = appearance.gender + return appearance + +/mob/living/carbon/human/proc/randomize_hair_color(var/target = "hair") + if(prob (75) && target == "facial") // Chance to inherit hair color + my_appearance.r_facial = my_appearance.r_hair + my_appearance.g_facial = my_appearance.g_hair + my_appearance.b_facial = my_appearance.b_hair + return + + var/red + var/green + var/blue + + var/col = pick ("blonde", "black", "chestnut", "copper", "brown", "wheat", "old", 15;"punk") + switch(col) + if("blonde") + red = 255 + green = 255 + blue = 0 + if("black") + red = 0 + green = 0 + blue = 0 + if("chestnut") + red = 153 + green = 102 + blue = 51 + if("copper") + red = 255 + green = 153 + blue = 0 + if("brown") + red = 102 + green = 51 + blue = 0 + if("wheat") + red = 255 + green = 255 + blue = 153 + if("old") + red = rand (100, 255) + green = red + blue = red + if("punk") + red = rand(0, 255) + green = rand(0, 255) + blue = rand(0, 255) + + red = max(min(red + rand (-25, 25), 255), 0) + green = max(min(green + rand (-25, 25), 255), 0) + blue = max(min(blue + rand (-25, 25), 255), 0) + + return list(red, green, blue) + +/mob/living/carbon/human/proc/randomize_eyes_color() + var/red + var/green + var/blue + + var/col = pick ("black", "grey", "brown", "chestnut", "blue", "lightblue", "green", "albino") + switch(col) + if("black") + red = 0 + green = 0 + blue = 0 + if("grey") + red = rand (100, 200) + green = red + blue = red + if("brown") + red = 102 + green = 51 + blue = 0 + if("chestnut") + red = 153 + green = 102 + blue = 0 + if("blue") + red = 51 + green = 102 + blue = 204 + if("lightblue") + red = 102 + green = 204 + blue = 255 + if("green") + red = 0 + green = 102 + blue = 0 + if("albino") + red = rand (200, 255) + green = rand (0, 150) + blue = rand (0, 150) + + red = max(min(red + rand (-25, 25), 255), 0) + green = max(min(green + rand (-25, 25), 255), 0) + blue = max(min(blue + rand (-25, 25), 255), 0) + + return list(red, green, blue) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/catbeast/catbeast.dm b/code/modules/mob/living/carbon/human/catbeast/catbeast.dm index 923ab0f4ce1..5d58c71d78c 100644 --- a/code/modules/mob/living/carbon/human/catbeast/catbeast.dm +++ b/code/modules/mob/living/carbon/human/catbeast/catbeast.dm @@ -1,5 +1,5 @@ /mob/living/carbon/human/tajaran/New(var/new_loc) - h_style = "Tajaran Ears" + my_appearance.h_style = "Tajaran Ears" ..(new_loc, "Tajaran") /mob/living/carbon/human/tajaran/IsAdvancedToolUser() diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 01fc35a91ac..169249f4149 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -126,10 +126,10 @@ if(M_SKELETON in src.mutations) return - if(f_style) - f_style = "Shaved" - if(h_style) - h_style = "Bald" + if(my_appearance.f_style) + my_appearance.f_style = "Shaved" + if(my_appearance.h_style) + my_appearance.h_style = "Bald" update_hair(0) mutations.Add(M_SKELETON) @@ -142,10 +142,10 @@ /mob/living/carbon/human/proc/ChangeToHusk() if(M_HUSK in mutations) return - if(f_style) - f_style = "Shaved" //We only change the icon_state of the hair datum, so it doesn't mess up their UI/UE - if(h_style) - h_style = "Bald" + if(my_appearance.f_style) + my_appearance.f_style = "Shaved" //We only change the icon_state of the hair datum, so it doesn't mess up their UI/UE + if(my_appearance.h_style) + my_appearance.h_style = "Bald" update_hair(0) mutations.Add(M_HUSK) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index bb19e3d97c6..6c6e9a3c0dc 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -23,55 +23,55 @@ ..(new_loc, "Manifested") /mob/living/carbon/human/skrell/New(var/new_loc, delay_ready_dna = 0) - h_style = "Skrell Male Tentacles" + my_appearance.h_style = "Skrell Male Tentacles" ..(new_loc, "Skrell") /mob/living/carbon/human/tajaran/New(var/new_loc, delay_ready_dna = 0) - h_style = "Tajaran Ears" + my_appearance.h_style = "Tajaran Ears" ..(new_loc, "Tajaran") /mob/living/carbon/human/unathi/New(var/new_loc, delay_ready_dna = 0) - h_style = "Unathi Horns" + my_appearance.h_style = "Unathi Horns" ..(new_loc, "Unathi") /mob/living/carbon/human/vox/New(var/new_loc, delay_ready_dna = 0) - h_style = "Short Vox Quills" + my_appearance.h_style = "Short Vox Quills" ..(new_loc, "Vox") /mob/living/carbon/human/diona/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Diona") /mob/living/carbon/human/skellington/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Skellington", delay_ready_dna) /mob/living/carbon/human/skelevox/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Skeletal Vox") /mob/living/carbon/human/plasma/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Plasmaman") /mob/living/carbon/human/muton/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Muton") /mob/living/carbon/human/grey/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Grey") /mob/living/carbon/human/golem/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Golem") /mob/living/carbon/human/grue/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Grue") /mob/living/carbon/human/slime/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Slime") /mob/living/carbon/human/NPC/New(var/new_loc, delay_ready_dna = 0) @@ -79,8 +79,8 @@ initialize_basic_NPC_components() /mob/living/carbon/human/frankenstein/New(var/new_loc, delay_ready_dna = 0) //Just fuck my shit up: the mob - f_style = pick(facial_hair_styles_list) - h_style = pick(hair_styles_list) + my_appearance.f_style = pick(facial_hair_styles_list) + my_appearance.h_style = pick(hair_styles_list) var/list/valid_species = (all_species - list("Krampus", "Horror")) @@ -95,11 +95,11 @@ update_body() /mob/living/carbon/human/mushroom/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Mushroom") /mob/living/carbon/human/lich/New(var/new_loc, delay_ready_dna = 0) - h_style = "Bald" + my_appearance.h_style = "Bald" ..(new_loc, "Undead") /mob/living/carbon/human/generate_static_overlay() @@ -123,8 +123,9 @@ static_overlays["cult"] = static_overlay /mob/living/carbon/human/New(var/new_loc, var/new_species_name = null, var/delay_ready_dna=0) + my_appearance = new // Initialise how they look. if(new_species_name) - s_tone = random_skin_tone(new_species_name) + my_appearance.s_tone = random_skin_tone(new_species_name) multicolor_skin_r = rand(0,255) //Only used when the human has a species datum with the MULTICOLOR anatomical flag multicolor_skin_g = rand(0,255) multicolor_skin_b = rand(0,255) @@ -751,30 +752,30 @@ src.verbs -= /mob/living/carbon/human/proc/morph return - var/new_facial = input("Please select facial hair color.", "Character Generation",rgb(r_facial,g_facial,b_facial)) as color + var/new_facial = input("Please select facial hair color.", "Character Generation",rgb(my_appearance.r_facial,my_appearance.g_facial,my_appearance.b_facial)) as color if(new_facial) - r_facial = hex2num(copytext(new_facial, 2, 4)) - g_facial = hex2num(copytext(new_facial, 4, 6)) - b_facial = hex2num(copytext(new_facial, 6, 8)) + my_appearance.r_facial = hex2num(copytext(new_facial, 2, 4)) + my_appearance.g_facial = hex2num(copytext(new_facial, 4, 6)) + my_appearance.b_facial = hex2num(copytext(new_facial, 6, 8)) - var/new_hair = input("Please select hair color.", "Character Generation",rgb(r_hair,g_hair,b_hair)) as color + var/new_hair = input("Please select hair color.", "Character Generation",rgb(my_appearance.r_hair,my_appearance.g_hair,my_appearance.b_hair)) as color if(new_facial) - r_hair = hex2num(copytext(new_hair, 2, 4)) - g_hair = hex2num(copytext(new_hair, 4, 6)) - b_hair = hex2num(copytext(new_hair, 6, 8)) + my_appearance.r_hair = hex2num(copytext(new_hair, 2, 4)) + my_appearance.g_hair = hex2num(copytext(new_hair, 4, 6)) + my_appearance.b_hair = hex2num(copytext(new_hair, 6, 8)) - var/new_eyes = input("Please select eye color.", "Character Generation",rgb(r_eyes,g_eyes,b_eyes)) as color + var/new_eyes = input("Please select eye color.", "Character Generation",rgb(my_appearance.r_eyes,my_appearance.g_eyes,my_appearance.b_eyes)) as color if(new_eyes) - r_eyes = hex2num(copytext(new_eyes, 2, 4)) - g_eyes = hex2num(copytext(new_eyes, 4, 6)) - b_eyes = hex2num(copytext(new_eyes, 6, 8)) + my_appearance.r_eyes = hex2num(copytext(new_eyes, 2, 4)) + my_appearance.g_eyes = hex2num(copytext(new_eyes, 4, 6)) + my_appearance.b_eyes = hex2num(copytext(new_eyes, 6, 8)) - var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation", "[35-s_tone]") as text + var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation", "[35-my_appearance.s_tone]") as text if (!new_tone) new_tone = 35 - s_tone = max(min(round(text2num(new_tone)), 220), 1) - s_tone = -s_tone + 35 + my_appearance.s_tone = max(min(round(text2num(new_tone)), 220), 1) + my_appearance.s_tone = -my_appearance.s_tone + 35 // hair var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair @@ -787,11 +788,11 @@ qdel(H) // delete the hair after it's all done H = null - var/new_style = input("Please select hair style", "Character Generation",h_style) as null|anything in hairs + var/new_style = input("Please select hair style", "Character Generation",my_appearance.h_style) as null|anything in hairs // if new style selected (not cancel) if (new_style) - h_style = new_style + my_appearance.h_style = new_style // facial hair var/list/all_fhairs = typesof(/datum/sprite_accessory/facial_hair) - /datum/sprite_accessory/facial_hair @@ -803,10 +804,10 @@ qdel(H) H = null - new_style = input("Please select facial style", "Character Generation",f_style) as null|anything in fhairs + new_style = input("Please select facial style", "Character Generation",my_appearance.f_style) as null|anything in fhairs if(new_style) - f_style = new_style + my_appearance.f_style = new_style var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female") if (new_gender) @@ -1723,18 +1724,18 @@ mob/living/carbon/human/isincrit() /mob/living/carbon/human/send_to_past(var/duration) ..() var/static/list/resettable_vars = list( - "r_hair", - "g_hair", - "b_hair", - "h_style", - "r_facial", - "g_facial", - "b_facial", - "f_style", - "r_eyes", - "g_eyes", - "b_eyes", - "s_tone", + "my_appearance.r_hair", + "my_appearance.g_hair", + "my_appearance.b_hair", + "my_appearance.h_style", + "my_appearance.r_facial", + "my_appearance.g_facial", + "my_appearance.b_facial", + "my_appearance.f_style", + "my_appearance.r_eyes", + ".my_appearance.g_eyes", + ".my_appearance.b_eyes", + "my_appearance.s_tone", "lip_style", "eye_style", "wear_suit", diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index a153a09289b..ed6877a1c6c 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,22 +1,6 @@ /mob/living/carbon/human - //Hair colour and style - var/r_hair = 0 - var/g_hair = 0 - var/b_hair = 0 - var/h_style = "Bald" + //Hair colour and style are in apperance.dm - //Facial hair colour and style - var/r_facial = 0 - var/g_facial = 0 - var/b_facial = 0 - var/f_style = "Shaved" - - //Eye colour - var/r_eyes = 0 - var/g_eyes = 0 - var/b_eyes = 0 - - var/s_tone = 0 //Skin tone var/multicolor_skin_r = 0 //Only used when the human has a species datum with the MULTICOLOR anatomical flag var/multicolor_skin_g = 0 var/multicolor_skin_b = 0 diff --git a/code/modules/mob/living/carbon/human/life/handle_random_events.dm b/code/modules/mob/living/carbon/human/life/handle_random_events.dm index b7e32f2f831..4fe80b6125f 100644 --- a/code/modules/mob/living/carbon/human/life/handle_random_events.dm +++ b/code/modules/mob/living/carbon/human/life/handle_random_events.dm @@ -8,8 +8,8 @@ //No hair for radroaches if(src.radiation >= 50) - src.h_style = "Bald" - src.f_style = "Shaved" + src.my_appearance.h_style = "Bald" + src.my_appearance.f_style = "Shaved" src.update_hair() //0.1% chance of playing a scary sound to someone who's in complete darkness diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 5aee76bdfe9..b3f68cc647a 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -256,10 +256,10 @@ var/global/list/damage_icon_parts = list() if(species.anatomy_flags & MULTICOLOR) stand_icon.Blend(rgb(multicolor_skin_r, multicolor_skin_g, multicolor_skin_b), ICON_ADD) else if(species.anatomy_flags & HAS_SKIN_TONE) - if(s_tone >= 0) - stand_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD) + if(my_appearance.s_tone >= 0) + stand_icon.Blend(rgb(my_appearance.s_tone, my_appearance.s_tone, my_appearance.s_tone), ICON_ADD) else - stand_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT) + stand_icon.Blend(rgb(-my_appearance.s_tone, -my_appearance.s_tone, -my_appearance.s_tone), ICON_SUBTRACT) if(husk) var/icon/mask = new(stand_icon) @@ -272,7 +272,7 @@ var/global/list/damage_icon_parts = list() //Eyes if(!skeleton) var/icon/eyes = new/icon('icons/mob/human_face.dmi', species.eyes) - eyes.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) + eyes.Blend(rgb(my_appearance.r_eyes, my_appearance.g_eyes, my_appearance.b_eyes), ICON_ADD) stand_icon.Blend(eyes, ICON_OVERLAY) //Mouth (lipstick!) @@ -315,28 +315,28 @@ var/global/list/damage_icon_parts = list() var/icon/face_standing = new /icon('icons/mob/human_face.dmi',"bald_s") var/hair_suffix = check_hidden_head_flags(HIDEHEADHAIR) ? "s2" : "s" // s2 = cropped icon - if(f_style && !check_hidden_head_flags(HIDEBEARDHAIR)) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style] + if(my_appearance.f_style && !check_hidden_head_flags(HIDEBEARDHAIR)) + var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[my_appearance.f_style] if((facial_hair_style) && (src.species.name in facial_hair_style.species_allowed)) var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") if(facial_hair_style.do_colouration) - facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD) + facial_s.Blend(rgb(my_appearance.r_facial, my_appearance.g_facial, my_appearance.b_facial), ICON_ADD) face_standing.Blend(facial_s, ICON_OVERLAY) // else - //warning("Invalid f_style for [species.name]: [f_style]") + //warning("Invalid my_appearance.f_style for [species.name]: [my_appearance.f_style]") - if(h_style && !(src.head && (src.head.flags & HIDEHAIRCOMPLETELY))) - var/datum/sprite_accessory/hair_style = hair_styles_list[h_style] + if(my_appearance.h_style && !(src.head && (src.head.flags & HIDEHAIRCOMPLETELY))) + var/datum/sprite_accessory/hair_style = hair_styles_list[my_appearance.h_style] if((hair_style) && (src.species.name in hair_style.species_allowed)) var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_[hair_suffix]") if(hair_style.do_colouration) - hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD) + hair_s.Blend(rgb(my_appearance.r_hair, my_appearance.g_hair, my_appearance.b_hair), ICON_ADD) if(hair_style.additional_accessories) hair_s.Blend(icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_acc"), ICON_OVERLAY) face_standing.Blend(hair_s, ICON_OVERLAY) // else - //warning("Invalid h_style for [species.name]: [h_style]") + //warning("Invalid my_appearance.h_style for [species.name]: [my_appearance.h_style]") if(body_alphas.len) var/lowest_alpha = get_lowest_body_alpha() @@ -1213,24 +1213,24 @@ var/global/list/damage_icon_parts = list() //base icons var/icon/face_lying = new /icon('icons/mob/human_face.dmi',"bald_l") - if(f_style) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style] + if(my_appearance.f_style) + var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[my_appearance.f_style] if(facial_hair_style) var/icon/facial_l = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_l") - facial_l.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD) + facial_l.Blend(rgb(my_appearance.r_facial, my_appearance.g_facial, my_appearance.b_facial), ICON_ADD) face_lying.Blend(facial_l, ICON_OVERLAY) - if(h_style) - var/datum/sprite_accessory/hair_style = hair_styles_list[h_style] + if(my_appearance.h_style) + var/datum/sprite_accessory/hair_style = hair_styles_list[my_appearance.h_style] if(hair_style) var/icon/hair_l = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_l") - hair_l.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD) + hair_l.Blend(rgb(my_appearance.r_hair, my_appearance.g_hair, my_appearance.b_hair), ICON_ADD) face_lying.Blend(hair_l, ICON_OVERLAY) //Eyes // Note: These used to be in update_face(), and the fact they're here will make it difficult to create a disembodied head var/icon/eyes_l = new/icon('icons/mob/human_face.dmi', "eyes_l") - eyes_l.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) + eyes_l.Blend(rgb(my_appearance.r_eyes, my_appearance.g_eyes, my_appearance.b_eyes), ICON_ADD) face_lying.Blend(eyes_l, ICON_OVERLAY) if(lip_style) diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 7893e637a26..5b1290c9f71 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -526,17 +526,17 @@ var/global/list/whitelisted_species = list("Human") H.update_icon() /datum/species/tajaran/updatespeciescolor(var/mob/living/carbon/human/H) - switch(H.s_tone) + switch(H.my_appearance.s_tone) if(CATBEASTBLACK) icobase = 'icons/mob/human_races/r_tajaranblack.dmi' deform = 'icons/mob/human_races/r_def_tajaranblack.dmi' tail = "tajtailb" - H.h_style = "Black Tajaran Ears" + H.my_appearance.h_style = "Black Tajaran Ears" else icobase = 'icons/mob/human_races/r_tajaran.dmi' deform = 'icons/mob/human_races/r_def_tajaran.dmi' tail = "tajtail" - H.h_style = "Tajaran Ears" + H.my_appearance.h_style = "Tajaran Ears" /datum/species/tajaran/handle_speech(var/datum/speech/speech, mob/living/carbon/human/H) if (prob(15)) @@ -835,7 +835,7 @@ var/global/list/whitelisted_species = list("Human") H.update_icon() /datum/species/vox/updatespeciescolor(var/mob/living/carbon/human/H) - switch(H.s_tone) + switch(H.my_appearance.s_tone) if(6) icobase = 'icons/mob/human_races/vox/r_voxemrl.dmi' deform = 'icons/mob/human_races/vox/r_def_voxemrl.dmi' diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index efea4df070c..3b5f42dbeec 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -308,13 +308,13 @@ return new_mob /mob/living/carbon/human/proc/GALize() - s_tone = -100 //Nichi saro ni itte hada o yaku + my_appearance.s_tone = -100 //Nichi saro ni itte hada o yaku update_body() - if(gender == MALE && h_style != "Toriyama 2") - h_style = "Toriyama 2" //Yeah, gyaru otoko sengen - r_facial = r_hair = 255 - g_facial = g_hair = 255 - b_facial = b_hair = 0 + if(gender == MALE && my_appearance.h_style != "Toriyama 2") + my_appearance.h_style = "Toriyama 2" //Yeah, gyaru otoko sengen + my_appearance.r_facial = my_appearance.r_hair = 255 + my_appearance.g_facial = my_appearance.g_hair = 255 + my_appearance.b_facial = my_appearance.b_hair = 0 update_hair() playsound(src, 'sound/misc/gal-o-sengen.ogg', 50, 1)// GO GO GO GO GO GO GAL-O-SENGEN diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 5102a58c915..3215d91e96c 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1620,10 +1620,10 @@ obj/item/organ/external/New(loc, mob/living/carbon/human/H) //Changing limb's skin tone to match owner if(H) if(!H.species || H.species.anatomy_flags & HAS_SKIN_TONE) - if(H.s_tone >= 0) - base.Blend(rgb(H.s_tone, H.s_tone, H.s_tone), ICON_ADD) + if(H.my_appearance.s_tone >= 0) + base.Blend(rgb(H.my_appearance.s_tone, H.my_appearance.s_tone, H.my_appearance.s_tone), ICON_ADD) else - base.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT) + base.Blend(rgb(-H.my_appearance.s_tone, -H.my_appearance.s_tone, -H.my_appearance.s_tone), ICON_SUBTRACT) icon = base dir = SOUTH @@ -1757,21 +1757,21 @@ obj/item/organ/external/head/New(loc, mob/living/carbon/human/H) qdel(src) return //Add (facial) hair. - if(H && H.f_style && !H.check_hidden_head_flags(HIDEBEARDHAIR)) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[H.f_style] + if(H && H.my_appearance.f_style && !H.check_hidden_head_flags(HIDEBEARDHAIR)) + var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[H.my_appearance.f_style] if(facial_hair_style) var/icon/facial = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") if(facial_hair_style.do_colouration) - facial.Blend(rgb(H.r_facial, H.g_facial, H.b_facial), ICON_ADD) + facial.Blend(rgb(H.my_appearance.r_facial, H.my_appearance.g_facial, H.my_appearance.b_facial), ICON_ADD) overlays.Add(facial) // icon.Blend(facial, ICON_OVERLAY) - if(H && H.h_style && !H.check_hidden_head_flags(HIDEHEADHAIR)) - var/datum/sprite_accessory/hair_style = hair_styles_list[H.h_style] + if(H && H.my_appearance.h_style && !H.check_hidden_head_flags(HIDEHEADHAIR)) + var/datum/sprite_accessory/hair_style = hair_styles_list[H.my_appearance.h_style] if(hair_style) var/icon/hair = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") if(hair_style.do_colouration) - hair.Blend(rgb(H.r_hair, H.g_hair, H.b_hair), ICON_ADD) + hair.Blend(rgb(H.my_appearance.r_hair, H.my_appearance.g_hair, H.my_appearance.b_hair), ICON_ADD) if(hair_style.additional_accessories) hair.Blend(icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_acc"), ICON_OVERLAY) diff --git a/code/modules/organs/organ_objects.dm b/code/modules/organs/organ_objects.dm index 45b65676f81..73b44a3e65f 100644 --- a/code/modules/organs/organ_objects.dm +++ b/code/modules/organs/organ_objects.dm @@ -324,15 +324,15 @@ var/mob/living/carbon/human/H = target if(istype(H)) eye_colour = list( - H.r_eyes ? H.r_eyes : 0, - H.g_eyes ? H.g_eyes : 0, - H.b_eyes ? H.b_eyes : 0 + H.my_appearance.r_eyes ? H.my_appearance.r_eyes : 0, + H.my_appearance.g_eyes ? H.my_appearance.g_eyes : 0, + H.my_appearance.b_eyes ? H.my_appearance.b_eyes : 0 ) // Leave bloody red pits behind! - H.r_eyes = 128 - H.g_eyes = 0 - H.b_eyes = 0 + H.my_appearance.r_eyes = 128 + H.my_appearance.g_eyes = 0 + H.my_appearance.b_eyes = 0 H.update_body() /obj/item/organ/internal/proc/replaced(var/mob/living/target) @@ -343,9 +343,9 @@ // Apply our eye colour to the target. var/mob/living/carbon/human/H = target if(istype(H) && eye_colour) - H.r_eyes = eye_colour[1] - H.g_eyes = eye_colour[2] - H.b_eyes = eye_colour[3] + H.my_appearance.r_eyes = eye_colour[1] + H.my_appearance.g_eyes = eye_colour[2] + H.my_appearance.b_eyes = eye_colour[3] H.update_body() /obj/item/organ/internal/proc/bitten(mob/user) diff --git a/code/modules/virus2/effect/stage_2.dm b/code/modules/virus2/effect/stage_2.dm index 43950d347ba..82ea33d054b 100644 --- a/code/modules/virus2/effect/stage_2.dm +++ b/code/modules/virus2/effect/stage_2.dm @@ -72,10 +72,10 @@ /datum/disease2/effect/hair/activate(var/mob/living/carbon/mob) if(istype(mob, /mob/living/carbon/human)) var/mob/living/carbon/human/H = mob - if(H.species.name == "Human" && !(H.h_style == "Bald") && !(H.h_style == "Balding Hair")) + if(H.species.name == "Human" && !(H.my_appearance.h_style == "Bald") && !(H.my_appearance.h_style == "Balding Hair")) to_chat(H, "Your hair starts to fall out in clumps...") spawn(50) - H.h_style = "Balding Hair" + H.my_appearance.h_style = "Balding Hair" H.update_hair() @@ -123,10 +123,10 @@ /datum/disease2/effect/beard/activate(var/mob/living/carbon/mob) if(istype(mob, /mob/living/carbon/human)) var/mob/living/carbon/human/H = mob - if(H.species.name == "Human" && !(H.f_style == "Full Beard")) + if(H.species.name == "Human" && !(H.my_appearance.f_style == "Full Beard")) to_chat(H, "Your chin and neck itch!.") spawn(50) - H.f_style = "Full Beard" + H.my_appearance.f_style = "Full Beard" H.update_hair() diff --git a/code/modules/virus2/effect/stage_3.dm b/code/modules/virus2/effect/stage_3.dm index c326d62145a..af44103154e 100644 --- a/code/modules/virus2/effect/stage_3.dm +++ b/code/modules/virus2/effect/stage_3.dm @@ -151,14 +151,14 @@ if(istype(H)) - if(H.species.name == "Human" && !(H.f_style == "Pompadour")) + if(H.species.name == "Human" && !(H.my_appearance.f_style == "Pompadour")) spawn(50) - H.h_style = "Pompadour" + H.my_appearance.h_style = "Pompadour" H.update_hair() - if(H.species.name == "Human" && !(H.f_style == "Elvis Sideburns")) + if(H.species.name == "Human" && !(H.my_appearance.f_style == "Elvis Sideburns")) spawn(50) - H.f_style = "Elvis Sideburns" + H.my_appearance.f_style = "Elvis Sideburns" H.update_hair() /datum/disease2/effect/elvis/deactivate(var/mob/living/carbon/mob) @@ -226,25 +226,25 @@ var/list/compatible_mobs = list(/mob/living/carbon/human, /mob/living/carbon/mon switch(hair_color) if("pink") - affected.b_hair = 153 - affected.g_hair = 102 - affected.r_hair = 255 + affected.my_appearance.b_hair = 153 + affected.my_appearance.g_hair = 102 + affected.my_appearance.r_hair = 255 if("red") - affected.b_hair = 0 - affected.g_hair = 0 - affected.r_hair = 255 + affected.my_appearance.b_hair = 0 + affected.my_appearance.g_hair = 0 + affected.my_appearance.r_hair = 255 if("green") - affected.b_hair = 0 - affected.g_hair = 255 - affected.r_hair = 0 + affected.my_appearance.b_hair = 0 + affected.my_appearance.g_hair = 255 + affected.my_appearance.r_hair = 0 if("blue") - affected.b_hair = 255 - affected.g_hair = 0 - affected.r_hair = 0 + affected.my_appearance.b_hair = 255 + affected.my_appearance.g_hair = 0 + affected.my_appearance.r_hair = 0 if("purple") - affected.b_hair = 102 - affected.g_hair = 0 - affected.r_hair = 102 + affected.my_appearance.b_hair = 102 + affected.my_appearance.g_hair = 0 + affected.my_appearance.r_hair = 102 affected.update_hair() triggered = 1 diff --git a/vgstation13.dme b/vgstation13.dme index 3dda44a27db..9435347349c 100644 --- a/vgstation13.dme +++ b/vgstation13.dme @@ -1668,6 +1668,7 @@ #include "code\modules\mob\living\carbon\complex\martian\life.dm" #include "code\modules\mob\living\carbon\complex\martian\martian.dm" #include "code\modules\mob\living\carbon\complex\martian\update_icons.dm" +#include "code\modules\mob\living\carbon\human\appearance.dm" #include "code\modules\mob\living\carbon\human\combat.dm" #include "code\modules\mob\living\carbon\human\death.dm" #include "code\modules\mob\living\carbon\human\emote.dm" From d89769879297bf21616497da2c89c13d99e6f40b Mon Sep 17 00:00:00 2001 From: Shifty/Anthomansland Date: Sun, 7 Apr 2019 23:11:34 +0200 Subject: [PATCH 02/10] Makes shapeshift less retarded --- code/modules/mob/living/carbon/human/appearance.dm | 1 + code/modules/spells/general/shapeshift.dm | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index db0e4177f68..c0ce8dc62da 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -61,6 +61,7 @@ appearance.g_eyes = eye_colour[INDEX_GREEN] appearance.b_eyes = eye_colour[INDEX_BLUE] gender = appearance.gender + regenerate_icons() return appearance /mob/living/carbon/human/proc/randomize_hair_color(var/target = "hair") diff --git a/code/modules/spells/general/shapeshift.dm b/code/modules/spells/general/shapeshift.dm index f0840983917..94d5d62be89 100644 --- a/code/modules/spells/general/shapeshift.dm +++ b/code/modules/spells/general/shapeshift.dm @@ -28,13 +28,12 @@ /spell/shapeshift/choose_targets(var/mob/user = usr) return list(user) // Self-cast -/spell/shapeshift/cast(var/list/targets, var/mob/user) - if (!user.client) +/spell/shapeshift/cast(var/list/targets, var/mob/living/carbon/human/user) + if (!istype(user)) return FALSE user.visible_message("\The [user] transforms!") - user.client.prefs.real_name = user.generate_name() //random_name(M.current.gender) - user.client.prefs.randomize_appearance_for(user) - user.regenerate_icons() + user.real_name = user.generate_name() //random_name(M.current.gender) + user.randomize_appearance_for(user.gender) var/datum/role/vampire/V = isvampire(user) if (V) V.remove_blood(blood_cost) \ No newline at end of file From 6c90ad78b0f43c769fbad6f9461a2a74b7eef502 Mon Sep 17 00:00:00 2001 From: Shifty/Anthomansland Date: Sun, 7 Apr 2019 23:16:27 +0200 Subject: [PATCH 03/10] Rambler --- code/datums/gamemode/dynamic/dynamic_rulesets_midround.dm | 6 +++--- code/modules/mob/living/carbon/human/appearance.dm | 2 +- code/modules/spells/general/shapeshift.dm | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/datums/gamemode/dynamic/dynamic_rulesets_midround.dm b/code/datums/gamemode/dynamic/dynamic_rulesets_midround.dm index ad4ca854221..06d7bc34369 100644 --- a/code/datums/gamemode/dynamic/dynamic_rulesets_midround.dm +++ b/code/datums/gamemode/dynamic/dynamic_rulesets_midround.dm @@ -486,11 +486,11 @@ /datum/dynamic_ruleset/midround/from_ghosts/rambler/generate_ruleset_body(mob/applicant) var/mob/living/carbon/human/frankenstein/new_frank = new(pick(latejoin)) - var/datum/preferences/A = new() - A.randomize_appearance_for(new_frank) + var/gender = pick(MALE, FEMALE) + new_frank.randomise_appearance_for(gender) new_frank.key = applicant.key new_frank.dna.ready_dna(new_frank) - new_frank.setGender(pick(MALE, FEMALE)) + new_frank.setGender(gender) return new_frank ////////////////////////////////////////////// diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index c0ce8dc62da..f3bdb5f0042 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -33,7 +33,7 @@ my_appearance = new_looks regenerate_icons() -/mob/living/carbon/human/proc/randomize_appearance_for(var/new_gender) +/mob/living/carbon/human/proc/randomise_appearance_for(var/new_gender) var/datum/huamn_appearance/appearance = new if (new_gender) diff --git a/code/modules/spells/general/shapeshift.dm b/code/modules/spells/general/shapeshift.dm index 94d5d62be89..4a6d06a6cc6 100644 --- a/code/modules/spells/general/shapeshift.dm +++ b/code/modules/spells/general/shapeshift.dm @@ -33,7 +33,7 @@ return FALSE user.visible_message("\The [user] transforms!") user.real_name = user.generate_name() //random_name(M.current.gender) - user.randomize_appearance_for(user.gender) + user.randomise_appearance_for(user.gender) var/datum/role/vampire/V = isvampire(user) if (V) V.remove_blood(blood_cost) \ No newline at end of file From f680a9b96c1c411ceb1a94f3ed6873062404ecff Mon Sep 17 00:00:00 2001 From: Shifty/Anthomansland Date: Sun, 7 Apr 2019 23:27:14 +0200 Subject: [PATCH 04/10] Fixes retardation related to humans --- code/game/striketeams/nanotrasen_deathsquad.dm | 3 +-- code/game/striketeams/striketeam_datums.dm | 4 +--- code/game/striketeams/syndicate_elite_squad.dm | 3 +-- code/modules/admin/verbs/one_click_antag.dm | 6 ++---- code/modules/admin/verbs/onlyone.dm | 3 +-- code/modules/admin/verbs/randomverbs.dm | 3 +-- 6 files changed, 7 insertions(+), 15 deletions(-) diff --git a/code/game/striketeams/nanotrasen_deathsquad.dm b/code/game/striketeams/nanotrasen_deathsquad.dm index 50c916cc689..f7b73523da3 100644 --- a/code/game/striketeams/nanotrasen_deathsquad.dm +++ b/code/game/striketeams/nanotrasen_deathsquad.dm @@ -18,8 +18,7 @@ new_commando.gender = pick(MALE, FEMALE) - var/datum/preferences/A = new()//Randomize appearance for the commando. - A.randomize_appearance_for(new_commando) + new_commando.randomise_appearance_for(new_commando.gender) new_commando.real_name = "[!leader_selected ? commando_rank : commando_leader_rank] [!leader_selected ? commando_name : "Creed"]" new_commando.age = !leader_selected ? rand(23,35) : rand(35,45) diff --git a/code/game/striketeams/striketeam_datums.dm b/code/game/striketeams/striketeam_datums.dm index 660b84c6b25..4a0914c94ee 100644 --- a/code/game/striketeams/striketeam_datums.dm +++ b/code/game/striketeams/striketeam_datums.dm @@ -317,9 +317,7 @@ var/list/sent_strike_teams = list() new_commando.setGender(FEMALE) else new_commando.setGender(pick(MALE, FEMALE)) - - var/datum/preferences/A = new() - A.randomize_appearance_for(new_commando) + new_commando.randomise_appearance_for(new_commando.gender) //M.rebuild_appearance() new_commando.update_hair() diff --git a/code/game/striketeams/syndicate_elite_squad.dm b/code/game/striketeams/syndicate_elite_squad.dm index fd0617e804e..938b6735121 100644 --- a/code/game/striketeams/syndicate_elite_squad.dm +++ b/code/game/striketeams/syndicate_elite_squad.dm @@ -24,8 +24,7 @@ new_syndicate_commando.setGender(pick(MALE, FEMALE)) - var/datum/preferences/A = new()//Randomize appearance for the commando. - A.randomize_appearance_for(new_syndicate_commando) + A.randomise_appearance_for(new_syndicate_commando.gender) new_syndicate_commando.real_name = "[!syndicate_leader_selected ? syndicate_commando_rank : syndicate_commando_leader_rank] [syndicate_commando_name]" new_syndicate_commando.age = !syndicate_leader_selected ? rand(23,35) : rand(35,45) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index e49f2d972db..bf002b84fbe 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -223,8 +223,7 @@ client/proc/one_click_antag() new_character.gender = pick(MALE,FEMALE) - var/datum/preferences/A = new() - A.randomize_appearance_for(new_character) + new_character.randomise_appearance_for(new_character.gender) new_character.generate_name() new_character.age = rand(17,45) @@ -241,8 +240,7 @@ client/proc/one_click_antag() new_syndicate_commando.gender = pick(MALE, FEMALE) - var/datum/preferences/A = new()//Randomize appearance for the commando. - A.randomize_appearance_for(new_syndicate_commando) + new_syndicate_commando.randomise_appearance_for(new_syndicate_commando.gender) new_syndicate_commando.real_name = "[!syndicate_leader_selected ? syndicate_commando_rank : syndicate_commando_leader_rank] [syndicate_commando_name]" new_syndicate_commando.name = new_syndicate_commando.real_name diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index 78e5f9df08f..915be5a4dc9 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -67,8 +67,7 @@ var/mob/living/silicon/S = M var/mob/living/carbon/human/new_human = new /mob/living/carbon/human(S.loc, delay_ready_dna=1) new_human.setGender(pick(MALE, FEMALE)) //The new human's gender will be random - var/datum/preferences/A = new() //Randomize appearance for the human - A.randomize_appearance_for(new_human) + new_human.randomise_appearance_for(new_human.gender) new_human.generate_name() new_human.languages |= S.languages if(S.default_language) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 7a28cdf29f2..bef9493f913 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -496,8 +496,7 @@ Traitors and the like can also be revived with the previous role mostly intact. new_character.age = record_found.fields["age"] else new_character.setGender(pick(MALE,FEMALE)) - var/datum/preferences/A = new() - A.randomize_appearance_for(new_character) + new_character.randomise_appearance_for(new_character.gender) new_character.real_name = G_found.real_name if(!new_character.real_name) From 69363ae2d2870591cf695cab09101574cdd5825c Mon Sep 17 00:00:00 2001 From: Shifty/Anthomansland Date: Sun, 7 Apr 2019 23:28:52 +0200 Subject: [PATCH 05/10] Fixes a runtime in rambler --- code/modules/mob/living/carbon/human/human.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 6c6e9a3c0dc..a68203171cc 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -79,13 +79,12 @@ initialize_basic_NPC_components() /mob/living/carbon/human/frankenstein/New(var/new_loc, delay_ready_dna = 0) //Just fuck my shit up: the mob - my_appearance.f_style = pick(facial_hair_styles_list) - my_appearance.h_style = pick(hair_styles_list) - var/list/valid_species = (all_species - list("Krampus", "Horror")) var/datum/species/new_species = all_species[pick(valid_species)] ..(new_loc, new_species.name) + my_appearance.f_style = pick(facial_hair_styles_list) + my_appearance.h_style = pick(hair_styles_list) gender = pick(MALE, FEMALE, NEUTER, PLURAL) meat_type = pick(typesof(/obj/item/weapon/reagent_containers/food/snacks/meat)) From 18bcba75f6f0e6a961d0a28dd230987f9260632a Mon Sep 17 00:00:00 2001 From: Shifty/Anthomansland Date: Sun, 7 Apr 2019 23:30:37 +0200 Subject: [PATCH 06/10] Derp --- code/game/striketeams/syndicate_elite_squad.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/striketeams/syndicate_elite_squad.dm b/code/game/striketeams/syndicate_elite_squad.dm index 938b6735121..855d58bcd70 100644 --- a/code/game/striketeams/syndicate_elite_squad.dm +++ b/code/game/striketeams/syndicate_elite_squad.dm @@ -24,7 +24,7 @@ new_syndicate_commando.setGender(pick(MALE, FEMALE)) - A.randomise_appearance_for(new_syndicate_commando.gender) + new_syndicate_commando.randomise_appearance_for(new_syndicate_commando.gender) new_syndicate_commando.real_name = "[!syndicate_leader_selected ? syndicate_commando_rank : syndicate_commando_leader_rank] [syndicate_commando_name]" new_syndicate_commando.age = !syndicate_leader_selected ? rand(23,35) : rand(35,45) From 1a43ff322259dba2ab36bba333e1a33b88d84f1f Mon Sep 17 00:00:00 2001 From: Shifty/Anthomansland Date: Sun, 7 Apr 2019 23:42:05 +0200 Subject: [PATCH 07/10] Fixes another runtime --- code/modules/mob/living/carbon/human/appearance.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index f3bdb5f0042..6f6a5955398 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -66,10 +66,7 @@ /mob/living/carbon/human/proc/randomize_hair_color(var/target = "hair") if(prob (75) && target == "facial") // Chance to inherit hair color - my_appearance.r_facial = my_appearance.r_hair - my_appearance.g_facial = my_appearance.g_hair - my_appearance.b_facial = my_appearance.b_hair - return + return list(my_appearance.r_hair, my_appearance.g_hair, my_appearance.b_hair) var/red var/green From 3e499a172c73341c3929fbb5fe3edb7779bcf429 Mon Sep 17 00:00:00 2001 From: Shifty/Anthomansland Date: Sun, 7 Apr 2019 23:58:14 +0200 Subject: [PATCH 08/10] >huamn --- code/modules/mob/living/carbon/human/appearance.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 6f6a5955398..940763868be 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -2,7 +2,7 @@ #define INDEX_GREEN 2 #define INDEX_BLUE 3 -/datum/huamn_appearance +/datum/human_appearance // For identification. var/name var/gender @@ -25,7 +25,7 @@ var/b_eyes /mob/living/carbon/human/ - var/datum/huamn_appearance/my_appearance + var/datum/human_appearance/my_appearance /mob/living/carbon/human/proc/switch_appearance(var/datum/huamn_appearance/new_looks) if (!istype(new_looks)) From 0eb2749e078ec643412351b6d8fa27ebb4ded601 Mon Sep 17 00:00:00 2001 From: Shifty/Anthomansland Date: Mon, 8 Apr 2019 00:03:35 +0200 Subject: [PATCH 09/10] I'm dumb --- code/modules/mob/living/carbon/human/appearance.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 940763868be..c2f7271cd1d 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -27,14 +27,14 @@ /mob/living/carbon/human/ var/datum/human_appearance/my_appearance -/mob/living/carbon/human/proc/switch_appearance(var/datum/huamn_appearance/new_looks) +/mob/living/carbon/human/proc/switch_appearance(var/datum/human_appearance/new_looks) if (!istype(new_looks)) return my_appearance = new_looks regenerate_icons() /mob/living/carbon/human/proc/randomise_appearance_for(var/new_gender) - var/datum/huamn_appearance/appearance = new + var/datum/human_appearance/appearance = new if (new_gender) appearance.gender = new_gender From 5bd205f473fab696462fc6d51df671771fa8201c Mon Sep 17 00:00:00 2001 From: Shifty/Anthomansland Date: Sat, 13 Apr 2019 10:14:48 +0200 Subject: [PATCH 10/10] Go get'em tiger --- code/modules/mob/living/carbon/human/death.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 169249f4149..7cbab9f78f1 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -66,6 +66,7 @@ qdel(vessel) vessel = null + my_appearance = null ..()