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