diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index bc6f7259ebc..1bf3ec01750 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -584,6 +584,10 @@ BLIND // can't see anything
var/rolled_down = 0
var/basecolor
+/obj/item/clothing/under/rank/New()
+ sensor_mode = pick(0,1,2,3)
+ ..()
+
/obj/item/clothing/under/Destroy()
QDEL_LIST(accessories)
return ..()
@@ -687,34 +691,47 @@ BLIND // can't see anything
else
to_chat(usr, "You cannot roll down the uniform!")
-/obj/item/clothing/under/proc/remove_accessory(mob/user, obj/item/clothing/accessory/A)
- if(!(A in accessories))
- return
-
- A.on_removed(user)
- accessories -= A
- usr.update_inv_w_uniform()
-
/obj/item/clothing/under/verb/removetie()
set name = "Remove Accessory"
set category = "Object"
set src in usr
- if(!istype(usr, /mob/living)) return
- if(usr.stat) return
- if(!accessories.len) return
+ handle_accessories_removal()
+
+/obj/item/clothing/under/proc/handle_accessories_removal()
+ if(!isliving(usr))
+ return
+ if(usr.incapacitated())
+ return
+ if(!Adjacent(usr))
+ return
+ if(!accessories.len)
+ return
var/obj/item/clothing/accessory/A
if(accessories.len > 1)
A = input("Select an accessory to remove from [src]") as null|anything in accessories
else
A = accessories[1]
- src.remove_accessory(usr,A)
+ remove_accessory(usr,A)
-/obj/item/clothing/under/rank/New()
- sensor_mode = pick(0,1,2,3)
- ..()
+/obj/item/clothing/under/proc/remove_accessory(mob/user, obj/item/clothing/accessory/A)
+ if(!(A in accessories))
+ return
+ if(!isliving(user))
+ return
+ if(user.incapacitated())
+ return
+ if(!Adjacent(user))
+ return
+ A.on_removed(user)
+ accessories -= A
+ to_chat(user, "You remove [A] from [src].")
+ usr.update_inv_w_uniform()
/obj/item/clothing/under/emp_act(severity)
if(accessories.len)
for(var/obj/item/clothing/accessory/A in accessories)
A.emp_act(severity)
..()
+
+/obj/item/clothing/under/AltClick()
+ handle_accessories_removal()