diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index bdf0c955ca4..c7712fef200 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -34,6 +34,23 @@
usr.put_in_hands(src)
src.add_fingerprint(user)
+/obj/item/clothing/accessory/attack(mob/living/carbon/human/H, mob/living/user)
+ // This code lets you put accessories on other people by attacking their sprite with the accessory
+ if(istype(H))
+ if(H.wear_suit && H.wear_suit.flags_inv & HIDEJUMPSUIT)
+ user << "[H]'s body is covered, and you cannot attach \the [src]."
+ return 1
+ var/obj/item/clothing/under/U = H.w_uniform
+ if(istype(U))
+ user.visible_message("[user] is putting a [src.name] on [H]'s [U.name]!", "You begin to put a [src.name] on [H]'s [U.name]...")
+ if(do_after(user,40,target=H) && H.w_uniform == U)
+ user.visible_message("[user] puts a [src.name] on [H]'s [U.name]!", "You finish putting a [src.name] on [H]'s [U.name].")
+ U.attackby(src, user)
+ else
+ user << "[H] is not wearing anything to attach \the [src] to."
+ return 1
+ return ..()
+
//default attackby behaviour
/obj/item/clothing/accessory/attackby(obj/item/I, mob/user, params)
..()