diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm
index 20bf0b55cc8..53a1f09fa50 100644
--- a/code/__DEFINES/DNA.dm
+++ b/code/__DEFINES/DNA.dm
@@ -113,3 +113,4 @@
#define EASYLIMBATTACHMENT 23
#define TOXINLOVER 24
#define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi)
+#define NO_UNDERWEAR 26
diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm
index 1205ea6c879..104b86bc061 100644
--- a/code/game/objects/structures/dresser.dm
+++ b/code/game/objects/structures/dresser.dm
@@ -12,6 +12,10 @@
if(ishuman(user))
var/mob/living/carbon/human/H = user
+ if(H.dna && H.dna.species && (NO_UNDERWEAR in H.dna.species.species_traits))
+ to_chat(user, "You are not capable of wearing underwear.")
+ return
+
var/choice = input(user, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in list("Underwear","Undershirt","Socks")
if(!Adjacent(user))
@@ -32,4 +36,4 @@
H.socks= new_socks
add_fingerprint(H)
- H.update_body()
\ No newline at end of file
+ H.update_body()
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 1f340c8c618..ee2e9a84c49 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -355,23 +355,24 @@
standing += eye_overlay
//Underwear, Undershirts & Socks
- if(H.underwear)
- var/datum/sprite_accessory/underwear/underwear = GLOB.underwear_list[H.underwear]
- if(underwear)
- standing += mutable_appearance(underwear.icon, underwear.icon_state, -BODY_LAYER)
+ if(!(NO_UNDERWEAR in species_traits))
+ if(H.underwear)
+ var/datum/sprite_accessory/underwear/underwear = GLOB.underwear_list[H.underwear]
+ if(underwear)
+ standing += mutable_appearance(underwear.icon, underwear.icon_state, -BODY_LAYER)
- if(H.undershirt)
- var/datum/sprite_accessory/undershirt/undershirt = GLOB.undershirt_list[H.undershirt]
- if(undershirt)
- if(H.dna.species.sexes && H.gender == FEMALE)
- standing += wear_female_version(undershirt.icon_state, undershirt.icon, BODY_LAYER)
- else
- standing += mutable_appearance(undershirt.icon, undershirt.icon_state, -BODY_LAYER)
+ if(H.undershirt)
+ var/datum/sprite_accessory/undershirt/undershirt = GLOB.undershirt_list[H.undershirt]
+ if(undershirt)
+ if(H.dna.species.sexes && H.gender == FEMALE)
+ standing += wear_female_version(undershirt.icon_state, undershirt.icon, BODY_LAYER)
+ else
+ standing += mutable_appearance(undershirt.icon, undershirt.icon_state, -BODY_LAYER)
- if(H.socks && H.get_num_legs() >= 2 && !(DIGITIGRADE in species_traits))
- var/datum/sprite_accessory/socks/socks = GLOB.socks_list[H.socks]
- if(socks)
- standing += mutable_appearance(socks.icon, socks.icon_state, -BODY_LAYER)
+ if(H.socks && H.get_num_legs() >= 2 && !(DIGITIGRADE in species_traits))
+ var/datum/sprite_accessory/socks/socks = GLOB.socks_list[H.socks]
+ if(socks)
+ standing += mutable_appearance(socks.icon, socks.icon_state, -BODY_LAYER)
if(standing.len)
H.overlays_standing[BODY_LAYER] = standing
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index fd8b8f4f250..7044bacf50e 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -2,7 +2,7 @@
// Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck.
name = "Golem"
id = "iron golem"
- species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS)
+ species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR)
speedmod = 2
armor = 55
siemens_coeff = 0
@@ -65,7 +65,7 @@
fixed_mut_color = "a3d"
meat = /obj/item/weapon/ore/plasma
//Can burn and takes damage from heat
- species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS)
+ species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR)
info_text = "As a Plasma Golem, you explode on death!"
burnmod = 1.5
prefix = "Plasma"
@@ -194,7 +194,7 @@
fixed_mut_color = "49311c"
meat = /obj/item/stack/sheet/mineral/wood
//Can burn and take damage from heat
- species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS)
+ species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,MUTCOLORS,NO_UNDERWEAR)
armor = 30
burnmod = 1.25
heatmod = 1.5
@@ -504,7 +504,7 @@
limbs_id = "cultgolem"
sexes = FALSE
info_text = "As a Runic Golem, you possess eldritch powers granted by the Elder God Nar'Sie."
- species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER) //no mutcolors
+ species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors
prefix = "Runic"
var/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem/phase_shift
@@ -553,7 +553,7 @@
limbs_id = "clothgolem"
sexes = FALSE
info_text = "As a Cloth Golem, you are able to reform yourself after death, provided your remains aren't burned or destroyed. You are, of course, very flammable."
- species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER) //no mutcolors, and can burn
+ species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors, and can burn
armor = 15 //feels no pain, but not too resistant
burnmod = 2 // don't get burned
speedmod = 1 // not as heavy as stone
@@ -643,4 +643,4 @@
if(P.is_hot())
visible_message("[src] bursts into flames!")
- fire_act()
\ No newline at end of file
+ fire_act()