diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm
index 7ad5041344..d33d9fe4f5 100644
--- a/code/__DEFINES/inventory.dm
+++ b/code/__DEFINES/inventory.dm
@@ -126,7 +126,9 @@
//flags for alternate styles: These are hard sprited so don't set this if you didn't put the effort in
#define NORMAL_STYLE 0
#define ALT_STYLE 1
-#define DIGITIGRADE_STYLE 2
+
+#define NORMAL_SUIT_STYLE 0
+#define DIGITIGRADE_SUIT_STYLE 1
//flags for outfits that have mutantrace variants (try not to use this): Currently only needed if you're trying to add tight fitting bootyshorts
#define NO_MUTANTRACE_VARIATION 0
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 01fd0e78f3..b01f1bca19 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -50,6 +50,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/flags_inv //This flag is used to determine when items in someone's inventory cover others. IE helmets making it so you can't see glasses, etc.
var/interaction_flags_item = INTERACT_ITEM_ATTACK_HAND_PICKUP
+ //Citadel Edit for digitigrade stuff
+ var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to.
var/item_color = null //this needs deprecating, soonish
@@ -101,8 +103,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/last_force_string_check = 0
var/tip_timer
- var/icon_override //CIT CHANGE - adds icon_override var. Will be removed with #4322
-
var/trigger_guard = TRIGGER_GUARD_NONE
//Grinder vars
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index b9ce170dc5..1e65c6ca3f 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -248,9 +248,8 @@ BLIND // can't see anything
H.update_body()
/obj/item/clothing/under/proc/toggle_jumpsuit_adjust()
- if(adjusted == DIGITIGRADE_STYLE)
- return
adjusted = !adjusted
+
if(adjusted)
if(fitted != FEMALE_UNIFORM_TOP)
fitted = NO_FEMALE_UNIFORM
@@ -260,6 +259,7 @@ BLIND // can't see anything
fitted = initial(fitted)
if(!alt_covers_chest)
body_parts_covered |= CHEST
+
return adjusted
/obj/item/clothing/proc/weldingvisortoggle(mob/user) //proc to toggle welding visors on helmets, masks, goggles, etc.
diff --git a/code/modules/clothing/glasses/vg_glasses.dm b/code/modules/clothing/glasses/vg_glasses.dm
index 58df3102ce..449b34b22e 100644
--- a/code/modules/clothing/glasses/vg_glasses.dm
+++ b/code/modules/clothing/glasses/vg_glasses.dm
@@ -6,21 +6,21 @@
name = "purple sunglasses"
icon_state = "sun_purple"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/glasses.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/glasses.dmi'
/obj/item/clothing/glasses/sunglasses/star
name = "star-shaped sunglasses"
desc = "Novelty sunglasses, both lenses are in the shape of a star."
icon_state = "sun_star"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/glasses.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/glasses.dmi'
/obj/item/clothing/glasses/sunglasses/rockstar
name = "red star-shaped sunglasses"
desc = "Novelty sunglasses with a fancy silver frame and two red-tinted star-shaped lenses. You should probably stomp on them and get a pair of normal ones."
icon_state = "sun_star_silver"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/glasses.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/glasses.dmi'
/obj/item/clothing/glasses/gglasses
name = "Green Glasses"
@@ -28,7 +28,7 @@
icon_state = "gglasses"
item_state = "gglasses"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/glasses.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/glasses.dmi'
/obj/item/clothing/glasses/welding/superior
name = "superior welding goggles"
@@ -36,7 +36,7 @@
icon_state = "rwelding-g"
item_state = "rwelding-g"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/glasses.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/glasses.dmi'
actions_types = list(/datum/action/item_action/toggle)
flash_protect = 2
tint = 1
diff --git a/code/modules/clothing/head/cit_hats.dm b/code/modules/clothing/head/cit_hats.dm
index 8cdfe807c8..7b0e68264f 100644
--- a/code/modules/clothing/head/cit_hats.dm
+++ b/code/modules/clothing/head/cit_hats.dm
@@ -4,4 +4,4 @@
icon = 'modular_citadel/icons/obj/clothing/cit_hats.dmi'
icon_state = "hunter"
item_state = "hunter_worn"
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
diff --git a/code/modules/clothing/head/vg_hats.dm b/code/modules/clothing/head/vg_hats.dm
index be57619a7a..efeb5291db 100644
--- a/code/modules/clothing/head/vg_hats.dm
+++ b/code/modules/clothing/head/vg_hats.dm
@@ -12,7 +12,7 @@
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
strip_delay = 80
dog_fashion = null
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/helmet/aviatorhelmet
name = "Aviator Helmet"
@@ -21,7 +21,7 @@
item_state = "aviator_helmet"
icon_state = "aviator_helmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/helmet/biker
name = "Biker's Helmet"
@@ -29,7 +29,7 @@
armor = list(melee = 25, bullet = 15, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0)
icon_state = "biker_helmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
/obj/item/clothing/head/helmet/richard
@@ -38,7 +38,7 @@
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
icon_state = "richard"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
/obj/item/clothing/head/helmet/megahelmet
@@ -47,7 +47,7 @@
icon_state = "megahelmet"
item_state = "megahelmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
siemens_coefficient = 1
/obj/item/clothing/head/helmet/protohelmet
@@ -56,7 +56,7 @@
icon_state = "protohelmet"
item_state = "protohelmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
siemens_coefficient = 1
/obj/item/clothing/head/helmet/megaxhelmet
@@ -65,7 +65,7 @@
icon_state = "megaxhelmet"
item_state = "megaxhelmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/helmet/joehelmet
name = "Sniper Helmet"
@@ -74,7 +74,7 @@
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
item_state = "joehelmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/helmet/doomguy
name = "Doomguy's helmet"
@@ -83,7 +83,7 @@
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
item_state = "doom"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
armor = list(melee = 50, bullet = 40, laser = 40,energy = 40, bomb = 5, bio = 0, rad = 0)
/obj/item/clothing/head/helmet/neorussian
@@ -92,7 +92,7 @@
icon_state = "nr_helmet"
item_state = "nr_helmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/stalhelm
@@ -101,7 +101,7 @@
icon_state = "stalhelm"
item_state = "stalhelm"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/panzer
name = "Panzer Cap"
@@ -109,7 +109,7 @@
icon_state = "panzercap"
item_state = "panzercap"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/naziofficer
name = "Officer Cap"
@@ -117,7 +117,7 @@
icon_state = "officercap"
item_state = "officercap"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/russobluecamohat
@@ -133,7 +133,7 @@
icon_state = "russofurhat"
item_state = "russofurhat"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/squatter_hat
name = "slav squatter hat"
@@ -141,7 +141,7 @@
item_state = "squatter_hat"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
desc = "Cyka blyat."
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/snake
name = "snake head"
@@ -149,7 +149,7 @@
icon_state = "snakehead"
item_state = "snakehead"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/mummy_rags
name = "mummy rags"
@@ -158,7 +158,7 @@
item_state = "mummy"
item_color = "mummy"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
/obj/item/clothing/head/clownpiece
@@ -167,7 +167,7 @@
icon_state = "clownpiece"
item_state = "clownpiece"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/mitre
name = "mitre"
@@ -175,7 +175,7 @@
icon_state = "mitre"
item_state = "mitre"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/tinfoil
name = "tinfoil hat"
@@ -183,7 +183,7 @@
icon_state = "foilhat"
item_state = "paper"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
siemens_coefficient = 2
/obj/item/clothing/head/celtic
@@ -192,4 +192,4 @@
icon_state = "celtic_crown"
item_state = "celtic_crown"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
diff --git a/code/modules/clothing/masks/vg_masks.dm b/code/modules/clothing/masks/vg_masks.dm
index 712a023651..7de27fb780 100644
--- a/code/modules/clothing/masks/vg_masks.dm
+++ b/code/modules/clothing/masks/vg_masks.dm
@@ -3,18 +3,18 @@
desc = "Some pranksters are truly magical."
icon_state = "wizzclown"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/masks.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/masks.dmi'
/obj/item/clothing/mask/chapmask
name = "venetian mask"
desc = "A plain porcelain mask that covers the entire face. Standard attire for particularly unspeakable religions. The eyes are wide shut."
icon_state = "chapmask"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/masks.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/masks.dmi'
/obj/item/clothing/mask/neorussian
name = "neo-Russian mask"
desc = "Somehow, it makes you act and look way more polite than usual."
icon_state = "nr_mask"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/masks.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/masks.dmi'
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index 233a529dcf..61f189e236 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -17,7 +17,7 @@
//CITADEL EDIT Enables digitigrade shoe styles
var/adjusted = NORMAL_STYLE
- var/mutantrace_variation = MUTANTRACE_VARIATION
+ mutantrace_variation = MUTANTRACE_VARIATION
/obj/item/clothing/shoes/ComponentInitialize()
. = ..()
@@ -62,9 +62,9 @@
if(mutantrace_variation && ishuman(user))
var/mob/living/carbon/human/H = user
if(DIGITIGRADE in H.dna.species.species_traits)
- adjusted = DIGITIGRADE_STYLE
+ adjusted = ALT_STYLE
H.update_inv_shoes()
- else if(adjusted == DIGITIGRADE_STYLE)
+ else if(adjusted == ALT_STYLE)
adjusted = NORMAL_STYLE
H.update_inv_shoes()
diff --git a/code/modules/clothing/shoes/vg_shoes.dm b/code/modules/clothing/shoes/vg_shoes.dm
index f867b537c7..931c25b823 100644
--- a/code/modules/clothing/shoes/vg_shoes.dm
+++ b/code/modules/clothing/shoes/vg_shoes.dm
@@ -5,7 +5,8 @@
icon_state = "leather"
item_color = "leather"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/magboots/deathsquad
desc = "Very expensive and advanced magnetic boots, used only by the elite during extravehicular activity to ensure the user remains safely attached to the vehicle."
@@ -13,112 +14,128 @@
icon_state = "DS-magboots0"
magboot_state = "DS-magboots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/magboots/atmos
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. These are painted in the colors of an atmospheric technician."
name = "atmospherics magboots"
icon_state = "atmosmagboots0"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
magboot_state = "atmosmagboots"
resistance_flags = FIRE_PROOF
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/simonshoes
name = "Simon's Shoes"
desc = "Simon's Shoes."
icon_state = "simonshoes"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/kneesocks
name = "kneesocks"
desc = "A pair of girly knee-high socks."
icon_state = "kneesock"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/jestershoes
name = "Jester Shoes"
desc = "As worn by the clowns of old."
icon_state = "jestershoes"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/aviatorboots
name = "Aviator Boots"
desc = "Boots suitable for just about any occasion."
icon_state = "aviator_boots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/libertyshoes
name = "Liberty Shoes"
desc = "Freedom isn't free, neither were these shoes."
icon_state = "libertyshoes"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/megaboots
name = "DRN-001 Boots"
desc = "Large armored boots, very weak to large spikes."
icon_state = "megaboots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/protoboots
name = "Prototype Boots"
desc = "Functionally identical to the DRN-001 model's boots, but in red."
icon_state = "protoboots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/megaxboots
name = "Maverick Hunter boots"
desc = "Regardless of how much stronger these boots are than the DRN-001 model's, they're still extremely easy to pierce with a large spike."
icon_state = "megaxboots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/joeboots
name = "Sniper Boots"
desc = "Nearly identical to the Prototype's boots, except in black."
icon_state = "joeboots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/doomguy
name = "Doomguy's boots"
desc = "If you look closely, you might see skull fragments still buried in these boots."
icon_state = "doom"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/rottenshoes
name = "rotten shoes"
desc = "These shoes seem perfect for sneaking around."
icon_state = "rottenshoes"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/sandal/slippers
name = "magic slippers"
icon_state = "slippers"
desc = "For the wizard that puts comfort first. Who's going to laugh?"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/slippers_worn
name = "worn bunny slippers"
desc = "Fluffy..."
icon_state = "slippers_worn"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/jackboots/neorussian
name = "neo-Russian boots"
desc = "Tovarish, no one will realize you stepped on a pile of shit if your pair already looks like shit."
icon_state = "nr_boots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/head.dmi'
\ No newline at end of file
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
\ No newline at end of file
diff --git a/code/modules/clothing/suits/vg_suits.dm b/code/modules/clothing/suits/vg_suits.dm
index da06e85392..2c97653637 100644
--- a/code/modules/clothing/suits/vg_suits.dm
+++ b/code/modules/clothing/suits/vg_suits.dm
@@ -8,7 +8,7 @@
armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 60, bio = 30, rad = 20)
siemens_coefficient = 0.5
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/armor/xcomsquaddie/dredd
name = "Judge Armor"
@@ -16,7 +16,7 @@
icon_state = "dredd-suit"
item_state = "dredd-suit"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/armor/xcomarmor
@@ -29,7 +29,7 @@
slowdown = 1
siemens_coefficient = 0.5
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/armor/vest/neorussian
name = "neo-Russian vest"
@@ -37,7 +37,7 @@
icon_state = "nr_vest"
item_state = "nr_vest"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/armor/doomguy
name = "Doomguy's armor"
@@ -48,7 +48,7 @@
slowdown = 0
armor = list(melee = 50, bullet = 30, laser = 20, energy = 20, bomb = 30, bio = 0, rad = 0)
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/kaminacape
@@ -57,7 +57,7 @@
icon_state = "kaminacape"
body_parts_covered = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/officercoat
name = "Officer's Coat"
@@ -80,7 +80,7 @@
allowed = list(/obj/item/gun)
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/doshjacket
name = "Plasterer's Jacket"
@@ -88,7 +88,7 @@
icon_state = "doshjacket"
body_parts_covered = CHEST|GROIN|ARMS
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/maidapron
name = "Apron"
@@ -96,7 +96,7 @@
icon_state = "maidapron"
body_parts_covered = CHEST|GROIN
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/clownpiece
name = "small fairy wings"
@@ -104,14 +104,14 @@
icon_state = "clownpiece"
body_parts_covered = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/clownpiece/flying
name = "small fairy wings"
desc = "Some small and translucid insect-like wings. Looks like these are the real deal!"
icon_state = "clownpiece-fly"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
/obj/item/clothing/suit/raincoat
name = "Raincoat"
@@ -119,6 +119,6 @@
icon_state = "raincoat"
body_parts_covered =CHEST|GROIN|LEGS|ARMS|HANDS
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/suit.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm
index 4d037d652b..8883919e38 100644
--- a/code/modules/clothing/under/_under.dm
+++ b/code/modules/clothing/under/_under.dm
@@ -11,10 +11,11 @@
var/sensor_mode = NO_SENSORS
var/can_adjust = TRUE
var/adjusted = NORMAL_STYLE
+ var/suit_style = NORMAL_SUIT_STYLE
var/alt_covers_chest = FALSE // for adjusted/rolled-down jumpsuits, FALSE = exposes chest and arms, TRUE = 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.
+ mutantrace_variation = 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()
@@ -49,6 +50,7 @@
//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
+ suit_style = NORMAL_SUIT_STYLE
..()
/obj/item/clothing/under/equipped(mob/user, slot)
@@ -62,7 +64,7 @@
if(mutantrace_variation && ishuman(user))
var/mob/living/carbon/human/H = user
if(DIGITIGRADE in H.dna.species.species_traits)
- adjusted = DIGITIGRADE_STYLE
+ suit_style = DIGITIGRADE_SUIT_STYLE
H.update_inv_w_uniform()
if(attached_accessory && slot != SLOT_HANDS && ishuman(user))
diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm
index 0411a67846..2288c98b34 100644
--- a/code/modules/clothing/under/jobs/civilian.dm
+++ b/code/modules/clothing/under/jobs/civilian.dm
@@ -75,6 +75,7 @@
item_color = "blueclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/rank/greenclown
name = "green clown suit"
@@ -84,6 +85,7 @@
item_color = "greenclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/rank/yellowclown
name = "yellow clown suit"
@@ -93,6 +95,7 @@
item_color = "yellowclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/rank/purpleclown
name = "purple clown suit"
@@ -102,7 +105,8 @@
item_color = "purpleclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
-
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
+
/obj/item/clothing/under/rank/orangeclown
name = "orange clown suit"
desc = "'ORANGE HONK!'"
@@ -111,7 +115,8 @@
item_color = "orangeclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
-
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
+
/obj/item/clothing/under/rank/rainbowclown
name = "rainbow clown suit"
desc = "'R A I N B O W HONK!'"
@@ -120,6 +125,7 @@
item_color = "rainbowclown"
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/rank/clown/Initialize()
. = ..()
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index ce17f3741e..c3e0cf2b85 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -709,6 +709,7 @@
body_parts_covered = CHEST|GROIN|ARMS
fitted = FEMALE_UNIFORM_TOP
can_adjust = FALSE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/drfreeze
name = "doctor freeze's jumpsuit"
@@ -717,6 +718,7 @@
item_state = "drfreeze"
item_color = "drfreeze"
can_adjust = FALSE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/lobster
name = "foam lobster suit"
@@ -726,6 +728,7 @@
item_color = "lobster"
fitted = NO_FEMALE_UNIFORM
can_adjust = FALSE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/gondola
name = "gondola hide suit"
diff --git a/code/modules/clothing/under/vg_under.dm b/code/modules/clothing/under/vg_under.dm
index f9b521cade..64bf75d5ac 100644
--- a/code/modules/clothing/under/vg_under.dm
+++ b/code/modules/clothing/under/vg_under.dm
@@ -5,7 +5,7 @@
item_color = "stripper_p"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/stripper_green
@@ -15,7 +15,7 @@
item_color = "stripper_g"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
@@ -27,7 +27,7 @@
item_color = "bride_orange"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/wedding/bride_purple
@@ -38,7 +38,7 @@
item_color = "bride_purple"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/wedding/bride_blue
@@ -49,7 +49,7 @@
item_color = "bride_blue"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/wedding/bride_red
@@ -60,7 +60,7 @@
item_color = "bride_red"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/wedding/bride_white
@@ -71,7 +71,7 @@
item_color = "bride_white"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/mankini
@@ -81,7 +81,7 @@
item_color = "mankini"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/*
/obj/item/clothing/under/psysuit
@@ -92,7 +92,7 @@
item_color = "psysuit"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/officeruniform
@@ -103,7 +103,7 @@
item_color = "officeruniform"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/soldieruniform
@@ -114,7 +114,7 @@
item_color = "soldieruniform"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
*/
/obj/item/clothing/under/squatter_outfit
@@ -125,7 +125,7 @@
item_color = "squatteroutfit"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/russobluecamooutfit
@@ -136,7 +136,7 @@
item_color = "russobluecamo"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/stilsuit
@@ -147,7 +147,7 @@
item_color = "stilsuit"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/aviatoruniform
@@ -158,7 +158,7 @@
item_color = "aviator_uniform"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/bikersuit
@@ -168,7 +168,7 @@
item_color = "biker"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/jacketsuit
@@ -179,7 +179,7 @@
item_color = "jacket"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
obj/item/clothing/under/mega
@@ -190,7 +190,7 @@ obj/item/clothing/under/mega
item_color = "mega"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/proto
@@ -201,7 +201,7 @@ obj/item/clothing/under/mega
item_color = "proto"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/megax
@@ -212,7 +212,7 @@ obj/item/clothing/under/mega
item_color = "megax"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/joe
@@ -223,7 +223,7 @@ obj/item/clothing/under/mega
item_color = "joe"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/roll
@@ -234,7 +234,7 @@ obj/item/clothing/under/mega
item_color = "roll"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/gokugidown
@@ -245,7 +245,7 @@ obj/item/clothing/under/mega
item_color = "gokugidown"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/gokugi
@@ -256,7 +256,7 @@ obj/item/clothing/under/mega
item_color = "gokugi"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/doomguy
@@ -267,7 +267,7 @@ obj/item/clothing/under/mega
item_color = "doom"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/vault13
@@ -278,7 +278,7 @@ obj/item/clothing/under/mega
item_color = "v13-jumpsuit"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/vault
@@ -289,7 +289,7 @@ obj/item/clothing/under/mega
item_color = "v-jumpsuit"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/clownpiece
@@ -300,7 +300,7 @@ obj/item/clothing/under/mega
item_color = "clownpiece"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/cia
@@ -311,7 +311,7 @@ obj/item/clothing/under/mega
item_color = "cia"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/greaser
@@ -321,7 +321,7 @@ obj/item/clothing/under/mega
item_state = "greaser_default"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/greaser/New()
@@ -350,7 +350,7 @@ obj/item/clothing/under/mega
item_color = "shizunewinter"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
@@ -362,7 +362,7 @@ obj/item/clothing/under/mega
item_color = "shizunenormal"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/keyholesweater
@@ -373,7 +373,7 @@ obj/item/clothing/under/mega
item_color = "keyholesweater"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/casualhoodie
@@ -384,7 +384,7 @@ obj/item/clothing/under/mega
item_color = "hoodiejeans"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
@@ -404,7 +404,7 @@ obj/item/clothing/under/mega
can_adjust = 0
has_sensor = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
/obj/item/clothing/under/neorussian
@@ -415,7 +415,7 @@ obj/item/clothing/under/mega
item_color = "nr_uniform"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
*/
/obj/item/clothing/under/rottensuit
@@ -426,4 +426,4 @@ obj/item/clothing/under/mega
item_color = "rottensuit"
can_adjust = 0
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index d1450cad15..1f68431771 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -628,8 +628,12 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(!(DIGITIGRADE in species_traits)) //Someone cut off a digitigrade leg and tacked it on
species_traits += DIGITIGRADE
var/should_be_squished = FALSE
- if(H.wear_suit && ((H.wear_suit.flags_inv & HIDEJUMPSUIT) || (H.wear_suit.body_parts_covered & LEGS)) || (H.w_uniform && (H.w_uniform.body_parts_covered & LEGS)))
- should_be_squished = TRUE
+ if(H.wear_suit)
+ if((H.wear_suit.flags_inv & HIDEJUMPSUIT) || ((H.wear_suit.body_parts_covered & LEGS) && (H.wear_suit.body_parts_covered & FEET)))
+ should_be_squished = TRUE
+ if(H.w_uniform && !H.wear_suit)
+ if(H.w_uniform.mutantrace_variation == NO_MUTANTRACE_VARIATION)
+ should_be_squished = TRUE
if(O.use_digitigrade == FULL_DIGITIGRADE && should_be_squished)
O.use_digitigrade = SQUISHED_DIGITIGRADE
update_needed = TRUE
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 53c45d199f..cf29b3541f 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -1,687 +1,693 @@
- ///////////////////////
- //UPDATE_ICONS SYSTEM//
- ///////////////////////
-/* Keep these comments up-to-date if you -insist- on hurting my code-baby ;_;
-This system allows you to update individual mob-overlays, without regenerating them all each time.
-When we generate overlays we generate the standing version and then rotate the mob as necessary..
-
-As of the time of writing there are 20 layers within this list. Please try to keep this from increasing. //22 and counting, good job guys
- var/overlays_standing[20] //For the standing stance
-
-Most of the time we only wish to update one overlay:
- e.g. - we dropped the fireaxe out of our left hand and need to remove its icon from our mob
- e.g.2 - our hair colour has changed, so we need to update our hair icons on our mob
-In these cases, instead of updating every overlay using the old behaviour (regenerate_icons), we instead call
-the appropriate update_X proc.
- e.g. - update_l_hand()
- e.g.2 - update_hair()
-
-Note: Recent changes by aranclanos+carn:
- update_icons() no longer needs to be called.
- the system is easier to use. update_icons() should not be called unless you absolutely -know- you need it.
- IN ALL OTHER CASES it's better to just call the specific update_X procs.
-
-Note: The defines for layer numbers is now kept exclusvely in __DEFINES/misc.dm instead of being defined there,
- then redefined and undefiend everywhere else. If you need to change the layering of sprites (or add a new layer)
- that's where you should start.
-
-All of this means that this code is more maintainable, faster and still fairly easy to use.
-
-There are several things that need to be remembered:
-> Whenever we do something that should cause an overlay to update (which doesn't use standard procs
- ( i.e. you do something like l_hand = /obj/item/something new(src), rather than using the helper procs)
- You will need to call the relevant update_inv_* proc
-
- All of these are named after the variable they update from. They are defined at the mob/ level like
- update_clothing was, so you won't cause undefined proc runtimes with usr.update_inv_wear_id() if the usr is a
- slime etc. Instead, it'll just return without doing any work. So no harm in calling it for slimes and such.
-
-
-> There are also these special cases:
- update_damage_overlays() //handles damage overlays for brute/burn damage
- update_body() //Handles updating your mob's body layer and mutant bodyparts
- as well as sprite-accessories that didn't really fit elsewhere (underwear, undershirts, socks, lips, eyes)
- //NOTE: update_mutantrace() is now merged into this!
- update_hair() //Handles updating your hair overlay (used to be update_face, but mouth and
- eyes were merged into update_body())
-
-
-*/
-
-//HAIR OVERLAY
-/mob/living/carbon/human/update_hair()
- dna.species.handle_hair(src)
-
-//used when putting/removing clothes that hide certain mutant body parts to just update those and not update the whole body.
-/mob/living/carbon/human/proc/update_mutant_bodyparts()
- dna.species.handle_mutant_bodyparts(src)
-
-
-/mob/living/carbon/human/update_body()
- remove_overlay(BODY_LAYER)
- dna.species.handle_body(src)
- ..()
-
-/mob/living/carbon/human/update_fire()
- ..((fire_stacks > 3) ? "Standing" : "Generic_mob_burning")
-
-
-/* --------------------------------------- */
-//For legacy support.
-/mob/living/carbon/human/regenerate_icons()
-
- if(!..())
- icon_render_key = null //invalidate bodyparts cache
- update_body()
- update_hair()
- update_inv_w_uniform()
- update_inv_wear_id()
- update_inv_gloves()
- update_inv_glasses()
- update_inv_ears()
- update_inv_shoes()
- update_inv_s_store()
- update_inv_wear_mask()
- update_inv_head()
- update_inv_belt()
- update_inv_back()
- update_inv_wear_suit()
- update_inv_pockets()
- update_inv_neck()
- update_transform()
- //mutations
- update_mutations_overlay()
- //damage overlays
- update_damage_overlays()
-
-/* --------------------------------------- */
-//vvvvvv UPDATE_INV PROCS vvvvvv
-
-/mob/living/carbon/human/update_inv_w_uniform()
- remove_overlay(UNIFORM_LAYER)
-
- if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM]
- inv.update_icon()
-
- if(istype(w_uniform, /obj/item/clothing/under))
- var/obj/item/clothing/under/U = w_uniform
- U.screen_loc = ui_iclothing
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown)
- client.screen += w_uniform
- update_observer_view(w_uniform,1)
-
- if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT))
- return
-
-
- var/t_color = U.item_color
- if(!t_color)
- t_color = U.icon_state
- if(U.adjusted == ALT_STYLE)
- t_color = "[t_color]_d"
- else if(U.adjusted == DIGITIGRADE_STYLE)
- t_color = "[t_color]_l"
-
- var/mutable_appearance/uniform_overlay
-
- if(dna && dna.species.sexes)
- var/G = (gender == FEMALE) ? "f" : "m"
- if(G == "f" && U.fitted != NO_FEMALE_UNIFORM)
- uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = ((w_uniform.icon_override) ? w_uniform.icon_override : 'icons/mob/uniform.dmi'), isinhands = FALSE, femaleuniform = U.fitted)
-
- if(!uniform_overlay)
- uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = ((w_uniform.icon_override) ? w_uniform.icon_override : 'icons/mob/uniform.dmi'), isinhands = FALSE)
-
-
- if(OFFSET_UNIFORM in dna.species.offset_features)
- uniform_overlay.pixel_x += dna.species.offset_features[OFFSET_UNIFORM][1]
- uniform_overlay.pixel_y += dna.species.offset_features[OFFSET_UNIFORM][2]
- overlays_standing[UNIFORM_LAYER] = uniform_overlay
-
- apply_overlay(UNIFORM_LAYER)
- update_mutant_bodyparts()
-
-
-/mob/living/carbon/human/update_inv_wear_id()
- remove_overlay(ID_LAYER)
-
- if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_ID]
- inv.update_icon()
-
- var/mutable_appearance/id_overlay = overlays_standing[ID_LAYER]
-
- if(wear_id)
- wear_id.screen_loc = ui_id
- if(client && hud_used && hud_used.hud_shown)
- client.screen += wear_id
- update_observer_view(wear_id)
-
- //TODO: add an icon file for ID slot stuff, so it's less snowflakey
- id_overlay = wear_id.build_worn_icon(state = wear_id.item_state, default_layer = ID_LAYER, default_icon_file = ((wear_id.icon_override) ? wear_id.icon_override : 'icons/mob/mob.dmi'))
- if(OFFSET_ID in dna.species.offset_features)
- id_overlay.pixel_x += dna.species.offset_features[OFFSET_ID][1]
- id_overlay.pixel_y += dna.species.offset_features[OFFSET_ID][2]
- overlays_standing[ID_LAYER] = id_overlay
- apply_overlay(ID_LAYER)
-
-
-/mob/living/carbon/human/update_inv_gloves()
- remove_overlay(GLOVES_LAYER)
-
- if(client && hud_used && hud_used.inv_slots[SLOT_GLOVES])
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLOVES]
- inv.update_icon()
-
- if(!gloves && bloody_hands)
- var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER)
- if(get_num_arms() < 2)
- if(has_left_hand())
- bloody_overlay.icon_state = "bloodyhands_left"
- else if(has_right_hand())
- bloody_overlay.icon_state = "bloodyhands_right"
-
- overlays_standing[GLOVES_LAYER] = bloody_overlay
-
- var/mutable_appearance/gloves_overlay = overlays_standing[GLOVES_LAYER]
- if(gloves)
- gloves.screen_loc = ui_gloves
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown)
- client.screen += gloves
- update_observer_view(gloves,1)
- var/t_state = gloves.item_state
- if(!t_state)
- t_state = gloves.icon_state
- overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(state = t_state, default_layer = GLOVES_LAYER, default_icon_file = ((gloves.icon_override) ? gloves.icon_override : 'icons/mob/hands.dmi'))
- gloves_overlay = overlays_standing[GLOVES_LAYER]
- if(OFFSET_GLOVES in dna.species.offset_features)
- gloves_overlay.pixel_x += dna.species.offset_features[OFFSET_GLOVES][1]
- gloves_overlay.pixel_y += dna.species.offset_features[OFFSET_GLOVES][2]
- overlays_standing[GLOVES_LAYER] = gloves_overlay
- apply_overlay(GLOVES_LAYER)
-
-
-/mob/living/carbon/human/update_inv_glasses()
- remove_overlay(GLASSES_LAYER)
-
- if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated
- return
-
- if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLASSES]
- inv.update_icon()
-
- if(glasses)
- glasses.screen_loc = ui_glasses //...draw the item in the inventory screen
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown) //if the inventory is open ...
- client.screen += glasses //Either way, add the item to the HUD
- update_observer_view(glasses,1)
- if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES)))
- overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = ((glasses.icon_override) ? glasses.icon_override : 'icons/mob/eyes.dmi'))
- var/mutable_appearance/glasses_overlay = overlays_standing[GLASSES_LAYER]
- if(glasses_overlay)
- if(OFFSET_GLASSES in dna.species.offset_features)
- glasses_overlay.pixel_x += dna.species.offset_features[OFFSET_GLASSES][1]
- glasses_overlay.pixel_y += dna.species.offset_features[OFFSET_GLASSES][2]
- overlays_standing[GLASSES_LAYER] = glasses_overlay
- apply_overlay(GLASSES_LAYER)
-
-
-/mob/living/carbon/human/update_inv_ears()
- remove_overlay(EARS_LAYER)
-
- if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated
- return
-
- if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_EARS]
- inv.update_icon()
-
- if(ears)
- ears.screen_loc = ui_ears //move the item to the appropriate screen loc
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown) //if the inventory is open
- client.screen += ears //add it to the client's screen
- update_observer_view(ears,1)
-
- overlays_standing[EARS_LAYER] = ears.build_worn_icon(state = ears.icon_state, default_layer = EARS_LAYER, default_icon_file = ((ears.icon_override) ? ears.icon_override : 'icons/mob/ears.dmi'))
- var/mutable_appearance/ears_overlay = overlays_standing[EARS_LAYER]
- if(OFFSET_EARS in dna.species.offset_features)
- ears_overlay.pixel_x += dna.species.offset_features[OFFSET_EARS][1]
- ears_overlay.pixel_y += dna.species.offset_features[OFFSET_EARS][2]
- overlays_standing[EARS_LAYER] = ears_overlay
- apply_overlay(EARS_LAYER)
-
-
-/mob/living/carbon/human/update_inv_shoes()
- remove_overlay(SHOES_LAYER)
-
- if(get_num_legs() <2)
- return
-
- if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES]
- inv.update_icon()
-
- if(shoes)
- var/obj/item/clothing/shoes/S = shoes
- shoes.screen_loc = ui_shoes //move the item to the appropriate screen loc
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown) //if the inventory is open
- client.screen += shoes //add it to client's screen
- update_observer_view(shoes,1)
- if(S.adjusted == DIGITIGRADE_STYLE)
- S.icon_override = 'modular_citadel/icons/mob/digishoes.dmi'
- else if(S.adjusted == NORMAL_STYLE)
- S.icon_override = null
-
- overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(state = shoes.icon_state, default_layer = SHOES_LAYER, default_icon_file = ((shoes.icon_override) ? shoes.icon_override : 'icons/mob/feet.dmi'))
- var/mutable_appearance/shoes_overlay = overlays_standing[SHOES_LAYER]
- if(OFFSET_SHOES in dna.species.offset_features)
- shoes_overlay.pixel_x += dna.species.offset_features[OFFSET_SHOES][1]
- shoes_overlay.pixel_y += dna.species.offset_features[OFFSET_SHOES][2]
- overlays_standing[SHOES_LAYER] = shoes_overlay
- apply_overlay(SHOES_LAYER)
-
-/mob/living/carbon/human/update_inv_s_store()
- remove_overlay(SUIT_STORE_LAYER)
-
- if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_S_STORE]
- inv.update_icon()
-
- if(s_store)
- s_store.screen_loc = ui_sstore1
- if(client && hud_used && hud_used.hud_shown)
- client.screen += s_store
- update_observer_view(s_store)
- var/t_state = s_store.item_state
- if(!t_state)
- t_state = s_store.icon_state
- overlays_standing[SUIT_STORE_LAYER] = mutable_appearance(((s_store.icon_override) ? s_store.icon_override : 'icons/mob/belt_mirror.dmi'), t_state, -SUIT_STORE_LAYER)
- var/mutable_appearance/s_store_overlay = overlays_standing[SUIT_LAYER]
- if(OFFSET_S_STORE in dna.species.offset_features)
- s_store_overlay.pixel_x += dna.species.offset_features[OFFSET_S_STORE][1]
- s_store_overlay.pixel_y += dna.species.offset_features[OFFSET_S_STORE][2]
- overlays_standing[SUIT_STORE_LAYER] = s_store_overlay
- apply_overlay(SUIT_STORE_LAYER)
-
-
-/mob/living/carbon/human/update_inv_head()
- ..()
- update_mutant_bodyparts()
- var/mutable_appearance/head_overlay = overlays_standing[HEAD_LAYER]
- if(head_overlay)
- remove_overlay(HEAD_LAYER)
- if(OFFSET_HEAD in dna.species.offset_features)
- head_overlay.pixel_x += dna.species.offset_features[OFFSET_HEAD][1]
- head_overlay.pixel_y += dna.species.offset_features[OFFSET_HEAD][2]
- overlays_standing[HEAD_LAYER] = head_overlay
- apply_overlay(HEAD_LAYER)
-
-/mob/living/carbon/human/update_inv_belt()
- remove_overlay(BELT_LAYER)
-
- if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_BELT]
- inv.update_icon()
-
- if(belt)
- belt.screen_loc = ui_belt
- if(client && hud_used && hud_used.hud_shown)
- client.screen += belt
- update_observer_view(belt)
-
- var/t_state = belt.item_state
- if(!t_state)
- t_state = belt.icon_state
-
- overlays_standing[BELT_LAYER] = belt.build_worn_icon(state = t_state, default_layer = BELT_LAYER, default_icon_file = ((belt.icon_override) ? belt.icon_override : 'icons/mob/belt.dmi'))
- var/mutable_appearance/belt_overlay = overlays_standing[BELT_LAYER]
- if(OFFSET_BELT in dna.species.offset_features)
- belt_overlay.pixel_x += dna.species.offset_features[OFFSET_BELT][1]
- belt_overlay.pixel_y += dna.species.offset_features[OFFSET_BELT][2]
- overlays_standing[BELT_LAYER] = belt_overlay
- apply_overlay(BELT_LAYER)
-
-
-
-/mob/living/carbon/human/update_inv_wear_suit()
- remove_overlay(SUIT_LAYER)
-
- if(client && hud_used)
- var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT]
- inv.update_icon()
-
- if(istype(wear_suit, /obj/item/clothing/suit))
- wear_suit.screen_loc = ui_oclothing
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown)
- client.screen += wear_suit
- update_observer_view(wear_suit,1)
-
- overlays_standing[SUIT_LAYER] = wear_suit.build_worn_icon(state = wear_suit.icon_state, default_layer = SUIT_LAYER, default_icon_file = ((wear_suit.icon_override) ? wear_suit.icon_override : 'icons/mob/suit.dmi'))
- var/mutable_appearance/suit_overlay = overlays_standing[SUIT_LAYER]
- if(OFFSET_SUIT in dna.species.offset_features)
- suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1]
- suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2]
- overlays_standing[SUIT_LAYER] = suit_overlay
- update_hair()
- update_mutant_bodyparts()
-
- apply_overlay(SUIT_LAYER)
-
-
-/mob/living/carbon/human/update_inv_pockets()
- if(client && hud_used)
- var/obj/screen/inventory/inv
-
- inv = hud_used.inv_slots[SLOT_L_STORE]
- inv.update_icon()
-
- inv = hud_used.inv_slots[SLOT_R_STORE]
- inv.update_icon()
-
- if(l_store)
- l_store.screen_loc = ui_storage1
- if(hud_used.hud_shown)
- client.screen += l_store
- update_observer_view(l_store)
-
- if(r_store)
- r_store.screen_loc = ui_storage2
- if(hud_used.hud_shown)
- client.screen += r_store
- update_observer_view(r_store)
-
-
-/mob/living/carbon/human/update_inv_wear_mask()
- ..()
- var/mutable_appearance/mask_overlay = overlays_standing[FACEMASK_LAYER]
- if(mask_overlay)
- remove_overlay(FACEMASK_LAYER)
- if(OFFSET_FACEMASK in dna.species.offset_features)
- mask_overlay.pixel_x += dna.species.offset_features[OFFSET_FACEMASK][1]
- mask_overlay.pixel_y += dna.species.offset_features[OFFSET_FACEMASK][2]
- overlays_standing[FACEMASK_LAYER] = mask_overlay
- apply_overlay(FACEMASK_LAYER)
- update_mutant_bodyparts() //e.g. upgate needed because mask now hides lizard snout
-
-/mob/living/carbon/human/update_inv_back()
- ..()
- var/mutable_appearance/back_overlay = overlays_standing[BACK_LAYER]
- if(back_overlay)
- remove_overlay(BACK_LAYER)
- if(OFFSET_BACK in dna.species.offset_features)
- back_overlay.pixel_x += dna.species.offset_features[OFFSET_BACK][1]
- back_overlay.pixel_y += dna.species.offset_features[OFFSET_BACK][2]
- overlays_standing[BACK_LAYER] = back_overlay
- apply_overlay(BACK_LAYER)
-
-/mob/living/carbon/human/update_inv_legcuffed()
- remove_overlay(LEGCUFF_LAYER)
- clear_alert("legcuffed")
- if(legcuffed)
- overlays_standing[LEGCUFF_LAYER] = mutable_appearance('icons/mob/mob.dmi', "legcuff1", -LEGCUFF_LAYER)
- apply_overlay(LEGCUFF_LAYER)
- throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = src.legcuffed)
-
-/proc/wear_female_version(t_color, icon, layer, type)
- var/index = t_color
- var/icon/female_clothing_icon = GLOB.female_clothing_icons[index]
- if(!female_clothing_icon) //Create standing/laying icons if they don't exist
- generate_female_clothing(index,t_color,icon,type)
- return mutable_appearance(GLOB.female_clothing_icons[t_color], layer = -layer)
-
-/mob/living/carbon/human/proc/get_overlays_copy(list/unwantedLayers)
- var/list/out = new
- for(var/i in 1 to TOTAL_LAYERS)
- if(overlays_standing[i])
- if(i in unwantedLayers)
- continue
- out += overlays_standing[i]
- return out
-
-
-//human HUD updates for items in our inventory
-
-//update whether our head item appears on our hud.
-/mob/living/carbon/human/update_hud_head(obj/item/I)
- I.screen_loc = ui_head
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown)
- client.screen += I
- update_observer_view(I,1)
-
-//update whether our mask item appears on our hud.
-/mob/living/carbon/human/update_hud_wear_mask(obj/item/I)
- I.screen_loc = ui_mask
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown)
- client.screen += I
- update_observer_view(I,1)
-
-//update whether our neck item appears on our hud.
-/mob/living/carbon/human/update_hud_neck(obj/item/I)
- I.screen_loc = ui_neck
- if(client && hud_used && hud_used.hud_shown)
- if(hud_used.inventory_shown)
- client.screen += I
- update_observer_view(I,1)
-
-//update whether our back item appears on our hud.
-/mob/living/carbon/human/update_hud_back(obj/item/I)
- I.screen_loc = ui_back
- if(client && hud_used && hud_used.hud_shown)
- client.screen += I
- update_observer_view(I)
-
-
-
-
-/*
-Does everything in relation to building the /mutable_appearance used in the mob's overlays list
-covers:
- inhands and any other form of worn item
- centering large appearances
- layering appearances on custom layers
- building appearances from custom icon files
-
-By Remie Richards (yes I'm taking credit because this just removed 90% of the copypaste in update_icons())
-
-state: A string to use as the state, this is FAR too complex to solve in this proc thanks to shitty old code
-so it's specified as an argument instead.
-
-default_layer: The layer to draw this on if no other layer is specified
-
-default_icon_file: The icon file to draw states from if no other icon file is specified
-
-isinhands: If true then alternate_worn_icon is skipped so that default_icon_file is used,
-in this situation default_icon_file is expected to match either the lefthand_ or righthand_ file var
-
-femalueuniform: A value matching a uniform item's fitted var, if this is anything but NO_FEMALE_UNIFORM, we
-generate/load female uniform sprites matching all previously decided variables
-
-
-*/
-/obj/item/proc/build_worn_icon(var/state = "", var/default_layer = 0, var/default_icon_file = null, var/isinhands = FALSE, var/femaleuniform = NO_FEMALE_UNIFORM)
-
- //Find a valid icon file from variables+arguments
- var/file2use
- if(!isinhands && alternate_worn_icon)
- file2use = alternate_worn_icon
- if(!file2use)
- file2use = default_icon_file
-
- //Find a valid layer from variables+arguments
- var/layer2use
- if(alternate_worn_layer)
- layer2use = alternate_worn_layer
- if(!layer2use)
- layer2use = default_layer
-
- var/mutable_appearance/standing
- if(femaleuniform)
- standing = wear_female_version(state,file2use,layer2use,femaleuniform)
- if(!standing)
- standing = mutable_appearance(file2use, state, -layer2use)
-
- //Get the overlays for this item when it's being worn
- //eg: ammo counters, primed grenade flashes, etc.
- var/list/worn_overlays = worn_overlays(isinhands, file2use)
- if(worn_overlays && worn_overlays.len)
- standing.overlays.Add(worn_overlays)
-
- standing = center_image(standing, isinhands ? inhand_x_dimension : worn_x_dimension, isinhands ? inhand_y_dimension : worn_y_dimension)
-
- //Handle held offsets
- var/mob/M = loc
- if(istype(M))
- var/list/L = get_held_offsets()
- if(L)
- standing.pixel_x += L["x"] //+= because of center()ing
- standing.pixel_y += L["y"]
-
- standing.alpha = alpha
- standing.color = color
-
- return standing
-
-
-/obj/item/proc/get_held_offsets()
- var/list/L
- if(ismob(loc))
- var/mob/M = loc
- L = M.get_item_offsets_for_index(M.get_held_index_of_item(src))
- return L
-
-
-//Can't think of a better way to do this, sadly
-/mob/proc/get_item_offsets_for_index(i)
- switch(i)
- if(3) //odd = left hands
- return list("x" = 0, "y" = 16)
- if(4) //even = right hands
- return list("x" = 0, "y" = 16)
- else //No offsets or Unwritten number of hands
- return list("x" = 0, "y" = 0)
-
-
-
-//produces a key based on the human's limbs
-/mob/living/carbon/human/generate_icon_render_key()
- . = "[dna.species.limbs_id]"
-
- if(dna.check_mutation(HULK))
- . += "-coloured-hulk"
- else if(dna.species.use_skintones)
- . += "-coloured-[skin_tone]"
- else if(dna.species.fixed_mut_color)
- . += "-coloured-[dna.species.fixed_mut_color]"
- else if(dna.features["mcolor"])
- . += "-coloured-[dna.features["mcolor"]]"
- else
- . += "-not_coloured"
-
- . += "-[gender]"
-
-
- var/is_taur = FALSE
- var/mob/living/carbon/human/H = src
- if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None"))
- is_taur = TRUE
-
-
- for(var/X in bodyparts)
- var/obj/item/bodypart/BP = X
-
- if(istype(BP, /obj/item/bodypart/r_leg) || istype(BP, /obj/item/bodypart/l_leg))
- if(is_taur)
- continue
-
-
- . += "-[BP.body_zone]"
- if(BP.status == BODYPART_ORGANIC)
- . += "-organic"
- else
- . += "-robotic"
- if(BP.use_digitigrade)
- . += "-digitigrade[BP.use_digitigrade]"
- if(BP.dmg_overlay_type)
- . += "-[BP.dmg_overlay_type]"
-
- if(has_trait(TRAIT_HUSK))
- . += "-husk"
-
-/mob/living/carbon/human/load_limb_from_cache()
- ..()
- update_hair()
-
-
-
-/mob/living/carbon/human/proc/update_observer_view(obj/item/I, inventory)
- if(observers && observers.len)
- for(var/M in observers)
- var/mob/dead/observe = M
- if(observe.client && observe.client.eye == src)
- if(observe.hud_used)
- if(inventory && !observe.hud_used.inventory_shown)
- continue
- observe.client.screen += I
- else
- observers -= observe
- if(!observers.len)
- observers = null
- break
-
-// Only renders the head of the human
-/mob/living/carbon/human/proc/update_body_parts_head_only()
- if (!dna)
- return
-
- if (!dna.species)
- return
-
- var/obj/item/bodypart/HD = get_bodypart("head")
-
- if (!istype(HD))
- return
-
- HD.update_limb()
-
- add_overlay(HD.get_limb_icon())
- update_damage_overlays()
-
- if(HD && !(has_trait(TRAIT_HUSK)))
- // lipstick
- if(lip_style && (LIPS in dna.species.species_traits))
- var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[lip_style]", -BODY_LAYER)
- lip_overlay.color = lip_color
- if(OFFSET_FACE in dna.species.offset_features)
- lip_overlay.pixel_x += dna.species.offset_features[OFFSET_FACE][1]
- lip_overlay.pixel_y += dna.species.offset_features[OFFSET_FACE][2]
- add_overlay(lip_overlay)
-
- // eyes
- if(!(NOEYES in dna.species.species_traits))
- var/has_eyes = getorganslot(ORGAN_SLOT_EYES)
- var/mutable_appearance/eye_overlay
- if(!has_eyes)
- eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER)
- else
- eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER)
- if((EYECOLOR in dna.species.species_traits) && has_eyes)
- eye_overlay.color = "#" + eye_color
- if(OFFSET_FACE in dna.species.offset_features)
- eye_overlay.pixel_x += dna.species.offset_features[OFFSET_FACE][1]
- eye_overlay.pixel_y += dna.species.offset_features[OFFSET_FACE][2]
- add_overlay(eye_overlay)
-
- dna.species.handle_hair(src)
-
- update_inv_head()
- update_inv_wear_mask()
+ ///////////////////////
+ //UPDATE_ICONS SYSTEM//
+ ///////////////////////
+/* Keep these comments up-to-date if you -insist- on hurting my code-baby ;_;
+This system allows you to update individual mob-overlays, without regenerating them all each time.
+When we generate overlays we generate the standing version and then rotate the mob as necessary..
+
+As of the time of writing there are 20 layers within this list. Please try to keep this from increasing. //22 and counting, good job guys
+ var/overlays_standing[20] //For the standing stance
+
+Most of the time we only wish to update one overlay:
+ e.g. - we dropped the fireaxe out of our left hand and need to remove its icon from our mob
+ e.g.2 - our hair colour has changed, so we need to update our hair icons on our mob
+In these cases, instead of updating every overlay using the old behaviour (regenerate_icons), we instead call
+the appropriate update_X proc.
+ e.g. - update_l_hand()
+ e.g.2 - update_hair()
+
+Note: Recent changes by aranclanos+carn:
+ update_icons() no longer needs to be called.
+ the system is easier to use. update_icons() should not be called unless you absolutely -know- you need it.
+ IN ALL OTHER CASES it's better to just call the specific update_X procs.
+
+Note: The defines for layer numbers is now kept exclusvely in __DEFINES/misc.dm instead of being defined there,
+ then redefined and undefiend everywhere else. If you need to change the layering of sprites (or add a new layer)
+ that's where you should start.
+
+All of this means that this code is more maintainable, faster and still fairly easy to use.
+
+There are several things that need to be remembered:
+> Whenever we do something that should cause an overlay to update (which doesn't use standard procs
+ ( i.e. you do something like l_hand = /obj/item/something new(src), rather than using the helper procs)
+ You will need to call the relevant update_inv_* proc
+
+ All of these are named after the variable they update from. They are defined at the mob/ level like
+ update_clothing was, so you won't cause undefined proc runtimes with usr.update_inv_wear_id() if the usr is a
+ slime etc. Instead, it'll just return without doing any work. So no harm in calling it for slimes and such.
+
+
+> There are also these special cases:
+ update_damage_overlays() //handles damage overlays for brute/burn damage
+ update_body() //Handles updating your mob's body layer and mutant bodyparts
+ as well as sprite-accessories that didn't really fit elsewhere (underwear, undershirts, socks, lips, eyes)
+ //NOTE: update_mutantrace() is now merged into this!
+ update_hair() //Handles updating your hair overlay (used to be update_face, but mouth and
+ eyes were merged into update_body())
+
+
+*/
+
+//HAIR OVERLAY
+/mob/living/carbon/human/update_hair()
+ dna.species.handle_hair(src)
+
+//used when putting/removing clothes that hide certain mutant body parts to just update those and not update the whole body.
+/mob/living/carbon/human/proc/update_mutant_bodyparts()
+ dna.species.handle_mutant_bodyparts(src)
+
+
+/mob/living/carbon/human/update_body()
+ remove_overlay(BODY_LAYER)
+ dna.species.handle_body(src)
+ ..()
+
+/mob/living/carbon/human/update_fire()
+ ..((fire_stacks > 3) ? "Standing" : "Generic_mob_burning")
+
+
+/* --------------------------------------- */
+//For legacy support.
+/mob/living/carbon/human/regenerate_icons()
+
+ if(!..())
+ icon_render_key = null //invalidate bodyparts cache
+ update_body()
+ update_hair()
+ update_inv_w_uniform()
+ update_inv_wear_id()
+ update_inv_gloves()
+ update_inv_glasses()
+ update_inv_ears()
+ update_inv_shoes()
+ update_inv_s_store()
+ update_inv_wear_mask()
+ update_inv_head()
+ update_inv_belt()
+ update_inv_back()
+ update_inv_wear_suit()
+ update_inv_pockets()
+ update_inv_neck()
+ update_transform()
+ //mutations
+ update_mutations_overlay()
+ //damage overlays
+ update_damage_overlays()
+
+/* --------------------------------------- */
+//vvvvvv UPDATE_INV PROCS vvvvvv
+
+/mob/living/carbon/human/update_inv_w_uniform()
+ remove_overlay(UNIFORM_LAYER)
+
+ if(client && hud_used)
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM]
+ inv.update_icon()
+
+ if(istype(w_uniform, /obj/item/clothing/under))
+ var/obj/item/clothing/under/U = w_uniform
+ U.screen_loc = ui_iclothing
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown)
+ client.screen += w_uniform
+ update_observer_view(w_uniform,1)
+
+ if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT))
+ return
+
+
+ var/t_color = U.item_color
+ if(!t_color)
+ t_color = U.icon_state
+ if(U.suit_style == NORMAL_SUIT_STYLE)
+ if(U.adjusted == ALT_STYLE)
+ t_color = "[t_color]_d"
+
+ if(U.mutantrace_variation)
+ if(U.suit_style == DIGITIGRADE_SUIT_STYLE)
+ U.alternate_worn_icon = 'modular_citadel/icons/mob/uniform_digi.dmi'
+ if(U.adjusted == ALT_STYLE)
+ t_color = "[t_color]_d_l"
+ else if(U.adjusted == NORMAL_STYLE)
+ t_color = "[t_color]_l"
+
+ var/mutable_appearance/uniform_overlay
+
+ if(dna && dna.species.sexes)
+ var/G = (gender == FEMALE) ? "f" : "m"
+ if(G == "f" && U.fitted != NO_FEMALE_UNIFORM)
+ uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = ((w_uniform.alternate_worn_icon) ? w_uniform.alternate_worn_icon : 'icons/mob/uniform.dmi'), isinhands = FALSE, femaleuniform = U.fitted)
+
+ if(!uniform_overlay)
+ uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = ((w_uniform.alternate_worn_icon) ? w_uniform.alternate_worn_icon : 'icons/mob/uniform.dmi'), isinhands = FALSE)
+
+
+ if(OFFSET_UNIFORM in dna.species.offset_features)
+ uniform_overlay.pixel_x += dna.species.offset_features[OFFSET_UNIFORM][1]
+ uniform_overlay.pixel_y += dna.species.offset_features[OFFSET_UNIFORM][2]
+ overlays_standing[UNIFORM_LAYER] = uniform_overlay
+
+ apply_overlay(UNIFORM_LAYER)
+ update_mutant_bodyparts()
+
+
+/mob/living/carbon/human/update_inv_wear_id()
+ remove_overlay(ID_LAYER)
+
+ if(client && hud_used)
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_ID]
+ inv.update_icon()
+
+ var/mutable_appearance/id_overlay = overlays_standing[ID_LAYER]
+
+ if(wear_id)
+ wear_id.screen_loc = ui_id
+ if(client && hud_used && hud_used.hud_shown)
+ client.screen += wear_id
+ update_observer_view(wear_id)
+
+ //TODO: add an icon file for ID slot stuff, so it's less snowflakey
+ id_overlay = wear_id.build_worn_icon(state = wear_id.item_state, default_layer = ID_LAYER, default_icon_file = ((wear_id.alternate_worn_icon) ? wear_id.alternate_worn_icon : 'icons/mob/mob.dmi'))
+ if(OFFSET_ID in dna.species.offset_features)
+ id_overlay.pixel_x += dna.species.offset_features[OFFSET_ID][1]
+ id_overlay.pixel_y += dna.species.offset_features[OFFSET_ID][2]
+ overlays_standing[ID_LAYER] = id_overlay
+ apply_overlay(ID_LAYER)
+
+
+/mob/living/carbon/human/update_inv_gloves()
+ remove_overlay(GLOVES_LAYER)
+
+ if(client && hud_used && hud_used.inv_slots[SLOT_GLOVES])
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLOVES]
+ inv.update_icon()
+
+ if(!gloves && bloody_hands)
+ var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER)
+ if(get_num_arms() < 2)
+ if(has_left_hand())
+ bloody_overlay.icon_state = "bloodyhands_left"
+ else if(has_right_hand())
+ bloody_overlay.icon_state = "bloodyhands_right"
+
+ overlays_standing[GLOVES_LAYER] = bloody_overlay
+
+ var/mutable_appearance/gloves_overlay = overlays_standing[GLOVES_LAYER]
+ if(gloves)
+ gloves.screen_loc = ui_gloves
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown)
+ client.screen += gloves
+ update_observer_view(gloves,1)
+ var/t_state = gloves.item_state
+ if(!t_state)
+ t_state = gloves.icon_state
+ overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(state = t_state, default_layer = GLOVES_LAYER, default_icon_file = ((gloves.alternate_worn_icon) ? gloves.alternate_worn_icon : 'icons/mob/hands.dmi'))
+ gloves_overlay = overlays_standing[GLOVES_LAYER]
+ if(OFFSET_GLOVES in dna.species.offset_features)
+ gloves_overlay.pixel_x += dna.species.offset_features[OFFSET_GLOVES][1]
+ gloves_overlay.pixel_y += dna.species.offset_features[OFFSET_GLOVES][2]
+ overlays_standing[GLOVES_LAYER] = gloves_overlay
+ apply_overlay(GLOVES_LAYER)
+
+
+/mob/living/carbon/human/update_inv_glasses()
+ remove_overlay(GLASSES_LAYER)
+
+ if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated
+ return
+
+ if(client && hud_used)
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLASSES]
+ inv.update_icon()
+
+ if(glasses)
+ glasses.screen_loc = ui_glasses //...draw the item in the inventory screen
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown) //if the inventory is open ...
+ client.screen += glasses //Either way, add the item to the HUD
+ update_observer_view(glasses,1)
+ if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES)))
+ overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = ((glasses.alternate_worn_icon) ? glasses.alternate_worn_icon : 'icons/mob/eyes.dmi'))
+ var/mutable_appearance/glasses_overlay = overlays_standing[GLASSES_LAYER]
+ if(glasses_overlay)
+ if(OFFSET_GLASSES in dna.species.offset_features)
+ glasses_overlay.pixel_x += dna.species.offset_features[OFFSET_GLASSES][1]
+ glasses_overlay.pixel_y += dna.species.offset_features[OFFSET_GLASSES][2]
+ overlays_standing[GLASSES_LAYER] = glasses_overlay
+ apply_overlay(GLASSES_LAYER)
+
+
+/mob/living/carbon/human/update_inv_ears()
+ remove_overlay(EARS_LAYER)
+
+ if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated
+ return
+
+ if(client && hud_used)
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_EARS]
+ inv.update_icon()
+
+ if(ears)
+ ears.screen_loc = ui_ears //move the item to the appropriate screen loc
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown) //if the inventory is open
+ client.screen += ears //add it to the client's screen
+ update_observer_view(ears,1)
+
+ overlays_standing[EARS_LAYER] = ears.build_worn_icon(state = ears.icon_state, default_layer = EARS_LAYER, default_icon_file = ((ears.alternate_worn_icon) ? ears.alternate_worn_icon : 'icons/mob/ears.dmi'))
+ var/mutable_appearance/ears_overlay = overlays_standing[EARS_LAYER]
+ if(OFFSET_EARS in dna.species.offset_features)
+ ears_overlay.pixel_x += dna.species.offset_features[OFFSET_EARS][1]
+ ears_overlay.pixel_y += dna.species.offset_features[OFFSET_EARS][2]
+ overlays_standing[EARS_LAYER] = ears_overlay
+ apply_overlay(EARS_LAYER)
+
+
+/mob/living/carbon/human/update_inv_shoes()
+ remove_overlay(SHOES_LAYER)
+
+ if(get_num_legs() <2)
+ return
+
+ if(client && hud_used)
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES]
+ inv.update_icon()
+
+ if(shoes)
+ var/obj/item/clothing/shoes/S = shoes
+ shoes.screen_loc = ui_shoes //move the item to the appropriate screen loc
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown) //if the inventory is open
+ client.screen += shoes //add it to client's screen
+ update_observer_view(shoes,1)
+ if(S.mutantrace_variation)
+ if(S.adjusted == ALT_STYLE)
+ S.alternate_worn_icon = 'modular_citadel/icons/mob/digishoes.dmi'
+
+ overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(state = shoes.icon_state, default_layer = SHOES_LAYER, default_icon_file = ((shoes.alternate_worn_icon) ? shoes.alternate_worn_icon : 'icons/mob/feet.dmi'))
+ var/mutable_appearance/shoes_overlay = overlays_standing[SHOES_LAYER]
+ if(OFFSET_SHOES in dna.species.offset_features)
+ shoes_overlay.pixel_x += dna.species.offset_features[OFFSET_SHOES][1]
+ shoes_overlay.pixel_y += dna.species.offset_features[OFFSET_SHOES][2]
+ overlays_standing[SHOES_LAYER] = shoes_overlay
+ apply_overlay(SHOES_LAYER)
+
+/mob/living/carbon/human/update_inv_s_store()
+ remove_overlay(SUIT_STORE_LAYER)
+
+ if(client && hud_used)
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_S_STORE]
+ inv.update_icon()
+
+ if(s_store)
+ s_store.screen_loc = ui_sstore1
+ if(client && hud_used && hud_used.hud_shown)
+ client.screen += s_store
+ update_observer_view(s_store)
+ var/t_state = s_store.item_state
+ if(!t_state)
+ t_state = s_store.icon_state
+ overlays_standing[SUIT_STORE_LAYER] = mutable_appearance(((s_store.alternate_worn_icon) ? s_store.alternate_worn_icon : 'icons/mob/belt_mirror.dmi'), t_state, -SUIT_STORE_LAYER)
+ var/mutable_appearance/s_store_overlay = overlays_standing[SUIT_LAYER]
+ if(OFFSET_S_STORE in dna.species.offset_features)
+ s_store_overlay.pixel_x += dna.species.offset_features[OFFSET_S_STORE][1]
+ s_store_overlay.pixel_y += dna.species.offset_features[OFFSET_S_STORE][2]
+ overlays_standing[SUIT_STORE_LAYER] = s_store_overlay
+ apply_overlay(SUIT_STORE_LAYER)
+
+
+/mob/living/carbon/human/update_inv_head()
+ ..()
+ update_mutant_bodyparts()
+ var/mutable_appearance/head_overlay = overlays_standing[HEAD_LAYER]
+ if(head_overlay)
+ remove_overlay(HEAD_LAYER)
+ if(OFFSET_HEAD in dna.species.offset_features)
+ head_overlay.pixel_x += dna.species.offset_features[OFFSET_HEAD][1]
+ head_overlay.pixel_y += dna.species.offset_features[OFFSET_HEAD][2]
+ overlays_standing[HEAD_LAYER] = head_overlay
+ apply_overlay(HEAD_LAYER)
+
+/mob/living/carbon/human/update_inv_belt()
+ remove_overlay(BELT_LAYER)
+
+ if(client && hud_used)
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_BELT]
+ inv.update_icon()
+
+ if(belt)
+ belt.screen_loc = ui_belt
+ if(client && hud_used && hud_used.hud_shown)
+ client.screen += belt
+ update_observer_view(belt)
+
+ var/t_state = belt.item_state
+ if(!t_state)
+ t_state = belt.icon_state
+
+ overlays_standing[BELT_LAYER] = belt.build_worn_icon(state = t_state, default_layer = BELT_LAYER, default_icon_file = ((belt.alternate_worn_icon) ? belt.alternate_worn_icon : 'icons/mob/belt.dmi'))
+ var/mutable_appearance/belt_overlay = overlays_standing[BELT_LAYER]
+ if(OFFSET_BELT in dna.species.offset_features)
+ belt_overlay.pixel_x += dna.species.offset_features[OFFSET_BELT][1]
+ belt_overlay.pixel_y += dna.species.offset_features[OFFSET_BELT][2]
+ overlays_standing[BELT_LAYER] = belt_overlay
+ apply_overlay(BELT_LAYER)
+
+
+
+/mob/living/carbon/human/update_inv_wear_suit()
+ remove_overlay(SUIT_LAYER)
+
+ if(client && hud_used)
+ var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT]
+ inv.update_icon()
+
+ if(istype(wear_suit, /obj/item/clothing/suit))
+ wear_suit.screen_loc = ui_oclothing
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown)
+ client.screen += wear_suit
+ update_observer_view(wear_suit,1)
+
+ overlays_standing[SUIT_LAYER] = wear_suit.build_worn_icon(state = wear_suit.icon_state, default_layer = SUIT_LAYER, default_icon_file = ((wear_suit.alternate_worn_icon) ? wear_suit.alternate_worn_icon : 'icons/mob/suit.dmi'))
+ var/mutable_appearance/suit_overlay = overlays_standing[SUIT_LAYER]
+ if(OFFSET_SUIT in dna.species.offset_features)
+ suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1]
+ suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2]
+ overlays_standing[SUIT_LAYER] = suit_overlay
+ update_hair()
+ update_mutant_bodyparts()
+
+ apply_overlay(SUIT_LAYER)
+
+
+/mob/living/carbon/human/update_inv_pockets()
+ if(client && hud_used)
+ var/obj/screen/inventory/inv
+
+ inv = hud_used.inv_slots[SLOT_L_STORE]
+ inv.update_icon()
+
+ inv = hud_used.inv_slots[SLOT_R_STORE]
+ inv.update_icon()
+
+ if(l_store)
+ l_store.screen_loc = ui_storage1
+ if(hud_used.hud_shown)
+ client.screen += l_store
+ update_observer_view(l_store)
+
+ if(r_store)
+ r_store.screen_loc = ui_storage2
+ if(hud_used.hud_shown)
+ client.screen += r_store
+ update_observer_view(r_store)
+
+
+/mob/living/carbon/human/update_inv_wear_mask()
+ ..()
+ var/mutable_appearance/mask_overlay = overlays_standing[FACEMASK_LAYER]
+ if(mask_overlay)
+ remove_overlay(FACEMASK_LAYER)
+ if(OFFSET_FACEMASK in dna.species.offset_features)
+ mask_overlay.pixel_x += dna.species.offset_features[OFFSET_FACEMASK][1]
+ mask_overlay.pixel_y += dna.species.offset_features[OFFSET_FACEMASK][2]
+ overlays_standing[FACEMASK_LAYER] = mask_overlay
+ apply_overlay(FACEMASK_LAYER)
+ update_mutant_bodyparts() //e.g. upgate needed because mask now hides lizard snout
+
+/mob/living/carbon/human/update_inv_back()
+ ..()
+ var/mutable_appearance/back_overlay = overlays_standing[BACK_LAYER]
+ if(back_overlay)
+ remove_overlay(BACK_LAYER)
+ if(OFFSET_BACK in dna.species.offset_features)
+ back_overlay.pixel_x += dna.species.offset_features[OFFSET_BACK][1]
+ back_overlay.pixel_y += dna.species.offset_features[OFFSET_BACK][2]
+ overlays_standing[BACK_LAYER] = back_overlay
+ apply_overlay(BACK_LAYER)
+
+/mob/living/carbon/human/update_inv_legcuffed()
+ remove_overlay(LEGCUFF_LAYER)
+ clear_alert("legcuffed")
+ if(legcuffed)
+ overlays_standing[LEGCUFF_LAYER] = mutable_appearance('icons/mob/mob.dmi', "legcuff1", -LEGCUFF_LAYER)
+ apply_overlay(LEGCUFF_LAYER)
+ throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = src.legcuffed)
+
+/proc/wear_female_version(t_color, icon, layer, type)
+ var/index = t_color
+ var/icon/female_clothing_icon = GLOB.female_clothing_icons[index]
+ if(!female_clothing_icon) //Create standing/laying icons if they don't exist
+ generate_female_clothing(index,t_color,icon,type)
+ return mutable_appearance(GLOB.female_clothing_icons[t_color], layer = -layer)
+
+/mob/living/carbon/human/proc/get_overlays_copy(list/unwantedLayers)
+ var/list/out = new
+ for(var/i in 1 to TOTAL_LAYERS)
+ if(overlays_standing[i])
+ if(i in unwantedLayers)
+ continue
+ out += overlays_standing[i]
+ return out
+
+
+//human HUD updates for items in our inventory
+
+//update whether our head item appears on our hud.
+/mob/living/carbon/human/update_hud_head(obj/item/I)
+ I.screen_loc = ui_head
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown)
+ client.screen += I
+ update_observer_view(I,1)
+
+//update whether our mask item appears on our hud.
+/mob/living/carbon/human/update_hud_wear_mask(obj/item/I)
+ I.screen_loc = ui_mask
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown)
+ client.screen += I
+ update_observer_view(I,1)
+
+//update whether our neck item appears on our hud.
+/mob/living/carbon/human/update_hud_neck(obj/item/I)
+ I.screen_loc = ui_neck
+ if(client && hud_used && hud_used.hud_shown)
+ if(hud_used.inventory_shown)
+ client.screen += I
+ update_observer_view(I,1)
+
+//update whether our back item appears on our hud.
+/mob/living/carbon/human/update_hud_back(obj/item/I)
+ I.screen_loc = ui_back
+ if(client && hud_used && hud_used.hud_shown)
+ client.screen += I
+ update_observer_view(I)
+
+
+
+
+/*
+Does everything in relation to building the /mutable_appearance used in the mob's overlays list
+covers:
+ inhands and any other form of worn item
+ centering large appearances
+ layering appearances on custom layers
+ building appearances from custom icon files
+
+By Remie Richards (yes I'm taking credit because this just removed 90% of the copypaste in update_icons())
+
+state: A string to use as the state, this is FAR too complex to solve in this proc thanks to shitty old code
+so it's specified as an argument instead.
+
+default_layer: The layer to draw this on if no other layer is specified
+
+default_icon_file: The icon file to draw states from if no other icon file is specified
+
+isinhands: If true then alternate_worn_icon is skipped so that default_icon_file is used,
+in this situation default_icon_file is expected to match either the lefthand_ or righthand_ file var
+
+femalueuniform: A value matching a uniform item's fitted var, if this is anything but NO_FEMALE_UNIFORM, we
+generate/load female uniform sprites matching all previously decided variables
+
+
+*/
+/obj/item/proc/build_worn_icon(var/state = "", var/default_layer = 0, var/default_icon_file = null, var/isinhands = FALSE, var/femaleuniform = NO_FEMALE_UNIFORM)
+
+ //Find a valid icon file from variables+arguments
+ var/file2use
+ if(!isinhands && alternate_worn_icon)
+ file2use = alternate_worn_icon
+ if(!file2use)
+ file2use = default_icon_file
+
+ //Find a valid layer from variables+arguments
+ var/layer2use
+ if(alternate_worn_layer)
+ layer2use = alternate_worn_layer
+ if(!layer2use)
+ layer2use = default_layer
+
+ var/mutable_appearance/standing
+ if(femaleuniform)
+ standing = wear_female_version(state,file2use,layer2use,femaleuniform)
+ if(!standing)
+ standing = mutable_appearance(file2use, state, -layer2use)
+
+ //Get the overlays for this item when it's being worn
+ //eg: ammo counters, primed grenade flashes, etc.
+ var/list/worn_overlays = worn_overlays(isinhands, file2use)
+ if(worn_overlays && worn_overlays.len)
+ standing.overlays.Add(worn_overlays)
+
+ standing = center_image(standing, isinhands ? inhand_x_dimension : worn_x_dimension, isinhands ? inhand_y_dimension : worn_y_dimension)
+
+ //Handle held offsets
+ var/mob/M = loc
+ if(istype(M))
+ var/list/L = get_held_offsets()
+ if(L)
+ standing.pixel_x += L["x"] //+= because of center()ing
+ standing.pixel_y += L["y"]
+
+ standing.alpha = alpha
+ standing.color = color
+
+ return standing
+
+
+/obj/item/proc/get_held_offsets()
+ var/list/L
+ if(ismob(loc))
+ var/mob/M = loc
+ L = M.get_item_offsets_for_index(M.get_held_index_of_item(src))
+ return L
+
+
+//Can't think of a better way to do this, sadly
+/mob/proc/get_item_offsets_for_index(i)
+ switch(i)
+ if(3) //odd = left hands
+ return list("x" = 0, "y" = 16)
+ if(4) //even = right hands
+ return list("x" = 0, "y" = 16)
+ else //No offsets or Unwritten number of hands
+ return list("x" = 0, "y" = 0)
+
+
+
+//produces a key based on the human's limbs
+/mob/living/carbon/human/generate_icon_render_key()
+ . = "[dna.species.limbs_id]"
+
+ if(dna.check_mutation(HULK))
+ . += "-coloured-hulk"
+ else if(dna.species.use_skintones)
+ . += "-coloured-[skin_tone]"
+ else if(dna.species.fixed_mut_color)
+ . += "-coloured-[dna.species.fixed_mut_color]"
+ else if(dna.features["mcolor"])
+ . += "-coloured-[dna.features["mcolor"]]"
+ else
+ . += "-not_coloured"
+
+ . += "-[gender]"
+
+
+ var/is_taur = FALSE
+ var/mob/living/carbon/human/H = src
+ if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None"))
+ is_taur = TRUE
+
+
+ for(var/X in bodyparts)
+ var/obj/item/bodypart/BP = X
+
+ if(istype(BP, /obj/item/bodypart/r_leg) || istype(BP, /obj/item/bodypart/l_leg))
+ if(is_taur)
+ continue
+
+
+ . += "-[BP.body_zone]"
+ if(BP.status == BODYPART_ORGANIC)
+ . += "-organic"
+ else
+ . += "-robotic"
+ if(BP.use_digitigrade)
+ . += "-digitigrade[BP.use_digitigrade]"
+ if(BP.dmg_overlay_type)
+ . += "-[BP.dmg_overlay_type]"
+
+ if(has_trait(TRAIT_HUSK))
+ . += "-husk"
+
+/mob/living/carbon/human/load_limb_from_cache()
+ ..()
+ update_hair()
+
+
+
+/mob/living/carbon/human/proc/update_observer_view(obj/item/I, inventory)
+ if(observers && observers.len)
+ for(var/M in observers)
+ var/mob/dead/observe = M
+ if(observe.client && observe.client.eye == src)
+ if(observe.hud_used)
+ if(inventory && !observe.hud_used.inventory_shown)
+ continue
+ observe.client.screen += I
+ else
+ observers -= observe
+ if(!observers.len)
+ observers = null
+ break
+
+// Only renders the head of the human
+/mob/living/carbon/human/proc/update_body_parts_head_only()
+ if (!dna)
+ return
+
+ if (!dna.species)
+ return
+
+ var/obj/item/bodypart/HD = get_bodypart("head")
+
+ if (!istype(HD))
+ return
+
+ HD.update_limb()
+
+ add_overlay(HD.get_limb_icon())
+ update_damage_overlays()
+
+ if(HD && !(has_trait(TRAIT_HUSK)))
+ // lipstick
+ if(lip_style && (LIPS in dna.species.species_traits))
+ var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[lip_style]", -BODY_LAYER)
+ lip_overlay.color = lip_color
+ if(OFFSET_FACE in dna.species.offset_features)
+ lip_overlay.pixel_x += dna.species.offset_features[OFFSET_FACE][1]
+ lip_overlay.pixel_y += dna.species.offset_features[OFFSET_FACE][2]
+ add_overlay(lip_overlay)
+
+ // eyes
+ if(!(NOEYES in dna.species.species_traits))
+ var/has_eyes = getorganslot(ORGAN_SLOT_EYES)
+ var/mutable_appearance/eye_overlay
+ if(!has_eyes)
+ eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER)
+ else
+ eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER)
+ if((EYECOLOR in dna.species.species_traits) && has_eyes)
+ eye_overlay.color = "#" + eye_color
+ if(OFFSET_FACE in dna.species.offset_features)
+ eye_overlay.pixel_x += dna.species.offset_features[OFFSET_FACE][1]
+ eye_overlay.pixel_y += dna.species.offset_features[OFFSET_FACE][2]
+ add_overlay(eye_overlay)
+
+ dna.species.handle_hair(src)
+
+ update_inv_head()
+ update_inv_wear_mask()
diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm
index d5ee3466d4..7d337c67c2 100644
--- a/code/modules/surgery/bodyparts/helpers.dm
+++ b/code/modules/surgery/bodyparts/helpers.dm
@@ -294,14 +294,14 @@
var/obj/item/clothing/under/U = H.w_uniform
if(U.mutantrace_variation)
if(swap_back)
- U.adjusted = NORMAL_STYLE
+ U.suit_style = NORMAL_SUIT_STYLE
else
- U.adjusted = DIGITIGRADE_STYLE
+ U.suit_style = DIGITIGRADE_SUIT_STYLE
H.update_inv_w_uniform()
if(H.shoes)
var/obj/item/clothing/shoes/S = H.shoes
if(swap_back)
S.adjusted = NORMAL_STYLE
else
- S.adjusted = DIGITIGRADE_STYLE
+ S.adjusted = ALT_STYLE
H.update_inv_shoes()
diff --git a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm
index c6470ac19e..9d0757e26e 100644
--- a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm
+++ b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm
@@ -2,7 +2,7 @@
name = "shock collar"
desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.."
icon = 'modular_citadel/icons/obj/clothing/cit_neck.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/neck.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/neck.dmi'
icon_state = "shockcollar"
item_state = "shockcollar"
body_parts_covered = NECK
diff --git a/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm b/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm
index abf8793f79..c0f7a5d639 100644
--- a/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm
+++ b/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm
@@ -27,6 +27,8 @@
secondary_color = "#FFFFFF"
tertiary_color = "#808080"
can_adjust = FALSE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION // because I'm too lazy to port these to digi-compatible and to prove a point from /tg/ whining - Pooj
+ suit_style = NORMAL_SUIT_STYLE
/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon
. = ..()
@@ -63,7 +65,8 @@
item_state = "kilt"
primary_color = "#FFFFFF" //RGB in hexcode
secondary_color = "#F08080"
- tertiary_color = "#808080"
+ hastertiary = FALSE // so it doesn't futz with digilegs
+ body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/under/polychromic/skirt
name = "polychromic skirt"
@@ -74,6 +77,7 @@
primary_color = "#FFFFFF" //RGB in hexcode
secondary_color = "#F08080"
tertiary_color = "#808080"
+ body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/under/polychromic/shorts
name = "polychromic shorts"
@@ -84,6 +88,7 @@
primary_color = "#353535" //RGB in hexcode
secondary_color = "#808080"
tertiary_color = "#808080"
+ body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/under/polychromic/jumpsuit
name = "polychromic tri-tone jumpsuit"
@@ -116,6 +121,7 @@
primary_color = "#8CC6FF" //RGB in hexcode
secondary_color = "#808080"
tertiary_color = "#FF3535"
+ body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/under/polychromic/femtank
name = "polychromic feminine tank top"
@@ -126,6 +132,7 @@
hastertiary = FALSE
primary_color = "#808080" //RGB in hexcode
secondary_color = "#FF3535"
+ body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/under/polychromic/shortpants/pantsu
name = "polychromic panties"
@@ -136,6 +143,7 @@
hastertiary = FALSE
primary_color = "#FFFFFF" //RGB in hexcode
secondary_color = "#8CC6FF"
+ body_parts_covered = GROIN
/obj/item/clothing/under/polychromic/bottomless
name = "polychromic bottomless shirt"
@@ -146,7 +154,7 @@
hastertiary = FALSE
primary_color = "#808080" //RGB in hexcode
secondary_color = "#FF3535"
- body_parts_covered = CHEST //Because there's no bottom included
+ body_parts_covered = CHEST|ARMS //Because there's no bottom included
/obj/item/clothing/under/polychromic/shimatank
name = "polychromic tank top"
@@ -156,4 +164,5 @@
item_state = "rainbow"
primary_color = "#808080" //RGB in hexcode
secondary_color = "#FFFFFF"
- tertiary_color = "#8CC6FF"
\ No newline at end of file
+ tertiary_color = "#8CC6FF"
+ body_parts_covered = CHEST|GROIN
\ No newline at end of file
diff --git a/modular_citadel/code/modules/clothing/under/trek_under.dm b/modular_citadel/code/modules/clothing/under/trek_under.dm
index e058950638..00f84b7583 100644
--- a/modular_citadel/code/modules/clothing/under/trek_under.dm
+++ b/modular_citadel/code/modules/clothing/under/trek_under.dm
@@ -12,9 +12,10 @@
name = "Section 31 Uniform"
desc = "Oooh... right."
icon = 'modular_citadel/icons/mob/clothing/trek_item_icon.dmi'
- icon_override = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
item_state = ""
can_adjust = FALSE //to prevent you from "wearing it casually"
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
//TOS
/obj/item/clothing/under/rank/trek/command
@@ -92,7 +93,7 @@
desc = "The overcoat worn by all officers of the 2380s."
icon = 'modular_citadel/icons/mob/clothing/trek_item_icon.dmi'
icon_state = "trek_ds9_coat"
- icon_override = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
item_state = "trek_ds9_coat"
body_parts_covered = CHEST|GROIN|ARMS
permeability_coefficient = 0.50
@@ -136,7 +137,7 @@
desc = "A uniform jacket from the United Federation. Starfleet still uses this uniform and there are variations of it. Set phasers to awesome."
icon = 'modular_citadel/icons/mob/clothing/trek_item_icon.dmi'
- icon_override = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
icon_state = "fedcoat"
item_state = "fedcoat"
@@ -204,7 +205,7 @@
name = "Modern Federation Uniform Jacket"
desc = "A modern uniform jacket from the United Federation. Their Starfleet had recently started using these uniforms. Wearing this makes you feel like a competant commander."
icon = 'modular_citadel/icons/mob/clothing/trek_item_icon.dmi'
- icon_override = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
icon_state = "fedmodern"
item_state = "fedmodern"
body_parts_covered = CHEST|GROIN|ARMS
@@ -238,7 +239,7 @@
desc = "An officer's cap that demands discipline from the one who wears it."
icon = 'modular_citadel/icons/mob/clothing/trek_item_icon.dmi'
icon_state = "fedcapofficer"
- icon_override = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
item_state = "fedcapofficer_mob"
//Variants
diff --git a/modular_citadel/code/modules/clothing/under/turtlenecks.dm b/modular_citadel/code/modules/clothing/under/turtlenecks.dm
index bcd0fd46e2..f4e1ba8bd9 100644
--- a/modular_citadel/code/modules/clothing/under/turtlenecks.dm
+++ b/modular_citadel/code/modules/clothing/under/turtlenecks.dm
@@ -16,11 +16,12 @@
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
can_adjust = TRUE
alt_covers_chest = TRUE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/structure/closet/secure_closet/CMO/PopulateContents() //This is placed here because it's a very specific addition for a very specific niche
..()
new /obj/item/clothing/under/rank/chief_medical_officer/turtleneck(src)
-
+
/obj/item/clothing/under/syndicate/cosmetic
name = "tactitool turtleneck"
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
@@ -28,11 +29,12 @@
item_state = "bl_suit"
item_color = "tactifool"
has_sensor = TRUE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
-
+
/obj/item/clothing/under/syndicate/tacticool
has_sensor = TRUE
-
+
// Sweaters are good enough for this category too.
/obj/item/clothing/under/bb_sweater
@@ -44,7 +46,8 @@
body_parts_covered = CHEST|ARMS
can_adjust = 1
icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi'
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/bb_sweater/black
name = "black sweater"
diff --git a/modular_citadel/code/modules/clothing/under/under.dm b/modular_citadel/code/modules/clothing/under/under.dm
index 94c28fb1c3..1796df01be 100644
--- a/modular_citadel/code/modules/clothing/under/under.dm
+++ b/modular_citadel/code/modules/clothing/under/under.dm
@@ -10,18 +10,20 @@
desc = "A tactical security skirt for officers complete with Nanotrasen belt buckle."
icon = 'modular_citadel/icons/obj/clothing/cit_clothes.dmi'
icon_state = "secskirt"
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
item_state = "r_suit"
item_color = "secskirt"
+ body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/under/rank/head_of_security/skirt
name = "head of security's skirt"
desc = "A security skirt decorated for those few with the dedication to achieve the position of Head of Security."
icon = 'modular_citadel/icons/obj/clothing/cit_clothes.dmi'
icon_state = "hosskirt"
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
item_state = "gy_suit"
item_color = "hosskirt"
+ body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/under/corporateuniform
name = "corporate uniform"
@@ -31,15 +33,17 @@
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
item_state = "r_suit"
can_adjust = FALSE
-
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
+
/obj/item/clothing/under/rank/captain/femformal
name ="captain's female formal outfit"
desc = ""
icon = 'modular_citadel/icons/obj/clothing/cit_clothes.dmi'
icon_state = "lewdcap"
- icon_override = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
item_state = "lewdcap"
item_color = "lewdcap"
can_adjust = FALSE
sensor_mode = SENSOR_COORDS //it's still a captain's suit nerd
random_sensor = FALSE
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm
index bdd17e3c38..a243d48e27 100644
--- a/modular_citadel/code/modules/custom_loadout/custom_items.dm
+++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm
@@ -1,6 +1,9 @@
//For custom items.
+// Unless there's a digitigrade version make sure you add mutantrace_variation = NO_MUTANTRACE_VARIATION to all clothing/under and shoes - Pooj
+// Digitigrade stuff is uniform_digi.dmi and digishoes.dmi in modular_citadel/icons/mob
+
/obj/item/custom/ceb_soap
name = "Cebutris' Soap"
desc = "A generic bar of soap that doesn't really seem to work right."
@@ -23,7 +26,7 @@
desc = "The design on this seems a little too familiar."
icon = 'icons/obj/custom.dmi'
icon_state = "infcloak"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "infcloak"
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
@@ -33,7 +36,7 @@
desc = "A soft black collar that seems to stretch to fit whoever wears it."
icon = 'icons/obj/custom.dmi'
icon_state = "infcollar"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "infcollar"
item_color = null
tagname = null
@@ -64,7 +67,7 @@
icon = 'icons/obj/custom.dmi'
icon_state = "zombscarf"
desc = "A fashionable collar"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_color = "zombscarf"
dog_fashion = /datum/dog_fashion/head
@@ -73,7 +76,7 @@
desc = "An oddly special looking coat."
icon = 'icons/obj/custom.dmi'
icon_state = "labred"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "labred"
/obj/item/clothing/suit/toggle/labcoat/labredblack
@@ -81,7 +84,7 @@
desc = "An oddly special looking coat."
icon = 'icons/obj/custom.dmi'
icon_state = "labredblack"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "labredblack"
/obj/item/toy/plush/carrot
@@ -99,7 +102,7 @@
name = "carrot cloak"
desc = "A cloak in the shape and color of a carrot!"
icon = 'icons/obj/custom.dmi'
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
icon_state = "carrotcloak"
item_state = "carrotcloak"
w_class = WEIGHT_CLASS_SMALL
@@ -111,7 +114,7 @@
icon = 'icons/obj/custom.dmi'
icon_state = "satchel_carrot"
item_state = "satchel_carrot"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
/obj/item/storage/backpack/satchel/carrot/Initialize()
. = ..()
@@ -134,7 +137,7 @@
icon = 'icons/obj/custom.dmi'
icon_state = "festive"
item_state = "festive"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
@@ -142,7 +145,7 @@
name = "Alboroto Rosa mask"
icon = 'icons/obj/custom.dmi'
icon_state = "lucharzigfie"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "lucharzigfie"
/obj/item/clothing/head/hardhat/reindeer/fluff
@@ -185,7 +188,7 @@
desc = "You would swear this was in your nightmares after eating too many veggies."
icon = 'icons/obj/custom.dmi'
icon_state = "hos-g"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "hos-g"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
@@ -201,7 +204,7 @@
desc = "Smells like reactor four."
icon = 'icons/obj/custom.dmi'
item_state = "stalker"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
icon_state = "stalker"
/obj/item/reagent_containers/food/drinks/flask/steel
@@ -216,7 +219,7 @@
desc = "It's a collar..."
icon = 'icons/obj/custom.dmi'
icon_state = "petcollar-stripe"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "petcollar-stripe"
tagname = null
@@ -225,34 +228,37 @@
desc = "Just looking at this makes you want to sing."
icon = 'icons/obj/custom.dmi'
icon_state = "singer"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "singer"
item_color = "singer"
fitted = NO_FEMALE_UNIFORM
alternate_worn_layer = ABOVE_SHOES_LAYER
can_adjust = 0
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/sneakers/pink
icon = 'icons/obj/custom.dmi'
icon_state = "pink"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "pink"
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/neck/tie/bloodred
name = "Blood Red Tie"
desc = "A neosilk clip-on tie. This one has a black S on the tipping and looks rather unique."
icon = 'icons/obj/custom.dmi'
icon_state = "bloodredtie"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
/obj/item/clothing/suit/puffydress
name = "Puffy Dress"
desc = "A formal puffy black and red Victorian dress."
icon = 'icons/obj/custom.dmi'
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
icon_state = "puffydress"
item_state = "puffydress"
body_parts_covered = CHEST|GROIN|LEGS
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/suit/vermillion
name = "vermillion clothing"
@@ -261,7 +267,8 @@
item_state = "vermillion"
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
icon = 'icons/obj/custom.dmi'
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/bb_sweater/black/naomi
name = "worn black sweater"
@@ -300,7 +307,7 @@
name = "Kiara's Sabre"
desc = "This blade looks as dangerous as its owner."
icon = 'icons/obj/custom.dmi'
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
icon_state = "darksabre"
item_state = "darksabre"
lefthand_file = 'modular_citadel/icons/mob/inhands/stunsword_left.dmi'
@@ -313,7 +320,7 @@
name = "Ornate Sheathe"
desc = "An ornate and rather sinister looking sabre sheathe."
icon = 'icons/obj/custom.dmi'
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
icon_state = "darksheath"
item_state = "darksheath"
w_class = WEIGHT_CLASS_BULKY
@@ -332,7 +339,7 @@
name = "Dark Armor"
desc = "A dark, non-functional piece of armor sporting a red and black finish."
icon = 'icons/obj/custom.dmi'
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
icon_state = "darkcarapace"
item_state = "darkcarapace"
blood_overlay_type = "armor"
@@ -345,7 +352,7 @@
desc = "This cloak doesn't seem too special."
icon = 'icons/obj/custom.dmi'
icon_state = "wintergreencloak"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "wintergreencloak"
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
@@ -361,7 +368,7 @@
desc = "An oddly special looking coat."
icon = 'icons/obj/custom.dmi'
icon_state = "rdcoat"
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
item_state = "rdcoat"
/obj/item/custom/leechjar
@@ -393,15 +400,17 @@
/obj/item/clothing/shoes/lucky
name = "Lucky Jackboots"
icon = 'icons/obj/custom.dmi'
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
desc = "Comfy Lucky Jackboots with the word Luck on them."
item_state = "luckyjack"
icon_state = "luckyjack"
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/lunasune
name = "Divine Robes"
icon = 'icons/obj/custom.dmi'
- icon_override = 'icons/mob/custom_w.dmi'
+ alternate_worn_icon = 'icons/mob/custom_w.dmi'
desc = "Heavenly robes of the kitsune Luna Pumpkin,you can feel radiance coming from them."
item_state = "Divine_robes"
icon_state = "Divine_robes"
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
diff --git a/modular_citadel/icons/mob/uniform_digi.dmi b/modular_citadel/icons/mob/uniform_digi.dmi
new file mode 100644
index 0000000000..1a95d6a3bd
Binary files /dev/null and b/modular_citadel/icons/mob/uniform_digi.dmi differ
diff --git a/modular_citadel/icons/polyclothes/item/uniform.dmi b/modular_citadel/icons/polyclothes/item/uniform.dmi
index a0b6031a5d..87c3479a6a 100644
Binary files a/modular_citadel/icons/polyclothes/item/uniform.dmi and b/modular_citadel/icons/polyclothes/item/uniform.dmi differ
diff --git a/modular_citadel/icons/polyclothes/mob/uniform.dmi b/modular_citadel/icons/polyclothes/mob/uniform.dmi
index bf53ea7a3c..15b5262bab 100644
Binary files a/modular_citadel/icons/polyclothes/mob/uniform.dmi and b/modular_citadel/icons/polyclothes/mob/uniform.dmi differ