diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm
index 63944c94077..727947fc814 100644
--- a/code/game/objects/items/weapons/clown_items.dm
+++ b/code/game/objects/items/weapons/clown_items.dm
@@ -92,6 +92,25 @@
target.clean_blood()
return
+/obj/item/weapon/reagent_containers/food/snacks/soap/syndie/afterattack(atom/target, mob/user, proximity, params)
+ if(!proximity || ishuman(target)) return
+ // I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing.
+ // So this is a workaround. This also makes more sense from an IC standpoint. ~Carn
+ if(user.client && (target in user.client.screen))
+ to_chat(user, "You need to take that [target.name] off before cleaning it.")
+ else if(istype(target,/obj/effect/decal/cleanable))
+ to_chat(user, "You scrub \the [target.name] out.")
+ qdel(target)
+ else
+ if(target.fingerprints)
+ target.fingerprints = null
+ if(target.suit_fibers)
+ target.suit_fibers = null
+ to_chat(user, "You FULLY clean \the [target.name].")
+ target.clean_blood()
+ target.desc += "\nSomeone cleaned it up to a shine..."
+ return
+
/obj/item/weapon/reagent_containers/food/snacks/soap/attack(mob/target, mob/user, def_zone)
if(user.a_intent == INTENT_HARM)
..()