diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 5ecba49ee27..4a3d973d609 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -208,7 +208,7 @@
if(W.w_class > max_w_class)
if(!stop_messages)
- usr << "[W] is too big for this [src]."
+ usr << "[W] is too big for [src]."
return 0
var/sum_w_class = W.w_class
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 5f38e215ee6..342d2288f6c 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -25,64 +25,62 @@
usr << "It contains [reagents.total_volume] unit\s of liquid!"
//everything else is visible, so doesn't need to be mentioned
+/obj/structure/janitorialcart/proc/wet_mop(obj/item/weapon/mop, mob/user)
+ if(reagents.total_volume < 1)
+ user << "[src] is out of water!"
+ else
+ reagents.trans_to(mop, 5) //
+ user << "You wet [mop] in [src]."
+ playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
+
+/obj/structure/janitorialcart/proc/put_in_cart(obj/item/I, mob/user)
+ user.drop_item()
+ I.loc = src
+ update_icon()
+ updateUsrDialog()
+ user << "You put [I] into [src]."
+ return I
/obj/structure/janitorialcart/attackby(obj/item/I, mob/user)
- if(istype(I, /obj/item/weapon/storage/bag/trash) && !mybag)
- user.drop_item()
- mybag = I
- I.loc = src
- update_icon()
- updateUsrDialog()
- user << "You put [I] into [src]."
+ var/fail_msg = "There is already one of those in [src]."
- else if(istype(I, /obj/item/weapon/mop))
+ if(istype(I, /obj/item/weapon/mop))
if(I.reagents.total_volume < I.reagents.maximum_volume) //if it's not completely soaked we assume they want to wet it, otherwise store it
- if(reagents.total_volume < 1)
- user << "[src] is out of water!"
- else
- reagents.trans_to(I, 5) //
- user << "You wet [I] in [src]."
- playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
- return
+ wet_mop(I, user)
+ return
+ if(isrobot(user))
+ user << "You are a robot. No."
+ return
if(!mymop)
- user.drop_item()
- mymop = I
- I.loc = src
- update_icon()
- updateUsrDialog()
- user << "You put [I] into [src]."
+ mymop=put_in_cart(I,user)
+ else user << fail_msg; return
- else if(istype(I, /obj/item/weapon/reagent_containers/spray) && !myspray)
- user.drop_item()
- myspray = I
- I.loc = src
- update_icon()
- updateUsrDialog()
- user << "You put [I] into [src]."
-
- else if(istype(I, /obj/item/device/lightreplacer) && !myreplacer)
- user.drop_item()
- myreplacer = I
- I.loc = src
- update_icon()
- updateUsrDialog()
- user << "You put [I] into [src]."
+ else if(isrobot(user))
+ user << "You are a robot. No."
+ return
+ else if(istype(I, /obj/item/weapon/storage/bag/trash))
+ if(!mybag)
+ mybag=put_in_cart(I, user)
+ else user << fail_msg; return
+ else if(istype(I, /obj/item/weapon/reagent_containers/spray))
+ if(!myspray)
+ myspray=put_in_cart(I, user)
+ else user << fail_msg; return
+ else if(istype(I, /obj/item/device/lightreplacer))
+ if(!myreplacer)
+ myreplacer = put_in_cart(I,user)
+ else user << fail_msg; return
else if(istype(I, /obj/item/weapon/caution))
if(signs < 4)
- user.drop_item()
- I.loc = src
+ put_in_cart(I, user)
signs++
- update_icon()
- updateUsrDialog()
- user << "You put [I] into [src]."
else
user << "[src] can't hold any more signs."
-
+ return
else if(mybag)
mybag.attackby(I, user)
-
/obj/structure/janitorialcart/attack_hand(mob/user)
user.set_machine(src)
var/dat