diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 1d9a18b54672..5258df6c7423 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -45,6 +45,7 @@ GLOBAL_LIST_EMPTY(caps_list) GLOBAL_LIST_EMPTY(ipc_screens_list) GLOBAL_LIST_EMPTY(ipc_antennas_list) GLOBAL_LIST_EMPTY(ipc_chassis_list) +GLOBAL_LIST_INIT(plasmaman_helmet_list, list("None" = "", "Slit" = "S", "Nyan" = "N", "Gassy" = "G", "Bane" = "B", "Halo" = "H", "Wizard" = "W")) GLOBAL_LIST_EMPTY(ethereal_mark_list) //ethereal face marks GLOBAL_LIST_INIT(color_list_ethereal, list("F Class(Green)" = "97ee63", "F2 Class (Light Green)" = "00fa9a", "F3 Class (Dark Green)" = "37835b", "M Class (Red)" = "9c3030", "M1 Class (Purple)" = "ee82ee", "G Class (Yellow)" = "fbdf56", "O Class (Blue)" = "3399ff", "A Class (Cyan)" = "00ffff")) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 9437f6ac4b8a..617487864761 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -73,7 +73,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/skin_tone = "caucasian1" //Skin color var/eye_color = "000" //Eye color var/datum/species/pref_species = new /datum/species/human() //Mutant race - var/list/features = list("mcolor" = "FFF", "gradientstyle" = "None", "gradientcolor" = "000", "ethcolor" = "9c3030", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", "moth_wings" = "Plain", "tail_polysmorph" = "Polys", "teeth" = "None", "dome" = "None", "dorsal_tubes" = "No", "ethereal_mark" = "None", "pod_hair" = "Cabbage", "pod_flower" = "Cabbage", "ipc_screen" = "Blue", "ipc_antenna" = "None", "ipc_chassis" = "Morpheus Cyberkinetics(Greyscale)") + var/list/features = list("mcolor" = "FFF", "gradientstyle" = "None", "gradientcolor" = "000", "ethcolor" = "9c3030", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", "moth_wings" = "Plain", "tail_polysmorph" = "Polys", "teeth" = "None", "dome" = "None", "dorsal_tubes" = "No", "ethereal_mark" = "None", "pod_hair" = "Cabbage", "pod_flower" = "Cabbage", "ipc_screen" = "Blue", "ipc_antenna" = "None", "ipc_chassis" = "Morpheus Cyberkinetics(Greyscale)","plasmaman_helmet" = "None") var/list/genders = list(MALE, FEMALE, PLURAL) var/list/friendlyGenders = list("Male" = "male", "Female" = "female", "Other" = "plural") @@ -684,6 +684,15 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" mutant_category = 0 + if("plasmaman_helmet" in pref_species.default_features) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN + + dat += "

Helmet Style

