diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 8fe2e60fb2d..0af4a90cb9b 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -557,7 +557,7 @@
//autodetect rollability
if(rolled_down < 0)
- if(((worn_state) in icon_states(rolled_down_icon)) || (worn_state + "_d_s" in icon_states(icon)))
+ if(("[worn_state]_d_s" in icon_states(INV_W_UNIFORM_DEF_ICON)) || ("[worn_state]_s" in icon_states(rolled_down_icon)) || ("[worn_state]_d_s" in icon_states(icon_override)))
rolled_down = 0
/obj/item/clothing/under/proc/update_rolldown_status()
@@ -575,7 +575,7 @@
else if ("[worn_state]_s" in icon_states(rolled_down_icon))
under_icon = rolled_down_icon
else
- under_icon = icon
+ under_icon = INV_W_UNIFORM_DEF_ICON
// The _s is because the icon update procs append it.
if((under_icon == rolled_down_icon && "[worn_state]_s" in icon_states(under_icon)) || ("[worn_state]_d_s" in icon_states(under_icon)))
@@ -600,7 +600,7 @@
else if ("[worn_state]_s" in icon_states(rolled_down_sleeves_icon))
under_icon = rolled_down_sleeves_icon
else
- under_icon = icon
+ under_icon = INV_W_UNIFORM_DEF_ICON
// The _s is because the icon update procs append it.
if((under_icon == rolled_down_sleeves_icon && "[worn_state]_s" in icon_states(under_icon)) || ("[worn_state]_r_s" in icon_states(under_icon)))
@@ -685,12 +685,17 @@
if(rolled_down)
body_parts_covered = initial(body_parts_covered)
body_parts_covered &= ~(UPPER_TORSO|ARMS)
- icon_override = rolled_down_icon
- item_state_slots[slot_w_uniform_str] = "[worn_state]"
+ if("[worn_state]_s" in icon_states(rolled_down_icon))
+ icon_override = rolled_down_icon
+ item_state_slots[slot_w_uniform_str] = "[worn_state]"
+ else
+ item_state_slots[slot_w_uniform_str] = "[worn_state]_d"
+
usr << "You roll down your [src]."
else
body_parts_covered = initial(body_parts_covered)
- icon_override = initial(icon_override)
+ if(icon_override == rolled_down_icon)
+ icon_override = initial(icon_override)
item_state_slots[slot_w_uniform_str] = "[worn_state]"
usr << "You roll up your [src]."
update_clothing_icon()
@@ -713,12 +718,16 @@
rolled_sleeves = !rolled_sleeves
if(rolled_sleeves)
body_parts_covered &= ~(ARMS)
- icon_override = rolled_down_sleeves_icon
- item_state_slots[slot_w_uniform_str] = "[worn_state]"
+ if("[worn_state]_s" in icon_states(rolled_down_sleeves_icon))
+ icon_override = rolled_down_sleeves_icon
+ item_state_slots[slot_w_uniform_str] = "[worn_state]"
+ else
+ item_state_slots[slot_w_uniform_str] = "[worn_state]_r"
usr << "You roll up your [src]'s sleeves."
else
body_parts_covered = initial(body_parts_covered)
- icon_override = initial(icon_override)
+ if(icon_override == rolled_down_sleeves_icon)
+ icon_override = initial(icon_override)
item_state_slots[slot_w_uniform_str] = "[worn_state]"
usr << "You roll down your [src]'s sleeves."
update_clothing_icon()