diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm
index 1274395757d..9db76c6aaac 100644
--- a/code/game/objects/items/weapons/mop.dm
+++ b/code/game/objects/items/weapons/mop.dm
@@ -32,7 +32,8 @@
if(o.reagents.total_volume < 1)
to_chat(user, "[o] is out of water!")
if(istype(o, /obj/structure/mopbucket))
- mopbucket_insert(user, o)
+ var/obj/structure/mopbucket/mopbucket = o
+ mopbucket.mopbucket_insert(user, o)
if(istype(o, /obj/structure/janitorialcart))
janicart_insert(user, o)
return
@@ -128,7 +129,4 @@
/obj/item/mop/advanced/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
return
-/obj/item/mop/advanced/cyborg/mopbucket_insert(mob/user, obj/structure/mopbucket/J)
- return
-
#undef MOP_SOUND_CD
diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm
index 1a5d501f77a..eae1f937574 100644
--- a/code/game/objects/structures/mop_bucket.dm
+++ b/code/game/objects/structures/mop_bucket.dm
@@ -23,32 +23,34 @@
GLOB.janitorial_equipment -= src
return ..()
-/obj/structure/mopbucket/attackby(obj/item/W as obj, mob/user as mob, params)
+/obj/structure/mopbucket/attackby(obj/item/W, mob/user, params)
if(W.is_robot_module())
to_chat(user, "You cannot interface your modules with [src]!")
return
- if(istype(W, /obj/item/mop))
- var/obj/item/mop/M = W
- if(M.reagents.total_volume < M.reagents.maximum_volume)
- M.wet_mop(src, user)
- return
- if(!stored_mop)
- M.mopbucket_insert(user, src)
- return
- to_chat(user, "Theres already a mop in the mopbucket.")
- return
-/obj/structure/mopbucket/proc/put_in_cart(obj/item/mop/I, mob/user)
- user.drop_item()
+ if(istype(W, /obj/item/mop))
+ var/obj/item/mop/attacking_mop = W
+ if(attacking_mop.reagents.total_volume < attacking_mop.reagents.maximum_volume)
+ attacking_mop.wet_mop(src, user)
+ return
+
+ if(!user.unEquip(attacking_mop))
+ to_chat(user, "[attacking_mop] is stuck to your hand!")
+ return
+
+ if(!stored_mop)
+ mopbucket_insert(user, attacking_mop)
+ return
+
+ to_chat(user, "There is already a mop in the mopbucket.")
+
+/obj/structure/mopbucket/proc/mopbucket_insert(mob/user, obj/item/mop/I)
+ stored_mop = I
I.forceMove(src)
to_chat(user, "You put [I] into [src].")
update_icon(UPDATE_OVERLAYS)
return
-/obj/item/mop/proc/mopbucket_insert(mob/user, obj/structure/mopbucket/J)
- J.stored_mop = src
- J.put_in_cart(src, user)
-
/obj/structure/mopbucket/on_reagent_change()
update_icon(UPDATE_OVERLAYS)