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()