diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index e578721f6ec..02d08966927 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -386,7 +386,7 @@
user << "You fill [RG] from [src]."
return
- else if(istype(O, /obj/item/weapon/melee/baton))
+ if(istype(O, /obj/item/weapon/melee/baton))
var/obj/item/weapon/melee/baton/B = O
if(B.bcell)
if(B.bcell.charge > 0 && B.status == 1)
@@ -404,6 +404,11 @@
"[user] was stunned by \his wet [O]!")
return
+ if(istype(O, /obj/item/weapon/mop))
+ O.reagents.add_reagent("water", 5)
+ user << "You wet [O] in [src]."
+ playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
+
var/turf/location = user.loc
if(!isturf(location)) return
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 9f478f5e14b..2a21fe917d8 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -237,12 +237,19 @@
volume = 70
flags = OPENCONTAINER
-/obj/item/weapon/reagent_containers/glass/bucket/attackby(var/obj/D, mob/user as mob, params)
- if(isprox(D))
- user << "You add [D] to [src]."
- qdel(D)
- user.put_in_hands(new /obj/item/weapon/bucket_sensor)
+/obj/item/weapon/reagent_containers/glass/bucket/attackby(var/obj/O, mob/user as mob, params)
+ if(istype(O, /obj/item/weapon/mop))
+ if(reagents.total_volume < 1)
+ user << "[src] is out of water!"
+ else
+ reagents.trans_to(O, 5)
+ user << "You wet [O] in [src]."
+ playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
+ else if(isprox(O))
+ user << "You add [O] to [src]."
+ qdel(O)
user.unEquip(src)
qdel(src)
+ user.put_in_hands(new /obj/item/weapon/bucket_sensor)
else
..()