diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 02d3b8e094..58c568f8a6 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -180,23 +180,7 @@
damaged_clothes = 0
cut_overlay(damaged_clothes_icons[index], TRUE)
-//Glasses
-/obj/item/clothing/glasses
- name = "glasses"
- icon = 'icons/obj/clothing/glasses.dmi'
- w_class = WEIGHT_CLASS_SMALL
- flags_cover = GLASSESCOVERSEYES
- slot_flags = SLOT_EYES
- var/vision_flags = 0
- var/darkness_view = 2//Base human is 2
- var/invis_view = SEE_INVISIBLE_LIVING
- var/invis_override = 0 //Override to allow glasses to set higher than normal see_invis
- var/lighting_alpha
- var/list/icon/current = list() //the current hud icons
- var/vision_correction = 0 //does wearing these glasses correct some of our vision defects?
- strip_delay = 20
- equip_delay_other = 25
- resistance_flags = 0
+
/*
SEE_SELF // can see self, no matter what
SEE_MOBS // can see all mobs, no matter what
@@ -207,455 +191,6 @@ SEE_PIXELS// if an object is located on an unlit area, but some of its pixels ar
BLIND // can't see anything
*/
-
-//Gloves
-/obj/item/clothing/gloves
- name = "gloves"
- gender = PLURAL //Carn: for grammarically correct text-parsing
- w_class = WEIGHT_CLASS_SMALL
- icon = 'icons/obj/clothing/gloves.dmi'
- siemens_coefficient = 0.5
- body_parts_covered = HANDS
- slot_flags = SLOT_GLOVES
- attack_verb = list("challenged")
- var/transfer_prints = FALSE
- strip_delay = 20
- equip_delay_other = 40
-
-
-/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE)
- . = list()
- if(!isinhands)
- if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves")
- if(blood_DNA)
- . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands")
-
-/obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE)
- ..()
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_gloves()
-
-// Called just before an attack_hand(), in mob/UnarmedAttack()
-/obj/item/clothing/gloves/proc/Touch(atom/A, proximity)
- return 0 // return 1 to cancel attack_hand()
-
-//Head
-/obj/item/clothing/head
- name = "head"
- icon = 'icons/obj/clothing/hats.dmi'
- icon_state = "top_hat"
- item_state = "that"
- body_parts_covered = HEAD
- slot_flags = SLOT_HEAD
- var/blockTracking = 0 //For AI tracking
- var/can_toggle = null
- dynamic_hair_suffix = "+generic"
-
-/obj/item/clothing/head/Initialize()
- . = ..()
- if(ishuman(loc) && dynamic_hair_suffix)
- var/mob/living/carbon/human/H = loc
- H.update_hair()
-
-/obj/item/clothing/head/worn_overlays(isinhands = FALSE)
- . = list()
- if(!isinhands)
- if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet")
- if(blood_DNA)
- . += mutable_appearance('icons/effects/blood.dmi', "helmetblood")
-
-/obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE)
- ..()
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_head()
-
-//Neck
-/obj/item/clothing/neck
- name = "necklace"
- icon = 'icons/obj/clothing/neck.dmi'
- body_parts_covered = NECK
- slot_flags = SLOT_NECK
- strip_delay = 40
- equip_delay_other = 40
-
-/obj/item/clothing/neck/worn_overlays(isinhands = FALSE)
- . = list()
- if(!isinhands)
- if(body_parts_covered & HEAD)
- if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
- if(blood_DNA)
- . += mutable_appearance('icons/effects/blood.dmi', "maskblood")
-
-
-//Mask
-/obj/item/clothing/mask
- name = "mask"
- icon = 'icons/obj/clothing/masks.dmi'
- body_parts_covered = HEAD
- slot_flags = SLOT_MASK
- strip_delay = 40
- equip_delay_other = 40
- var/mask_adjusted = 0
- var/adjusted_flags = null
-
-
-/obj/item/clothing/mask/worn_overlays(isinhands = FALSE)
- . = list()
- if(!isinhands)
- if(body_parts_covered & HEAD)
- if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
- if(blood_DNA)
- . += mutable_appearance('icons/effects/blood.dmi', "maskblood")
-
-/obj/item/clothing/mask/update_clothes_damaged_state(damaging = TRUE)
- ..()
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_wear_mask()
-
-//Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption
-/obj/item/clothing/mask/proc/adjustmask(mob/living/user)
- if(user && user.incapacitated())
- return
- mask_adjusted = !mask_adjusted
- if(!mask_adjusted)
- src.icon_state = initial(icon_state)
- gas_transfer_coefficient = initial(gas_transfer_coefficient)
- permeability_coefficient = initial(permeability_coefficient)
- flags_1 |= visor_flags
- flags_inv |= visor_flags_inv
- flags_cover |= visor_flags_cover
- to_chat(user, "You push \the [src] back into place.")
- slot_flags = initial(slot_flags)
- else
- icon_state += "_up"
- to_chat(user, "You push \the [src] out of the way.")
- gas_transfer_coefficient = null
- permeability_coefficient = null
- flags_1 &= ~visor_flags
- flags_inv &= ~visor_flags_inv
- flags_cover &= ~visor_flags_cover
- if(adjusted_flags)
- slot_flags = adjusted_flags
- if(user)
- user.wear_mask_update(src, toggle_off = mask_adjusted)
- user.update_action_buttons_icon() //when mask is adjusted out, we update all buttons icon so the user's potential internal tank correctly shows as off.
-
-
-
-
-//Shoes
-/obj/item/clothing/shoes
- name = "shoes"
- icon = 'icons/obj/clothing/shoes.dmi'
- desc = "Comfortable-looking shoes."
- gender = PLURAL //Carn: for grammarically correct text-parsing
- var/chained = 0
-
- body_parts_covered = FEET
- slot_flags = SLOT_FEET
-
- permeability_coefficient = 0.5
- slowdown = SHOES_SLOWDOWN
- var/blood_state = BLOOD_STATE_NOT_BLOODY
- var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
- var/offset = 0
- var/equipped_before_drop = FALSE
-
-/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE)
- . = list()
- if(!isinhands)
- var/bloody = 0
- if(blood_DNA)
- bloody = 1
- else
- bloody = bloody_shoes[BLOOD_STATE_HUMAN]
-
- if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe")
- if(bloody)
- . += mutable_appearance('icons/effects/blood.dmi', "shoeblood")
-
-/obj/item/clothing/shoes/equipped(mob/user, slot)
- . = ..()
- if(offset && slot_flags & slotdefine2slotbit(slot))
- user.pixel_y += offset
- worn_y_dimension -= (offset * 2)
- user.update_inv_shoes()
- equipped_before_drop = TRUE
-
-/obj/item/clothing/shoes/proc/restore_offsets(mob/user)
- equipped_before_drop = FALSE
- user.pixel_y -= offset
- worn_y_dimension = world.icon_size
-
-/obj/item/clothing/shoes/dropped(mob/user)
- if(offset && equipped_before_drop)
- restore_offsets(user)
- . = ..()
-
-/obj/item/clothing/shoes/update_clothes_damaged_state(damaging = TRUE)
- ..()
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_shoes()
-
-/obj/item/clothing/shoes/clean_blood()
- ..()
- bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
- blood_state = BLOOD_STATE_NOT_BLOODY
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_shoes()
-
-/obj/item/proc/negates_gravity()
- return 0
-
-//Suit
-/obj/item/clothing/suit
- icon = 'icons/obj/clothing/suits.dmi'
- name = "suit"
- var/fire_resist = T0C+100
- allowed = list(/obj/item/tank/internals/emergency_oxygen)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
- slot_flags = SLOT_OCLOTHING
- var/blood_overlay_type = "suit"
- var/togglename = null
-
-
-/obj/item/clothing/suit/worn_overlays(isinhands = FALSE)
- . = list()
- if(!isinhands)
- if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]")
- if(blood_DNA)
- . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood")
- var/mob/living/carbon/human/M = loc
- if(ishuman(M) && M.w_uniform)
- var/obj/item/clothing/under/U = M.w_uniform
- if(istype(U) && U.attached_accessory)
- var/obj/item/clothing/accessory/A = U.attached_accessory
- if(A.above_suit)
- . += U.accessory_overlay
-
-/obj/item/clothing/suit/update_clothes_damaged_state(damaging = TRUE)
- ..()
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_wear_suit()
-
-//Spacesuit
-//Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together.
-// Meaning the the suit is defined directly after the corrisponding helmet. Just like below!
-/obj/item/clothing/head/helmet/space
- name = "space helmet"
- icon_state = "spaceold"
- desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays."
- flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1
- item_state = "spaceold"
- permeability_coefficient = 0.01
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70)
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
- dynamic_hair_suffix = ""
- dynamic_fhair_suffix = ""
- cold_protection = HEAD
- min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
- heat_protection = HEAD
- max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
- flash_protect = 2
- strip_delay = 50
- equip_delay_other = 50
- flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
- resistance_flags = 0
- dog_fashion = null
-
-/obj/item/clothing/suit/space
- name = "space suit"
- desc = "A suit that protects against low pressure environments. Has a big 13 on the back."
- icon_state = "spaceold"
- item_state = "s_suit"
- w_class = WEIGHT_CLASS_BULKY
- gas_transfer_coefficient = 0.01
- permeability_coefficient = 0.02
- flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1
- body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals)
- slowdown = 1
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70)
- flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
- cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
- min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
- heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
- strip_delay = 80
- equip_delay_other = 80
- resistance_flags = 0
-
-//Under clothing
-
-/obj/item/clothing/under
- icon = 'icons/obj/clothing/uniforms.dmi'
- name = "under"
- body_parts_covered = CHEST|GROIN|LEGS|ARMS
- permeability_coefficient = 0.9
- slot_flags = SLOT_ICLOTHING
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
- var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women
- var/has_sensor = HAS_SENSORS // For the crew computer
- var/random_sensor = 1
- var/sensor_mode = NO_SENSORS
- var/can_adjust = 1
- var/adjusted = NORMAL_STYLE
- var/alt_covers_chest = 0 // for adjusted/rolled-down jumpsuits, 0 = exposes chest and arms, 1 = exposes arms only
- var/obj/item/clothing/accessory/attached_accessory
- var/mutable_appearance/accessory_overlay
- var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to.
-
-/obj/item/clothing/under/worn_overlays(isinhands = FALSE)
- . = list()
- if(!isinhands)
-
- if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform")
- if(blood_DNA)
- . += mutable_appearance('icons/effects/blood.dmi', "uniformblood")
- if(accessory_overlay)
- . += accessory_overlay
-
-/obj/item/clothing/under/attackby(obj/item/I, mob/user, params)
- if((has_sensor == BROKEN_SENSORS) && istype(I, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/C = I
- C.use(1)
- has_sensor = HAS_SENSORS
- to_chat(user,"You repair the suit sensors on [src] with [C].")
- return 1
- if(!attach_accessory(I, user))
- return ..()
-
-/obj/item/clothing/under/update_clothes_damaged_state(damaging = TRUE)
- ..()
- if(ismob(loc))
- var/mob/M = loc
- M.update_inv_w_uniform()
- if(has_sensor > NO_SENSORS)
- has_sensor = BROKEN_SENSORS
-
-/obj/item/clothing/under/New()
- if(random_sensor)
- //make the sensor mode favor higher levels, except coords.
- sensor_mode = pick(SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS, SENSOR_COORDS)
- adjusted = NORMAL_STYLE
- ..()
-
-/obj/item/clothing/under/equipped(mob/user, slot)
- ..()
- if(adjusted)
- adjusted = NORMAL_STYLE
- fitted = initial(fitted)
- if(!alt_covers_chest)
- body_parts_covered |= CHEST
-
- if(mutantrace_variation && ishuman(user))
- var/mob/living/carbon/human/H = user
- if(DIGITIGRADE in H.dna.species.species_traits)
- adjusted = DIGITIGRADE_STYLE
- H.update_inv_w_uniform()
-
- if(attached_accessory && slot != slot_hands && ishuman(user))
- var/mob/living/carbon/human/H = user
- attached_accessory.on_uniform_equip(src, user)
- if(attached_accessory.above_suit)
- H.update_inv_wear_suit()
-
-/obj/item/clothing/under/dropped(mob/user)
- if(attached_accessory)
- attached_accessory.on_uniform_dropped(src, user)
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- if(attached_accessory.above_suit)
- H.update_inv_wear_suit()
-
- ..()
-
-/obj/item/clothing/under/proc/attach_accessory(obj/item/I, mob/user, notifyAttach = 1)
- . = FALSE
- if(istype(I, /obj/item/clothing/accessory))
- var/obj/item/clothing/accessory/A = I
- if(attached_accessory)
- if(user)
- to_chat(user, "[src] already has an accessory.")
- return
- else
- if(user && !user.temporarilyRemoveItemFromInventory(I))
- return
- if(!A.attach(src, user))
- return
-
- if(user && notifyAttach)
- to_chat(user, "You attach [I] to [src].")
-
- var/accessory_color = attached_accessory.item_color
- if(!accessory_color)
- accessory_color = attached_accessory.icon_state
- accessory_overlay = mutable_appearance('icons/mob/accessories.dmi', "[accessory_color]")
- accessory_overlay.alpha = attached_accessory.alpha
- accessory_overlay.color = attached_accessory.color
-
- if(ishuman(loc))
- var/mob/living/carbon/human/H = loc
- H.update_inv_w_uniform()
- H.update_inv_wear_suit()
-
- return TRUE
-
-/obj/item/clothing/under/proc/remove_accessory(mob/user)
- if(!isliving(user))
- return
- if(!can_use(user))
- return
-
- if(attached_accessory)
- var/obj/item/clothing/accessory/A = attached_accessory
- attached_accessory.detach(src, user)
- if(user.put_in_hands(A))
- to_chat(user, "You detach [A] from [src].")
- else
- to_chat(user, "You detach [A] from [src] and it falls on the floor.")
-
- if(ishuman(loc))
- var/mob/living/carbon/human/H = loc
- H.update_inv_w_uniform()
- H.update_inv_wear_suit()
-
-
-/obj/item/clothing/under/examine(mob/user)
- ..()
- if(can_adjust)
- if(adjusted == ALT_STYLE)
- to_chat(user, "Alt-click on [src] to wear it normally.")
- else
- to_chat(user, "Alt-click on [src] to wear it casually.")
- if (has_sensor == BROKEN_SENSORS)
- to_chat(user, "Its sensors appear to be shorted out.")
- else if(has_sensor > NO_SENSORS)
- switch(sensor_mode)
- if(SENSOR_OFF)
- to_chat(user, "Its sensors appear to be disabled.")
- if(SENSOR_LIVING)
- to_chat(user, "Its binary life sensors appear to be enabled.")
- if(SENSOR_VITALS)
- to_chat(user, "Its vital tracker appears to be enabled.")
- if(SENSOR_COORDS)
- to_chat(user, "Its vital tracker and tracking beacon appear to be enabled.")
- if(attached_accessory)
- to_chat(user, "\A [attached_accessory] is attached to it.")
-
/proc/generate_female_clothing(index,t_color,icon,type)
var/icon/female_clothing_icon = icon("icon"=icon, "icon_state"=t_color)
var/icon/female_s = icon("icon"='icons/mob/uniform.dmi', "icon_state"="[(type == FEMALE_UNIFORM_FULL) ? "female_full" : "female_top"]")
@@ -799,4 +334,4 @@ BLIND // can't see anything
Shreds.desc = "The sad remains of what used to be [name]."
deconstruct(FALSE)
else
- ..()
+ ..()
\ No newline at end of file
diff --git a/code/modules/clothing/ears/ears.dm b/code/modules/clothing/ears/_ears.dm
similarity index 100%
rename from code/modules/clothing/ears/ears.dm
rename to code/modules/clothing/ears/_ears.dm
diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/_glasses.dm
similarity index 92%
rename from code/modules/clothing/glasses/glasses.dm
rename to code/modules/clothing/glasses/_glasses.dm
index fb7abd7622..1263c07a91 100644
--- a/code/modules/clothing/glasses/glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -1,7 +1,22 @@
+//Glasses
/obj/item/clothing/glasses
name = "glasses"
+ icon = 'icons/obj/clothing/glasses.dmi'
+ w_class = WEIGHT_CLASS_SMALL
+ flags_cover = GLASSESCOVERSEYES
+ slot_flags = SLOT_EYES
+ strip_delay = 20
+ equip_delay_other = 25
+ resistance_flags = 0
materials = list(MAT_GLASS = 250)
- var/glass_colour_type = null //colors your vision when worn
+ var/vision_flags = 0
+ var/darkness_view = 2//Base human is 2
+ var/invis_view = SEE_INVISIBLE_LIVING
+ var/invis_override = 0 //Override to allow glasses to set higher than normal see_invis
+ var/lighting_alpha
+ var/list/icon/current = list() //the current hud icons
+ var/vision_correction = 0 //does wearing these glasses correct some of our vision defects?
+ var/glass_colour_type //colors your vision when worn
/obj/item/clothing/glasses/examine(mob/user)
..()
diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm
new file mode 100644
index 0000000000..c230b14295
--- /dev/null
+++ b/code/modules/clothing/gloves/_gloves.dm
@@ -0,0 +1,31 @@
+/obj/item/clothing/gloves
+ name = "gloves"
+ gender = PLURAL //Carn: for grammarically correct text-parsing
+ w_class = WEIGHT_CLASS_SMALL
+ icon = 'icons/obj/clothing/gloves.dmi'
+ siemens_coefficient = 0.5
+ body_parts_covered = HANDS
+ slot_flags = SLOT_GLOVES
+ attack_verb = list("challenged")
+ var/transfer_prints = FALSE
+ strip_delay = 20
+ equip_delay_other = 40
+
+
+/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE)
+ . = list()
+ if(!isinhands)
+ if(damaged_clothes)
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves")
+ if(blood_DNA)
+ . += mutable_appearance('icons/effects/blood.dmi', "bloodyhands")
+
+/obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE)
+ ..()
+ if(ismob(loc))
+ var/mob/M = loc
+ M.update_inv_gloves()
+
+// Called just before an attack_hand(), in mob/UnarmedAttack()
+/obj/item/clothing/gloves/proc/Touch(atom/A, proximity)
+ return 0 // return 1 to cancel attack_hand()
\ No newline at end of file
diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm
new file mode 100644
index 0000000000..8bc8f12dec
--- /dev/null
+++ b/code/modules/clothing/head/_head.dm
@@ -0,0 +1,30 @@
+/obj/item/clothing/head
+ name = "head"
+ icon = 'icons/obj/clothing/hats.dmi'
+ icon_state = "top_hat"
+ item_state = "that"
+ body_parts_covered = HEAD
+ slot_flags = SLOT_HEAD
+ var/blockTracking = 0 //For AI tracking
+ var/can_toggle = null
+ dynamic_hair_suffix = "+generic"
+
+/obj/item/clothing/head/Initialize()
+ . = ..()
+ if(ishuman(loc) && dynamic_hair_suffix)
+ var/mob/living/carbon/human/H = loc
+ H.update_hair()
+
+/obj/item/clothing/head/worn_overlays(isinhands = FALSE)
+ . = list()
+ if(!isinhands)
+ if(damaged_clothes)
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet")
+ if(blood_DNA)
+ . += mutable_appearance('icons/effects/blood.dmi', "helmetblood")
+
+/obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE)
+ ..()
+ if(ismob(loc))
+ var/mob/M = loc
+ M.update_inv_head()
\ No newline at end of file
diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm
new file mode 100644
index 0000000000..eacfa3faea
--- /dev/null
+++ b/code/modules/clothing/masks/_masks.dm
@@ -0,0 +1,53 @@
+/obj/item/clothing/mask
+ name = "mask"
+ icon = 'icons/obj/clothing/masks.dmi'
+ body_parts_covered = HEAD
+ slot_flags = SLOT_MASK
+ strip_delay = 40
+ equip_delay_other = 40
+ var/mask_adjusted = 0
+ var/adjusted_flags = null
+
+
+/obj/item/clothing/mask/worn_overlays(isinhands = FALSE)
+ . = list()
+ if(!isinhands)
+ if(body_parts_covered & HEAD)
+ if(damaged_clothes)
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
+ if(blood_DNA)
+ . += mutable_appearance('icons/effects/blood.dmi', "maskblood")
+
+/obj/item/clothing/mask/update_clothes_damaged_state(damaging = TRUE)
+ ..()
+ if(ismob(loc))
+ var/mob/M = loc
+ M.update_inv_wear_mask()
+
+//Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption
+/obj/item/clothing/mask/proc/adjustmask(mob/living/user)
+ if(user && user.incapacitated())
+ return
+ mask_adjusted = !mask_adjusted
+ if(!mask_adjusted)
+ src.icon_state = initial(icon_state)
+ gas_transfer_coefficient = initial(gas_transfer_coefficient)
+ permeability_coefficient = initial(permeability_coefficient)
+ flags_1 |= visor_flags
+ flags_inv |= visor_flags_inv
+ flags_cover |= visor_flags_cover
+ to_chat(user, "You push \the [src] back into place.")
+ slot_flags = initial(slot_flags)
+ else
+ icon_state += "_up"
+ to_chat(user, "You push \the [src] out of the way.")
+ gas_transfer_coefficient = null
+ permeability_coefficient = null
+ flags_1 &= ~visor_flags
+ flags_inv &= ~visor_flags_inv
+ flags_cover &= ~visor_flags_cover
+ if(adjusted_flags)
+ slot_flags = adjusted_flags
+ if(user)
+ user.wear_mask_update(src, toggle_off = mask_adjusted)
+ user.update_action_buttons_icon() //when mask is adjusted out, we update all buttons icon so the user's potential internal tank correctly shows as off.
\ No newline at end of file
diff --git a/code/modules/clothing/neck/neck.dm b/code/modules/clothing/neck/_neck.dm
similarity index 91%
rename from code/modules/clothing/neck/neck.dm
rename to code/modules/clothing/neck/_neck.dm
index af3049aefd..74e2f70c37 100644
--- a/code/modules/clothing/neck/neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -1,3 +1,20 @@
+/obj/item/clothing/neck
+ name = "necklace"
+ icon = 'icons/obj/clothing/neck.dmi'
+ body_parts_covered = NECK
+ slot_flags = SLOT_NECK
+ strip_delay = 40
+ equip_delay_other = 40
+
+/obj/item/clothing/neck/worn_overlays(isinhands = FALSE)
+ . = list()
+ if(!isinhands)
+ if(body_parts_covered & HEAD)
+ if(damaged_clothes)
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
+ if(blood_DNA)
+ . += mutable_appearance('icons/effects/blood.dmi', "maskblood")
+
/obj/item/clothing/neck/tie
name = "tie"
desc = "A neosilk clip-on tie."
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
new file mode 100644
index 0000000000..d71827df95
--- /dev/null
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -0,0 +1,65 @@
+/obj/item/clothing/shoes
+ name = "shoes"
+ icon = 'icons/obj/clothing/shoes.dmi'
+ desc = "Comfortable-looking shoes."
+ gender = PLURAL //Carn: for grammarically correct text-parsing
+ var/chained = 0
+
+ body_parts_covered = FEET
+ slot_flags = SLOT_FEET
+
+ permeability_coefficient = 0.5
+ slowdown = SHOES_SLOWDOWN
+ var/blood_state = BLOOD_STATE_NOT_BLOODY
+ var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
+ var/offset = 0
+ var/equipped_before_drop = FALSE
+
+/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE)
+ . = list()
+ if(!isinhands)
+ var/bloody = 0
+ if(blood_DNA)
+ bloody = 1
+ else
+ bloody = bloody_shoes[BLOOD_STATE_HUMAN]
+
+ if(damaged_clothes)
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe")
+ if(bloody)
+ . += mutable_appearance('icons/effects/blood.dmi', "shoeblood")
+
+/obj/item/clothing/shoes/equipped(mob/user, slot)
+ . = ..()
+ if(offset && slot_flags & slotdefine2slotbit(slot))
+ user.pixel_y += offset
+ worn_y_dimension -= (offset * 2)
+ user.update_inv_shoes()
+ equipped_before_drop = TRUE
+
+/obj/item/clothing/shoes/proc/restore_offsets(mob/user)
+ equipped_before_drop = FALSE
+ user.pixel_y -= offset
+ worn_y_dimension = world.icon_size
+
+/obj/item/clothing/shoes/dropped(mob/user)
+ if(offset && equipped_before_drop)
+ restore_offsets(user)
+ . = ..()
+
+/obj/item/clothing/shoes/update_clothes_damaged_state(damaging = TRUE)
+ ..()
+ if(ismob(loc))
+ var/mob/M = loc
+ M.update_inv_shoes()
+
+/obj/item/clothing/shoes/clean_blood()
+ ..()
+ bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
+ blood_state = BLOOD_STATE_NOT_BLOODY
+ if(ismob(loc))
+ var/mob/M = loc
+ M.update_inv_shoes()
+
+/obj/item/proc/negates_gravity()
+ return 0
\ No newline at end of file
diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm
new file mode 100644
index 0000000000..32caa3adf4
--- /dev/null
+++ b/code/modules/clothing/spacesuits/_spacesuits.dm
@@ -0,0 +1,45 @@
+//Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together.
+// Meaning the the suit is defined directly after the corrisponding helmet. Just like below!
+/obj/item/clothing/head/helmet/space
+ name = "space helmet"
+ icon_state = "spaceold"
+ desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays."
+ flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1
+ item_state = "spaceold"
+ permeability_coefficient = 0.01
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70)
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+ dynamic_hair_suffix = ""
+ dynamic_fhair_suffix = ""
+ cold_protection = HEAD
+ min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
+ heat_protection = HEAD
+ max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
+ flash_protect = 2
+ strip_delay = 50
+ equip_delay_other = 50
+ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
+ resistance_flags = 0
+ dog_fashion = null
+
+/obj/item/clothing/suit/space
+ name = "space suit"
+ desc = "A suit that protects against low pressure environments. Has a big 13 on the back."
+ icon_state = "spaceold"
+ item_state = "s_suit"
+ w_class = WEIGHT_CLASS_BULKY
+ gas_transfer_coefficient = 0.01
+ permeability_coefficient = 0.02
+ flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1
+ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
+ allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals)
+ slowdown = 1
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70)
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
+ min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
+ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
+ max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
+ strip_delay = 80
+ equip_delay_other = 80
+ resistance_flags = 0
\ No newline at end of file
diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm
new file mode 100644
index 0000000000..e934b77f38
--- /dev/null
+++ b/code/modules/clothing/suits/_suits.dm
@@ -0,0 +1,31 @@
+/obj/item/clothing/suit
+ icon = 'icons/obj/clothing/suits.dmi'
+ name = "suit"
+ var/fire_resist = T0C+100
+ allowed = list(/obj/item/tank/internals/emergency_oxygen)
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ slot_flags = SLOT_OCLOTHING
+ var/blood_overlay_type = "suit"
+ var/togglename = null
+
+
+/obj/item/clothing/suit/worn_overlays(isinhands = FALSE)
+ . = list()
+ if(!isinhands)
+ if(damaged_clothes)
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]")
+ if(blood_DNA)
+ . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood")
+ var/mob/living/carbon/human/M = loc
+ if(ishuman(M) && M.w_uniform)
+ var/obj/item/clothing/under/U = M.w_uniform
+ if(istype(U) && U.attached_accessory)
+ var/obj/item/clothing/accessory/A = U.attached_accessory
+ if(A.above_suit)
+ . += U.accessory_overlay
+
+/obj/item/clothing/suit/update_clothes_damaged_state(damaging = TRUE)
+ ..()
+ if(ismob(loc))
+ var/mob/M = loc
+ M.update_inv_wear_suit()
\ No newline at end of file
diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm
new file mode 100644
index 0000000000..33eeb03c7e
--- /dev/null
+++ b/code/modules/clothing/under/_under.dm
@@ -0,0 +1,156 @@
+/obj/item/clothing/under
+ icon = 'icons/obj/clothing/uniforms.dmi'
+ name = "under"
+ body_parts_covered = CHEST|GROIN|LEGS|ARMS
+ permeability_coefficient = 0.9
+ slot_flags = SLOT_ICLOTHING
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women
+ var/has_sensor = HAS_SENSORS // For the crew computer
+ var/random_sensor = 1
+ var/sensor_mode = NO_SENSORS
+ var/can_adjust = 1
+ var/adjusted = NORMAL_STYLE
+ var/alt_covers_chest = 0 // for adjusted/rolled-down jumpsuits, 0 = exposes chest and arms, 1 = exposes arms only
+ var/obj/item/clothing/accessory/attached_accessory
+ var/mutable_appearance/accessory_overlay
+ var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to.
+
+/obj/item/clothing/under/worn_overlays(isinhands = FALSE)
+ . = list()
+ if(!isinhands)
+
+ if(damaged_clothes)
+ . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform")
+ if(blood_DNA)
+ . += mutable_appearance('icons/effects/blood.dmi', "uniformblood")
+ if(accessory_overlay)
+ . += accessory_overlay
+
+/obj/item/clothing/under/attackby(obj/item/I, mob/user, params)
+ if((has_sensor == BROKEN_SENSORS) && istype(I, /obj/item/stack/cable_coil))
+ var/obj/item/stack/cable_coil/C = I
+ C.use(1)
+ has_sensor = HAS_SENSORS
+ to_chat(user,"You repair the suit sensors on [src] with [C].")
+ return 1
+ if(!attach_accessory(I, user))
+ return ..()
+
+/obj/item/clothing/under/update_clothes_damaged_state(damaging = TRUE)
+ ..()
+ if(ismob(loc))
+ var/mob/M = loc
+ M.update_inv_w_uniform()
+ if(has_sensor > NO_SENSORS)
+ has_sensor = BROKEN_SENSORS
+
+/obj/item/clothing/under/New()
+ if(random_sensor)
+ //make the sensor mode favor higher levels, except coords.
+ sensor_mode = pick(SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS, SENSOR_COORDS)
+ adjusted = NORMAL_STYLE
+ ..()
+
+/obj/item/clothing/under/equipped(mob/user, slot)
+ ..()
+ if(adjusted)
+ adjusted = NORMAL_STYLE
+ fitted = initial(fitted)
+ if(!alt_covers_chest)
+ body_parts_covered |= CHEST
+
+ if(mutantrace_variation && ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(DIGITIGRADE in H.dna.species.species_traits)
+ adjusted = DIGITIGRADE_STYLE
+ H.update_inv_w_uniform()
+
+ if(attached_accessory && slot != slot_hands && ishuman(user))
+ var/mob/living/carbon/human/H = user
+ attached_accessory.on_uniform_equip(src, user)
+ if(attached_accessory.above_suit)
+ H.update_inv_wear_suit()
+
+/obj/item/clothing/under/dropped(mob/user)
+ if(attached_accessory)
+ attached_accessory.on_uniform_dropped(src, user)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(attached_accessory.above_suit)
+ H.update_inv_wear_suit()
+
+ ..()
+
+/obj/item/clothing/under/proc/attach_accessory(obj/item/I, mob/user, notifyAttach = 1)
+ . = FALSE
+ if(istype(I, /obj/item/clothing/accessory))
+ var/obj/item/clothing/accessory/A = I
+ if(attached_accessory)
+ if(user)
+ to_chat(user, "[src] already has an accessory.")
+ return
+ else
+ if(user && !user.temporarilyRemoveItemFromInventory(I))
+ return
+ if(!A.attach(src, user))
+ return
+
+ if(user && notifyAttach)
+ to_chat(user, "You attach [I] to [src].")
+
+ var/accessory_color = attached_accessory.item_color
+ if(!accessory_color)
+ accessory_color = attached_accessory.icon_state
+ accessory_overlay = mutable_appearance('icons/mob/accessories.dmi', "[accessory_color]")
+ accessory_overlay.alpha = attached_accessory.alpha
+ accessory_overlay.color = attached_accessory.color
+
+ if(ishuman(loc))
+ var/mob/living/carbon/human/H = loc
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+
+ return TRUE
+
+/obj/item/clothing/under/proc/remove_accessory(mob/user)
+ if(!isliving(user))
+ return
+ if(!can_use(user))
+ return
+
+ if(attached_accessory)
+ var/obj/item/clothing/accessory/A = attached_accessory
+ attached_accessory.detach(src, user)
+ if(user.put_in_hands(A))
+ to_chat(user, "You detach [A] from [src].")
+ else
+ to_chat(user, "You detach [A] from [src] and it falls on the floor.")
+
+ if(ishuman(loc))
+ var/mob/living/carbon/human/H = loc
+ H.update_inv_w_uniform()
+ H.update_inv_wear_suit()
+
+
+/obj/item/clothing/under/examine(mob/user)
+ ..()
+ if(can_adjust)
+ if(adjusted == ALT_STYLE)
+ to_chat(user, "Alt-click on [src] to wear it normally.")
+ else
+ to_chat(user, "Alt-click on [src] to wear it casually.")
+ if (has_sensor == BROKEN_SENSORS)
+ to_chat(user, "Its sensors appear to be shorted out.")
+ else if(has_sensor > NO_SENSORS)
+ switch(sensor_mode)
+ if(SENSOR_OFF)
+ to_chat(user, "Its sensors appear to be disabled.")
+ if(SENSOR_LIVING)
+ to_chat(user, "Its binary life sensors appear to be enabled.")
+ if(SENSOR_VITALS)
+ to_chat(user, "Its vital tracker appears to be enabled.")
+ if(SENSOR_COORDS)
+ to_chat(user, "Its vital tracker and tracking beacon appear to be enabled.")
+ if(attached_accessory)
+ to_chat(user, "\A [attached_accessory] is attached to it.")
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index 6c81456840..06341d7411 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1262,15 +1262,23 @@
#include "code\modules\client\verbs\who.dm"
#include "code\modules\clothing\chameleon.dm"
#include "code\modules\clothing\clothing.dm"
-#include "code\modules\clothing\ears\ears.dm"
+#include "code\modules\clothing\ears\_ears.dm"
+#include "code\modules\clothing\glasses\_glasses.dm"
#include "code\modules\clothing\glasses\engine_goggles.dm"
-#include "code\modules\clothing\glasses\glasses.dm"
#include "code\modules\clothing\glasses\hud.dm"
+<<<<<<< HEAD
#include "code\modules\clothing\glasses\vg_glasses.dm"
#include "code\modules\clothing\gloves\boxing.dm"
#include "code\modules\clothing\gloves\color.dm"
#include "code\modules\clothing\gloves\miscellaneous.dm"
#include "code\modules\clothing\gloves\vg_gloves.dm"
+=======
+#include "code\modules\clothing\gloves\_gloves.dm"
+#include "code\modules\clothing\gloves\boxing.dm"
+#include "code\modules\clothing\gloves\color.dm"
+#include "code\modules\clothing\gloves\miscellaneous.dm"
+#include "code\modules\clothing\head\_head.dm"
+>>>>>>> f910aa9... Merge pull request #31960 from lzimann/split
#include "code\modules\clothing\head\beanie.dm"
#include "code\modules\clothing\head\cit_hats.dm"
#include "code\modules\clothing\head\collectable.dm"
@@ -1280,29 +1288,46 @@
#include "code\modules\clothing\head\misc.dm"
#include "code\modules\clothing\head\misc_special.dm"
#include "code\modules\clothing\head\soft_caps.dm"
+<<<<<<< HEAD
#include "code\modules\clothing\head\vg_hats.dm"
+=======
+#include "code\modules\clothing\masks\_masks.dm"
+>>>>>>> f910aa9... Merge pull request #31960 from lzimann/split
#include "code\modules\clothing\masks\boxing.dm"
#include "code\modules\clothing\masks\breath.dm"
#include "code\modules\clothing\masks\gasmask.dm"
#include "code\modules\clothing\masks\hailer.dm"
#include "code\modules\clothing\masks\miscellaneous.dm"
+<<<<<<< HEAD
#include "code\modules\clothing\masks\vg_masks.dm"
#include "code\modules\clothing\neck\neck.dm"
+=======
+#include "code\modules\clothing\neck\_neck.dm"
+>>>>>>> f910aa9... Merge pull request #31960 from lzimann/split
#include "code\modules\clothing\outfits\ert.dm"
#include "code\modules\clothing\outfits\event.dm"
#include "code\modules\clothing\outfits\standard.dm"
+#include "code\modules\clothing\shoes\_shoes.dm"
#include "code\modules\clothing\shoes\bananashoes.dm"
#include "code\modules\clothing\shoes\colour.dm"
#include "code\modules\clothing\shoes\magboots.dm"
#include "code\modules\clothing\shoes\miscellaneous.dm"
+<<<<<<< HEAD
#include "code\modules\clothing\shoes\vg_shoes.dm"
+=======
+#include "code\modules\clothing\spacesuits\_spacesuits.dm"
+>>>>>>> f910aa9... Merge pull request #31960 from lzimann/split
#include "code\modules\clothing\spacesuits\chronosuit.dm"
#include "code\modules\clothing\spacesuits\flightsuit.dm"
#include "code\modules\clothing\spacesuits\hardsuit.dm"
#include "code\modules\clothing\spacesuits\miscellaneous.dm"
#include "code\modules\clothing\spacesuits\plasmamen.dm"
#include "code\modules\clothing\spacesuits\syndi.dm"
+<<<<<<< HEAD
#include "code\modules\clothing\spacesuits\vg_spess.dm"
+=======
+#include "code\modules\clothing\suits\_suits.dm"
+>>>>>>> f910aa9... Merge pull request #31960 from lzimann/split
#include "code\modules\clothing\suits\armor.dm"
#include "code\modules\clothing\suits\bio.dm"
#include "code\modules\clothing\suits\cloaks.dm"
@@ -1313,6 +1338,7 @@
#include "code\modules\clothing\suits\utility.dm"
#include "code\modules\clothing\suits\vg_suits.dm"
#include "code\modules\clothing\suits\wiz_robe.dm"
+#include "code\modules\clothing\under\_under.dm"
#include "code\modules\clothing\under\accessories.dm"
#include "code\modules\clothing\under\color.dm"
#include "code\modules\clothing\under\miscellaneous.dm"