diff --git a/GainStation13/code/mechanics/helplessness.dm b/GainStation13/code/mechanics/helplessness.dm
index 2de149b3c8..fe88e9af97 100644
--- a/GainStation13/code/mechanics/helplessness.dm
+++ b/GainStation13/code/mechanics/helplessness.dm
@@ -9,7 +9,7 @@
to_chat(H, "You are too fat to wear anything on your back.")
return FALSE
- if(!istype(I, /obj/item/clothing/under/color/grey/modular) && HAS_TRAIT(H, TRAIT_NO_JUMPSUIT) && slot == ITEM_SLOT_ICLOTHING)
+ if(HAS_TRAIT(H, TRAIT_NO_JUMPSUIT) && slot == ITEM_SLOT_ICLOTHING)
to_chat(H, "You are too fat to wear [I].")
return FALSE
diff --git a/GainStation13/code/modules/client/loadout/uniform.dm b/GainStation13/code/modules/client/loadout/uniform.dm
deleted file mode 100644
index acaba42d3c..0000000000
--- a/GainStation13/code/modules/client/loadout/uniform.dm
+++ /dev/null
@@ -1,3 +0,0 @@
-/datum/gear/uniform/modularjumpsuit
- name = "Modular Jumpsuit (gray)"
- path = /obj/item/clothing/under/color/grey/modular
diff --git a/GainStation13/code/modules/clothing/under/jobs/clothing.dm b/GainStation13/code/modules/clothing/under/jobs/clothing.dm
deleted file mode 100644
index 8b13789179..0000000000
--- a/GainStation13/code/modules/clothing/under/jobs/clothing.dm
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm
deleted file mode 100644
index 12009977ec..0000000000
--- a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm
+++ /dev/null
@@ -1,185 +0,0 @@
-/obj/item/clothing/under/rank/chef/modular
- name = "cook's modular suit"
- desc = "A suit which is given only to the most hardcore cooks in space. Now adjusts to the match the wearer's size!"
-
- var/mob/living/carbon/U
-
-/obj/item/clothing/under/rank/chef/modular/equipped(mob/user, slot)
- ..()
- U = user
-
-/obj/item/clothing/under/rank/chef/modular/dropped()
- ..()
- U = null
-
-/obj/item/clothing/under/rank/chef/modular/jumpsuit_adjust()
- ..()
- worn_overlays()
-
-/obj/item/clothing/under/rank/chef/modular/worn_overlays(isinhands = FALSE)
- if(!isinhands)
- . = list()
- var/obj/item/organ/O
- var/obj/item/organ/genital/G
- for(O in U.internal_organs)
- if(istype(O, /obj/item/organ/genital/belly))
- G = O
- if(!adjusted)
- if(G.size <= 9) //These need to be removed later, better to cap organ sizes to begin with
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "belly_[G.size]", GENITALS_UNDER_LAYER)
- else
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "belly_9", GENITALS_UNDER_LAYER)
- else
- if(G.size <= 9)
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "belly_[G.size]_d", GENITALS_UNDER_LAYER)
- else
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "belly_9_d", GENITALS_UNDER_LAYER)
- if(istype(O, /obj/item/organ/genital/butt))
- G = O
- if(mutantrace_variation == STYLE_DIGITIGRADE)
- if(G.size <= 10)
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "butt_[G.size]_l", GENITALS_FRONT_LAYER)
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "butt_[G.size]_l_NORTH", GENITALS_FRONT_LAYER)
- else
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "butt_10_l", GENITALS_FRONT_LAYER)
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "butt_10_l_NORTH", GENITALS_FRONT_LAYER)
- else
- if(G.size <= 10)
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "butt_[G.size]", GENITALS_FRONT_LAYER)
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "butt_[G.size]_NORTH", GENITALS_FRONT_LAYER)
- else
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "butt_10", GENITALS_FRONT_LAYER)
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "butt_10_NORTH", GENITALS_FRONT_LAYER)
- if(istype(O, /obj/item/organ/genital/breasts))
- G = O
- if(G.size <= "impossible")
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "breasts_[G.size]", GENITALS_BEHIND_LAYER) //nearest
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "breasts_[G.size]_NORTH", BODY_FRONT_LAYER) //farthest
- else
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "breasts_impossible", GENITALS_BEHIND_LAYER) //nearest
- . += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "breasts_impossible_NORTH", BODY_FRONT_LAYER) //farthest
- if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform")
- if(blood_DNA)
- . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = blood_DNA_to_color())
- if(length(accessory_overlays))
- . += accessory_overlays
-
-/obj/item/clothing/under/color/grey/modular
- name = "grey modular jumpsuit" //change name from base clothes to distinguish them
- desc = "A tasteful grey jumpsuit that reminds you of the good old days. Now adjusts to the match the wearer's size!" //description same as above
-
- var/icon_location = 'GainStation13/icons/mob/modclothes/graymodular.dmi' //Default belly
- var/icon_round_location = 'GainStation13/icons/mob/modclothes/graymodular_round.dmi'
- var/icon_stuffed_location = 'GainStation13/icons/mob/modclothes/graymodular_stuffed.dmi'
- var/mob/living/carbon/U //instance a variable for keeping track of the user
-
-/obj/item/clothing/under/color/grey/modular/equipped(mob/user, slot) //whenever the clothes are in someone's inventory the clothes keep track of who that user is
- ..()
- U = user
-
-/obj/item/clothing/under/color/grey/modular/dropped() //whenever the clothes leave a person's inventory, they forget who held them
- ..()
- U = null
-
-/obj/item/clothing/under/color/grey/modular/jumpsuit_adjust() //when the user adjusts the clothes' style, rebuild the overlays
- ..()
- worn_overlays()
-
-/obj/item/clothing/under/color/grey/modular/worn_overlays(isinhands = FALSE)
- if(U)
- if(!isinhands) //make sure the clothes are being worn and aren't in someone's hands
- . = list()
- var/obj/item/organ/O
- var/obj/item/organ/genital/G
- for(O in U.internal_organs) //check the user for the organs they have
- if(istype(O, /obj/item/organ/genital/belly)) //if that organ is a belly
- G = O //treat that organ as a genital
- // Change to visually update sprite depending on fullness.
- if(ishuman(O.owner))
- // Get mob
- var/mob/living/carbon/human/H = O.owner
- // Check what belly shape the mob has
- var/used_icon_location
- switch(G.shape)
- if("Soft Belly")
- used_icon_location = icon_location
- if("Round Belly")
- used_icon_location = icon_round_location
- var/size = 0
-
- switch(H.fullness)
- if(-100 to FULLNESS_LEVEL_BLOATED) // Normal
- size = G.size
- if(FULLNESS_LEVEL_BLOATED to FULLNESS_LEVEL_BEEG) // Take the stuffed sprite of the same size
- size = G.size
- used_icon_location = icon_stuffed_location
- if(FULLNESS_LEVEL_BEEG to FULLNESS_LEVEL_NOMOREPLZ) // Take the stuffed sprite of size + 1
- size = G.size + 1
- used_icon_location = icon_stuffed_location
- if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY)// Take the stuffed sprite of size + 2
- size = G.size + 2
- used_icon_location = icon_stuffed_location
-
- if(!adjusted) //check the style, if it needs to be the adjusted variants
- if(G.size <= 9+FULLNESS_STUFFED_EXTRA_SPRITE_SIZES) //check that the size is within accepted values, NOTE: these need to be removed later, better to cap organ sizes to begin with. Cap is 9 (max fat stage) + 2 (stuffed stages)
- . += mutable_appearance(used_icon_location, "belly_[size]", GENITALS_FRONT_LAYER) //add, from the clothes' icon file the overlay corresponding to that genital at that size and draw it onto the layer
- else //if not an expected size value, bigger than the max, default to max size
- . += mutable_appearance(used_icon_location, "belly_11", GENITALS_FRONT_LAYER)
- else //use the alternative adjusted sprites
- if(G.size <= 9+FULLNESS_STUFFED_EXTRA_SPRITE_SIZES)
- . += mutable_appearance(used_icon_location, "belly_[size]_d", GENITALS_FRONT_LAYER)
- else
- . += mutable_appearance(used_icon_location, "belly_11_d", GENITALS_FRONT_LAYER)
-
- if(istype(O, /obj/item/organ/genital/butt)) //if that organ is the butt
- G = O
- if(mutantrace_variation == STYLE_DIGITIGRADE) //check if the suit needs to use sprites for digitigrade characters
- if(G.size <= 10)
- . += mutable_appearance(icon_location, "butt_[G.size]_l", GENITALS_FRONT_LAYER)
- . += mutable_appearance(icon_location, "butt_[G.size]_l_NORTH", GENITALS_FRONT_LAYER) //to not adjust overlays every time a character turns, north-facing breasts and bellies are drawn separately, with individual icons
- else //they'll have blank north-facing sprites in the main icon state and the north-facing will be blank on all other sides, and are drawn on different layers
- . += mutable_appearance(icon_location, "butt_10_l", GENITALS_FRONT_LAYER)
- . += mutable_appearance(icon_location, "butt_10_l_NORTH", GENITALS_FRONT_LAYER)
- else //if the character is not digitigrade
- if(G.size <= 10)
- . += mutable_appearance(icon_location, "butt_[G.size]", GENITALS_FRONT_LAYER)
- . += mutable_appearance(icon_location, "butt_[G.size]_NORTH", GENITALS_FRONT_LAYER)
- else
- . += mutable_appearance(icon_location, "butt_10", GENITALS_FRONT_LAYER)
- . += mutable_appearance(icon_location, "butt_10_NORTH", GENITALS_FRONT_LAYER)
- if(istype(O, /obj/item/organ/genital/breasts)) //if the organ is the breasts
- G = O
- if(G.size <= "o")
- . += mutable_appearance(icon_location, "breasts_[G.size]", GENITALS_BEHIND_LAYER)
- . += mutable_appearance(icon_location, "breasts_[G.size]_NORTH", BODY_FRONT_LAYER)
- else
- if(G.size == "huge")
- . += mutable_appearance(icon_location, "breasts_huge", GENITALS_BEHIND_LAYER)
- . += mutable_appearance(icon_location, "breasts_huge_NORTH", BODY_FRONT_LAYER)
- else
- if(G.size == "massive")
- . += mutable_appearance(icon_location, "breasts_massive", GENITALS_BEHIND_LAYER)
- . += mutable_appearance(icon_location, "breasts_massive_NORTH", BODY_FRONT_LAYER)
- else
- if(G.size == "giga")
- . += mutable_appearance(icon_location, "breasts_giga", GENITALS_BEHIND_LAYER)
- . += mutable_appearance(icon_location, "breasts_giga_NORTH", BODY_FRONT_LAYER)
- else
- . += mutable_appearance(icon_location, "breasts_impossible", GENITALS_BEHIND_LAYER)
- . += mutable_appearance(icon_location, "breasts_impossible_NORTH", BODY_FRONT_LAYER)
- if(damaged_clothes)
- . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform")
- if(blood_DNA)
- . += mutable_appearance('icons/effects/blood.dmi', "uniformblood", color = blood_DNA_to_color())
- if(length(accessory_overlays))
- . += accessory_overlays
-
-
-/obj/item/clothing/under/color/grey/modular/bra
- name = "grey modular bra"
- desc = "A tasteful grey bra that reminds you of the good old days. Now adjusts to the match the wearer's size!"
- icon_location = 'GainStation13/icons/mob/modclothes/graymodular_bra.dmi'
- icon_state = "grey"
- item_state = "grey_bra"
-// item_color = "grey_bra"
diff --git a/GainStation13/code/modules/clothing/under/jobs/modular_items.dm b/GainStation13/code/modules/clothing/under/jobs/modular_items.dm
new file mode 100644
index 0000000000..0f43930b85
--- /dev/null
+++ b/GainStation13/code/modules/clothing/under/jobs/modular_items.dm
@@ -0,0 +1,178 @@
+/mob/living/carbon
+ var/modular_items = list()
+
+/mob/living/carbon/adjust_fatness(adjustment_amount, type_of_fattening = FATTENING_TYPE_ITEM)
+ ..()
+ for(var/obj/item/item in modular_items)
+ item.update_modular_overlays(src)
+
+/obj/item
+ var/modular_icon_location = null
+ var/mod_overlays = list()
+
+/obj/item/equipped(mob/user, slot)
+ if(modular_icon_location != null && slot == slot_flags) //if(slot == ITEM_SLOT_ICLOTHING)
+ update_modular_overlays(user)
+ ..()
+
+/obj/item/dropped(mob/user)
+ remove_modular_overlays(user)
+ ..()
+
+/obj/item/proc/add_modular_overlay(mob/living/carbon/U, modular_icon, modular_layer, sprite_color)
+ var/mutable_appearance/mod_overlay = mutable_appearance(modular_icon_location, modular_icon, -(modular_layer), color = sprite_color)
+ mod_overlays += mod_overlay
+ U.overlays_standing[modular_layer] = mod_overlay
+ U.apply_overlay(modular_layer)
+
+/obj/item/proc/get_modular_belly(obj/item/organ/genital/G)
+ return "belly_[get_belly_size(G)][get_belly_alt()]"
+
+/obj/item/proc/get_belly_size(obj/item/organ/genital/G)
+ var/size = G.size
+ if(G.size > 9)
+ size = 9
+ var/shape
+ if(G.owner.fullness <= FULLNESS_LEVEL_BLOATED)
+ switch(G.shape)
+ if("Soft Belly")
+ shape = "soft"
+ if("Round Belly")
+ shape = "round"
+ else
+ shape = "stuffed"
+ var/stuffed_modifier
+ switch(G.owner.fullness)
+ if(FULLNESS_LEVEL_BLOATED to FULLNESS_LEVEL_BEEG) // Take the stuffed sprite of the same size
+ stuffed_modifier = 0
+ if(FULLNESS_LEVEL_BEEG to FULLNESS_LEVEL_NOMOREPLZ) // Take the stuffed sprite of size + 1
+ stuffed_modifier = 1
+ if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY)// Take the stuffed sprite of size + 2
+ stuffed_modifier = 2
+ size = size + stuffed_modifier
+
+ return "[shape]_[size]"
+
+/obj/item/proc/get_belly_alt()
+ return ""
+
+/obj/item/clothing/under/get_belly_alt()
+ return "[(adjusted) ? "_d" : ""]"
+
+/obj/item/proc/get_modular_butt(obj/item/organ/genital/G)
+ return "butt_[(G.size <= 10 ) ? "[G.size]" : "10"][get_butt_alt()]"
+
+/obj/item/proc/get_butt_alt()
+ return "[(mutantrace_variation == STYLE_DIGITIGRADE) ? "_l" : ""]"
+
+/obj/item/proc/get_modular_breasts(obj/item/organ/genital/G)
+ var/size
+ if(G.size <= "o")
+ size = G.size
+ else
+ switch(G.size)
+ if("huge")
+ size = "huge"
+ if("massive")
+ size = "massive"
+ if("giga")
+ size = "giga"
+ if("impossible")
+ size = "impossible"
+ return "breasts_[size][get_breasts_alt()]"
+
+/obj/item/proc/get_breasts_alt()
+ return ""
+
+/obj/item/proc/update_modular_overlays(mob/user)
+ if(!iscarbon(user))
+ return
+ var/mob/living/carbon/U = user
+ delete_modular_overlays(U)
+
+ if(!(src in U.modular_items))
+ U.modular_items += src
+ var/obj/item/organ/O
+ var/obj/item/organ/genital/G
+ for(O in U.internal_organs) //check the user for the organs they have
+ if(istype(O, /obj/item/organ/genital/belly)) //if that organ is a belly
+ G = O //treat that organ as a genital
+ var/modular_sprite = get_modular_belly(G)
+ add_modular_overlay(U, modular_sprite, MODULAR_BELLY_LAYER, color)
+ add_modular_overlay(U, "[modular_sprite]_SOUTH", BELLY_FRONT_LAYER, color)
+ if(istype(O, /obj/item/organ/genital/butt)) //if that organ is the butt
+ G = O
+ var/modular_sprite = get_modular_butt(G)
+ add_modular_overlay(U, modular_sprite, MODULAR_BUTT_LAYER, color)
+ add_modular_overlay(U, "[modular_sprite]_NORTH", BUTT_BEHIND_LAYER, color)
+ if(istype(O, /obj/item/organ/genital/breasts)) //if the organ is the breasts
+ G = O
+ var/modular_sprite = get_modular_breasts(G)
+ add_modular_overlay(U, modular_sprite, MODULAR_BREASTS_LAYER, color)
+ add_modular_overlay(U, "[modular_sprite]_NORTH", BREASTS_BEHIND_LAYER, color)
+ add_modular_overlay(U, "[modular_sprite]_SOUTH", BREASTS_FRONT_LAYER, color)
+
+/obj/item/proc/delete_modular_overlays(mob/user)
+ if(!iscarbon(user))
+ return
+ var/mob/living/carbon/U = user
+ if(!(src in U.modular_items))
+ return
+ for(var/mutable_appearance/overlay in mod_overlays)
+ U.cut_overlay(overlay)
+ mod_overlays -= mod_overlays
+
+/obj/item/proc/remove_modular_overlays(mob/user)
+ if(!iscarbon(user))
+ return
+ delete_modular_overlays(user)
+ var/mob/living/carbon/U = user
+ if(src in U.modular_items)
+ U.modular_items -= src
+
+/obj/item/clothing/under/color/grey
+ modular_icon_location = 'GainStation13/icons/mob/modclothes/modular_grey.dmi'
+
+/obj/item/clothing/under/color/grey/service
+ name = "service grey suit"
+ desc = "Grey only in name"
+ color = "#6AD427"
+ armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, WOUND = 5)
+
+/obj/item/clothing/under/color/grey/medical
+ name = "medical grey suit"
+ desc = "Grey only in name"
+ color = "#5A96BB"
+ armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, WOUND = 5)
+
+/obj/item/clothing/under/color/grey/cargo
+ name = "cargo grey suit"
+ desc = "Grey only in name"
+ color = "#BB9042"
+ armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 0, WOUND = 10)
+
+/obj/item/clothing/under/color/grey/engi
+ name = "engineering grey suit"
+ desc = "Grey only in name"
+ color = "#FF8800"
+ armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, RAD = 10, FIRE = 60, ACID = 20, WOUND = 5)
+
+/obj/item/clothing/under/color/grey/science
+ name = "science grey suit"
+ desc = "Grey only in name"
+ color = "#9900FF"
+ armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, WOUND = 5)
+
+/obj/item/clothing/under/color/grey/security
+ name = "security grey suit"
+ desc = "Grey only in name"
+ color = "#F4080C"
+ armor = list(MELEE = 10, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 30, ACID = 30, WOUND = 10)
+
+/obj/item/clothing/under/color/grey/command
+ name = "command grey suit"
+ desc = "Grey only in name"
+ color = "#004B8F"
+ armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, WOUND = 15)
+
+
diff --git a/GainStation13/code/modules/mob/living/species.dm b/GainStation13/code/modules/mob/living/species.dm
index 72327692ef..235987bda0 100644
--- a/GainStation13/code/modules/mob/living/species.dm
+++ b/GainStation13/code/modules/mob/living/species.dm
@@ -142,7 +142,7 @@
ADD_TRAIT(fatty, TRAIT_NO_JUMPSUIT, HELPLESSNESS_TRAIT)
var/obj/item/clothing/under/jumpsuit = fatty.w_uniform
- if(istype(jumpsuit) && !istype(jumpsuit, /obj/item/clothing/under/color/grey/modular))
+ if(istype(jumpsuit))
to_chat(fatty, "[jumpsuit] can no longer contain your weight!")
fatty.dropItemToGround(jumpsuit)
diff --git a/GainStation13/icons/mob/modclothes/chefmodular.dmi b/GainStation13/icons/mob/modclothes/chefmodular.dmi
deleted file mode 100644
index fe0a1a04f0..0000000000
Binary files a/GainStation13/icons/mob/modclothes/chefmodular.dmi and /dev/null differ
diff --git a/GainStation13/icons/mob/modclothes/graymodular.dmi b/GainStation13/icons/mob/modclothes/graymodular.dmi
deleted file mode 100644
index 69d184ac38..0000000000
Binary files a/GainStation13/icons/mob/modclothes/graymodular.dmi and /dev/null differ
diff --git a/GainStation13/icons/mob/modclothes/graymodular_round.dmi b/GainStation13/icons/mob/modclothes/graymodular_round.dmi
deleted file mode 100644
index 571e2f91a7..0000000000
Binary files a/GainStation13/icons/mob/modclothes/graymodular_round.dmi and /dev/null differ
diff --git a/GainStation13/icons/mob/modclothes/graymodular_stuffed.dmi b/GainStation13/icons/mob/modclothes/graymodular_stuffed.dmi
deleted file mode 100644
index 0fc64b650d..0000000000
Binary files a/GainStation13/icons/mob/modclothes/graymodular_stuffed.dmi and /dev/null differ
diff --git a/GainStation13/icons/mob/modclothes/modular_grey.dmi b/GainStation13/icons/mob/modclothes/modular_grey.dmi
new file mode 100644
index 0000000000..9d75573877
Binary files /dev/null and b/GainStation13/icons/mob/modclothes/modular_grey.dmi differ
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 8787d3edd7..e10e19c1c5 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -33,30 +33,37 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
//Human Overlays Indexes/////////
//LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS
-#define MUTATIONS_LAYER 35 //mutations. Tk headglows, cold resistance glow, etc
-#define ANTAG_LAYER 34 //stuff for things like cultism indicators (clock cult glow, cultist red halos, whatever else new that comes up)
-#define GENITALS_BEHIND_LAYER 33 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer
-#define BODY_BEHIND_LAYER 32 //certain mutantrace features (tail when looking south) that must appear behind the body parts
-#define BODYPARTS_LAYER 31 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
-#define MARKING_LAYER 30 //Matrixed body markings because clashing with snouts?
-#define BODY_ADJ_LAYER 29 //certain mutantrace features (snout, body markings) that must appear above the body parts
-#define BODY_LAYER 28 //underwear, undershirts, socks, eyes, lips(makeup)
-#define BODY_ADJ_UPPER_LAYER 27
-#define FRONT_MUTATIONS_LAYER 26 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
-#define DAMAGE_LAYER 25 //damage indicators (cuts and burns)
-#define UNIFORM_LAYER 24
-#define ID_LAYER 23
-#define HANDS_PART_LAYER 22
-#define SHOES_LAYER 21
-#define GLOVES_LAYER 20
-#define EARS_LAYER 19
-#define GENITALS_UNDER_LAYER 18
-#define SUIT_LAYER 17
-#define GLASSES_LAYER 16
-#define BELT_LAYER 15 //Possible make this an overlay of somethign required to wear a belt?
-#define SUIT_STORE_LAYER 14
-#define NECK_LAYER 13
-#define BACK_LAYER 12
+#define MUTATIONS_LAYER 42 //mutations. Tk headglows, cold resistance glow, etc
+#define ANTAG_LAYER 41 //stuff for things like cultism indicators (clock cult glow, cultist red halos, whatever else new that comes up)
+#define GENITALS_BEHIND_LAYER 40 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer
+#define BREASTS_BEHIND_LAYER 39 //GS13 Edit - Modular Clothes Layer
+#define BODY_BEHIND_LAYER 38 //certain mutantrace features (tail when looking south) that must appear behind the body parts
+#define BODYPARTS_LAYER 37 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
+#define MARKING_LAYER 36 //Matrixed body markings because clashing with snouts?
+#define BODY_ADJ_LAYER 35 //certain mutantrace features (snout, body markings) that must appear above the body parts
+#define BODY_LAYER 34 //underwear, undershirts, socks, eyes, lips(makeup)
+#define BODY_ADJ_UPPER_LAYER 33
+#define FRONT_MUTATIONS_LAYER 32 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
+#define DAMAGE_LAYER 31 //damage indicators (cuts and burns)
+#define UNIFORM_LAYER 30
+#define ID_LAYER 29
+#define HANDS_PART_LAYER 28
+#define SHOES_LAYER 27
+#define GLOVES_LAYER 26
+#define EARS_LAYER 25
+#define GENITALS_UNDER_LAYER 24
+#define MODULAR_BELLY_LAYER 23 //GS13 Edit - Modular Clothes Layer
+#define MODULAR_BREASTS_LAYER 22 //GS13 Edit - Modular Clothes Layer
+#define MODULAR_BUTT_LAYER 21 //GS13 Edit - Modular Clothes Layer
+#define SUIT_LAYER 20
+#define GLASSES_LAYER 19
+#define BELT_LAYER 18 //Possible make this an overlay of somethign required to wear a belt?
+#define SUIT_STORE_LAYER 17
+#define NECK_LAYER 16
+#define BACK_LAYER 15
+#define BELLY_FRONT_LAYER 14 //GS13 Edit - Modular Clothes Layer
+#define BREASTS_FRONT_LAYER 13 //GS13 Edit - Modular Clothes Layer
+#define BUTT_BEHIND_LAYER 12 //GS13 Edit - Modular Clothes Layer
#define GENITALS_EXPOSED_LAYER 11
#define GENITALS_FRONT_LAYER 10 //Draws some genitalia above clothes and the TAUR body if need be.
#define HAIR_LAYER 9 //TODO: make part of head layer?
@@ -68,7 +75,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define HANDS_LAYER 3
#define BODY_FRONT_LAYER 2
#define FIRE_LAYER 1 //If you're on fire
-#define TOTAL_LAYERS 35 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
+#define TOTAL_LAYERS 42 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
//Human Overlay Index Shortcuts for alternate_worn_layer, layers
//Because I *KNOW* somebody will think layer+1 means "above"
diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm
index e858431db6..69ac3ef5ee 100644
--- a/code/modules/vending/clothesmate.dm
+++ b/code/modules/vending/clothesmate.dm
@@ -9,7 +9,6 @@
/obj/item/clothing/head/fedora = 3,
//GS13 EDIT START
/obj/item/clothing/suit/jacket/letterman_gato = 5,
- /obj/item/clothing/under/color/grey/modular = 6,
//GS13 EDIT END
/obj/item/clothing/head/beret = 3,
/obj/item/clothing/head/beret/black = 3,
diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm
index 439ed6b2ed..f81ba35235 100644
--- a/code/modules/vending/wardrobes.dm
+++ b/code/modules/vending/wardrobes.dm
@@ -17,7 +17,8 @@
icon_state = "secdrobe"
product_ads = "Beat perps in style!;It's red so you can't see the blood!;You have the right to be fashionable!;Now you can be the fashion police you always wanted to be!"
vend_reply = "Thank you for using the SecDrobe!"
- products = list(/obj/item/clothing/suit/hooded/wintercoat/security = 2,
+ products = list(/obj/item/clothing/under/color/grey/security = 10,
+ /obj/item/clothing/suit/hooded/wintercoat/security = 2,
/obj/item/storage/backpack/security = 3,
/obj/item/storage/backpack/satchel/sec = 3,
/obj/item/storage/backpack/duffelbag/sec = 3,
@@ -48,7 +49,8 @@
icon_state = "medidrobe"
product_ads = "Make those blood stains look fashionable!!"
vend_reply = "Thank you for using the MediDrobe!"
- products = list(/obj/item/clothing/accessory/pocketprotector = 5,
+ products = list(/obj/item/clothing/under/color/grey/medical = 10,
+ /obj/item/clothing/accessory/pocketprotector = 5,
/obj/item/clothing/head/beret/med = 5,
/obj/item/storage/backpack/medic = 5,
/obj/item/storage/backpack/satchel/med = 5,
@@ -90,7 +92,8 @@
icon_state = "engidrobe"
product_ads = "Guaranteed to protect your feet from industrial accidents!;Afraid of radiation? Then wear yellow!"
vend_reply = "Thank you for using the EngiDrobe!"
- products = list(/obj/item/clothing/accessory/pocketprotector = 5,
+ products = list(/obj/item/clothing/under/color/grey/engi = 10,
+ /obj/item/clothing/accessory/pocketprotector = 5,
/obj/item/clothing/head/beret/eng = 3,
/obj/item/storage/backpack/industrial = 3,
/obj/item/storage/backpack/satchel/eng = 3,
@@ -121,7 +124,8 @@
icon_state = "atmosdrobe"
product_ads = "Get your inflammable clothing right here!!!"
vend_reply = "Thank you for using the AtmosDrobe!"
- products = list(/obj/item/clothing/accessory/pocketprotector = 3,
+ products = list(/obj/item/clothing/under/color/grey/engi = 10,
+ /obj/item/clothing/accessory/pocketprotector = 3,
/obj/item/clothing/head/beret/atmos = 3,
/obj/item/storage/backpack/industrial = 3,
/obj/item/storage/backpack/satchel/eng = 3,
@@ -145,6 +149,7 @@
product_ads = "Upgraded Assistant Style! Pick yours today!;These shorts are comfy and easy to wear, get yours now!"
vend_reply = "Thank you for using the CargoDrobe!"
products = list(
+ /obj/item/clothing/under/color/grey/cargo = 10,
/obj/item/storage/bag/mail = 3,
/obj/item/clothing/suit/hooded/wintercoat/cargo = 3,
/obj/item/clothing/under/rank/cargo/tech = 3,
@@ -174,7 +179,8 @@
icon_state = "robodrobe"
product_ads = "You turn me TRUE, use defines!;0110001101101100011011110111010001101000011001010111001101101000011001010111001001100101"
vend_reply = "Thank you for using the RoboDrobe!"
- products = list(/obj/item/clothing/glasses/hud/diagnostic = 3,
+ products = list(/obj/item/clothing/under/color/grey/science = 10,
+ /obj/item/clothing/glasses/hud/diagnostic = 3,
/obj/item/stack/medical/nanogel = 5,
/obj/item/clothing/head/beret/robo = 3,
/obj/item/clothing/under/rank/rnd/roboticist = 3,
@@ -202,7 +208,8 @@
icon_state = "scidrobe"
product_ads = "Longing for the smell of plasma burnt flesh? Buy your science clothing now!;Made with 10% Auxetics, so you don't have to worry about losing your arm!"
vend_reply = "Thank you for using the SciDrobe!"
- products = list(/obj/item/clothing/accessory/pocketprotector = 5,
+ products = list(/obj/item/clothing/under/color/grey/science = 10,
+ /obj/item/clothing/accessory/pocketprotector = 5,
/obj/item/clothing/head/beret/sci = 3,
/obj/item/storage/backpack/science = 3,
/obj/item/storage/backpack/satchel/tox = 3,
@@ -227,7 +234,8 @@
icon_state = "hydrobe"
product_ads = "Do you love soil? Then buy our clothes!;Get outfits to match your green thumb here!"
vend_reply = "Thank you for using the Hydrobe!"
- products = list(/obj/item/storage/backpack/botany = 3,
+ products = list(/obj/item/clothing/under/color/grey/service = 10,
+ /obj/item/storage/backpack/botany = 3,
/obj/item/storage/backpack = 3,
/obj/item/storage/backpack/satchel/hyd = 3,
/obj/item/storage/backpack/duffelbag = 3,
@@ -274,7 +282,8 @@
icon_state = "bardrobe"
product_ads = "Guaranteed to prevent stains from spilled drinks!"
vend_reply = "Thank you for using the BarDrobe!"
- products = list(/obj/item/clothing/head/that = 3,
+ products = list(/obj/item/clothing/under/color/grey/service = 10,
+ /obj/item/clothing/head/that = 3,
/obj/item/radio/headset/headset_srv = 3,
/obj/item/clothing/suit/hooded/wintercoat/bar = 3,
/obj/item/clothing/under/suit/sl = 3,
@@ -303,7 +312,8 @@
icon_state = "chefdrobe"
product_ads = "Our clothes are guaranteed to protect you from food splatters!"
vend_reply = "Thank you for using the ChefDrobe!"
- products = list(/obj/item/clothing/under/suit/waiter = 3,
+ products = list(/obj/item/clothing/under/color/grey/service = 10,
+ /obj/item/clothing/under/suit/waiter = 3,
/obj/item/radio/headset/headset_srv = 4,
/obj/item/clothing/accessory/waistcoat = 3,
/obj/item/clothing/suit/apron/chef = 3,
@@ -328,7 +338,8 @@
icon_state = "janidrobe"
product_ads = "Come and get your janitorial clothing, now endorsed by lizard janitors everywhere!"
vend_reply = "Thank you for using the JaniDrobe!"
- products = list(/obj/item/clothing/under/rank/civilian/janitor = 2,
+ products = list(/obj/item/clothing/under/color/grey/service = 10,
+ /obj/item/clothing/under/rank/civilian/janitor = 2,
/obj/item/clothing/under/rank/civilian/janitor/skirt = 2,
/obj/item/clothing/suit/hooded/wintercoat/janitor = 3,
/obj/item/cartridge/janitor = 3,
@@ -420,7 +431,8 @@
icon_state = "chemdrobe"
product_ads = "Our clothes are 0.5% more resistant to acid spills! Get yours now!"
vend_reply = "Thank you for using the ChemDrobe!"
- products = list(/obj/item/clothing/under/rank/medical/chemist = 3,
+ products = list(/obj/item/clothing/under/color/grey/medical = 10,
+ /obj/item/clothing/under/rank/medical/chemist = 3,
/obj/item/clothing/head/beret/chem = 3,
/obj/item/clothing/under/rank/medical/chemist/skirt = 3,
/obj/item/clothing/suit/hooded/wintercoat/chemistry = 3,
@@ -441,7 +453,8 @@
icon_state = "genedrobe"
product_ads = "Perfect for the mad scientist in you!"
vend_reply = "Thank you for using the GeneDrobe!"
- products = list(/obj/item/clothing/under/rank/medical/geneticist = 3,
+ products = list(/obj/item/clothing/under/color/grey/medical = 10,
+ /obj/item/clothing/under/rank/medical/geneticist = 3,
/obj/item/clothing/under/rank/medical/geneticist/skirt = 3,
/obj/item/clothing/suit/hooded/wintercoat/genetics = 3,
/obj/item/clothing/shoes/sneakers/white = 3,
@@ -459,7 +472,8 @@
icon_state = "virodrobe"
product_ads = " Viruses getting you down? Then upgrade to sterilized clothing today!"
vend_reply = "Thank you for using the ViroDrobe"
- products = list(/obj/item/clothing/head/beret/viro = 3,
+ products = list(/obj/item/clothing/under/color/grey/medical = 10,
+ /obj/item/clothing/head/beret/viro = 3,
/obj/item/clothing/under/rank/medical/virologist = 3,
/obj/item/clothing/under/rank/medical/virologist/skirt = 3,
/obj/item/clothing/suit/hooded/wintercoat/viro = 3,
@@ -479,7 +493,8 @@
icon_state = "detdrobe"
product_ads = "Apply your brilliant deductive methods in style!"
vend_reply = "Thank you for using the DetDrobe!"
- products = list(/obj/item/clothing/under/rank/security/detective = 2,
+ products = list(/obj/item/clothing/under/color/grey/security = 10,
+ /obj/item/clothing/under/rank/security/detective = 2,
/obj/item/clothing/under/rank/security/detective/skirt = 2,
/obj/item/clothing/under/rank/security/detective/brown = 2,
/obj/item/clothing/under/rank/security/detective/brown/brown2 = 2,
@@ -517,7 +532,8 @@
icon_deny = "capsdrobe-deny"
product_ads = "Only the greatest for a commander such as ours."
vend_reply = "A wonderful day to you, great leader."
- products = list(/obj/item/clothing/suit/hooded/wintercoat/captain = 1,
+ products = list(/obj/item/clothing/under/color/grey/command = 10,
+ /obj/item/clothing/suit/hooded/wintercoat/captain = 1,
/obj/item/storage/backpack/captain = 1,
/obj/item/storage/backpack/satchel/cap = 1,
/obj/item/storage/backpack/duffelbag/captain = 1,
diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm
index ca4fe1178b..4ff90fb7fe 100644
--- a/modular_citadel/code/modules/client/loadout/uniform.dm
+++ b/modular_citadel/code/modules/client/loadout/uniform.dm
@@ -44,10 +44,6 @@
name = "Assistant's formal uniform"
path = /obj/item/clothing/under/misc/assistantformal
-/datum/gear/uniform/greymodular
- name = "Grey Modular Jumpsuit"
- path = /obj/item/clothing/under/color/grey/modular
-
/datum/gear/uniform/maidcostume
name = "Maid costume"
path = /obj/item/clothing/under/costume/maid
diff --git a/tgstation.dme b/tgstation.dme
index 05eb38ec55..6c2d16019f 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3977,9 +3977,9 @@
#include "GainStation13\code\machinery\feeding_tube.dm"
#include "GainStation13\code\machinery\feeding_tube_industrial.dm"
#include "GainStation13\code\machinery\gym.dm"
-#include "GainStation13\code\machinery\doors\airlock_types.dm"
#include "GainStation13\code\machinery\powered_quantum_pad.dm"
#include "GainStation13\code\machinery\supply_teleporter.dm"
+#include "GainStation13\code\machinery\doors\airlock_types.dm"
#include "GainStation13\code\mechanics\calorite.dm"
#include "GainStation13\code\mechanics\fatness.dm"
#include "GainStation13\code\mechanics\fatrousal.dm"
@@ -4008,10 +4008,8 @@
#include "GainStation13\code\modules\cargo\packs.dm"
#include "GainStation13\code\modules\client\border_control.dm"
#include "GainStation13\code\modules\client\loadout\head.dm"
-#include "GainStation13\code\modules\client\loadout\uniform.dm"
#include "GainStation13\code\modules\client\preferences\preferences.dm"
-#include "GainStation13\code\modules\clothing\under\jobs\clothing.dm"
-#include "GainStation13\code\modules\clothing\under\jobs\modcivilian.dm"
+#include "GainStation13\code\modules\clothing\under\jobs\modular_items.dm"
#include "GainStation13\code\modules\events\vent_clog.dm\vent_clog.dm"
#include "GainStation13\code\modules\food_and_drinks\drinks.dm"
#include "GainStation13\code\modules\food_and_drinks\food.dm"