" + + dat += "[features["plasmaman_helmet"]]" + dat += "[random_locks["plasmaman_helmet"] ? "Unlock" : "Lock"]
" + if(CONFIG_GET(flag/join_with_mutant_humans)) if("wings" in pref_species.default_features && GLOB.r_wings_list.len >1) @@ -1862,6 +1871,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_ipc_chassis) features["ipc_chassis"] = new_ipc_chassis + + if("plasmaman_helmet") + var/new_plasmaman_helmet + + new_plasmaman_helmet = input(user, "Choose your character's plasmaman helmet style:", "Character Preference") as null|anything in GLOB.plasmaman_helmet_list + if(new_plasmaman_helmet) + features["plasmaman_helmet"] = new_plasmaman_helmet + if("s_tone") var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in GLOB.skin_tones if(new_s_tone) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index aef3c6b4d9c7..28281e3b4f2f 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -48,6 +48,12 @@ var/on = FALSE actions_types = list(/datum/action/item_action/toggle_helmet_light) flash_protect = 0 + var/base_icon_state + var/pref_alteration = TRUE ///set to true if the item will be modified by player's "plasmaman helmet style pref" + +/obj/item/clothing/head/helmet/space/plasmaman/Initialize() + . = ..() + base_icon_state = icon_state /obj/item/clothing/head/helmet/space/plasmaman/attack_self(mob/user) toggle_helmet_light(user) @@ -59,19 +65,32 @@ else set_light(0) - icon_state = "[initial(icon_state)][on ? "-light":""]" + icon_state = "[base_icon_state][on ? "-light":""]" item_state = icon_state user.update_inv_head() for(var/X in actions) var/datum/action/A=X A.UpdateButtonIcon() +/obj/item/clothing/head/helmet/space/plasmaman/proc/set_design(mob/living/carbon/human/user) + if(!pref_alteration) + return + if(!ishuman(user)) + return + var/style = user.dna?.features["plasmaman_helmet"] + if(style && (style in GLOB.plasmaman_helmet_list) && style != "None") + icon_state += "-[GLOB.plasmaman_helmet_list[style]]" + item_state += "-[GLOB.plasmaman_helmet_list[style]]" + base_icon_state = icon_state + user.update_inv_head() + /obj/item/clothing/head/helmet/space/plasmaman/security name = "security envirosuit helmet" desc = "A reinforced envirohelm designed for security personnel, reducing most traditional forms of injury." icon_state = "deathcurity_envirohelm" item_state = "deathcurity_envirohelm" armor = list(MELEE = 35, BULLET = 30, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 100, RAD = 0, FIRE = 100, ACID = 75, WOUND = 10) + pref_alteration = FALSE /obj/item/clothing/head/helmet/space/plasmaman/blue name = "blue envirosuit helmet" @@ -97,16 +116,19 @@ desc = "An ancient envirohelm from the second generation of Nanotrasen-plasmaman related equipment. Clunky, but still sees use due to its reliability." icon_state = "curator_envirohelm" item_state = "curator_envirohelm" + pref_alteration = FALSE /obj/item/clothing/head/helmet/space/plasmaman/mime name = "mime envirosuit helmet" desc = "The make-up is painted on. It's a miracle it doesn't chip. It's not very colourful." icon_state = "mime_envirohelm" item_state = "mime_envirohelm" + pref_alteration = FALSE /obj/item/clothing/head/helmet/space/plasmaman/clown name = "clown envirosuit helmet" desc = "The make-up is painted on. It's a miracle it doesn't chip. 'HONK!'" icon_state = "clown_envirohelm" item_state = "clown_envirohelm" + pref_alteration = FALSE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 4dd3d828c99f..b64aa6674c84 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -8,6 +8,7 @@ // plasmemes get hard to wound since they only need a severe bone wound to dismember, but unlike skellies, they can't pop their bones back into place. inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_GENELESS,TRAIT_NOHUNGER,TRAIT_CALCIUM_HEALER,TRAIT_ALWAYS_CLEAN,TRAIT_HARDLY_WOUNDED) inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID) + default_features = list("plasmaman_helmet") mutantlungs = /obj/item/organ/lungs/plasmaman mutanttongue = /obj/item/organ/tongue/bone/plasmaman mutantliver = /obj/item/organ/liver/plasmaman @@ -168,6 +169,10 @@ H.equipOutfit(O, visualsOnly) H.internal = H.get_item_for_held_index(2) H.update_internals_hud_icon(1) + + var/obj/item/clothing/head/helmet/space/plasmaman/plasmeme_helmet = H.head + plasmeme_helmet.set_design(H) + return 0 /datum/species/plasmaman/random_name(gender,unique,lastname) diff --git a/icons/mob/clothing/head/head.dmi b/icons/mob/clothing/head/head.dmi index f396342c63b7..8de036598a4c 100644 Binary files a/icons/mob/clothing/head/head.dmi and b/icons/mob/clothing/head/head.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 6f8ed4b89257..edd20c9978da 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