diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index 41a0a747118..9601746443a 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -134,76 +134,88 @@
icon_state = "juicer0"
/obj/machinery/reagentgrinder/attackby(obj/item/I, mob/user, params)
- if(default_unfasten_wrench(user, I))
- return
+ if(default_unfasten_wrench(user, I))
+ return
- if(exchange_parts(user, I))
- return
+ if(exchange_parts(user, I))
+ return
- if(anchored && !beaker)
- if(default_deconstruction_screwdriver(user, "juicer_open", "juicer0", I))
- return
+ if(anchored && !beaker)
+ if(default_deconstruction_screwdriver(user, "juicer_open", "juicer0", I))
+ return
- if(panel_open && istype(I, /obj/item/crowbar))
- default_deconstruction_crowbar(I)
- return
+ if(panel_open && istype(I, /obj/item/crowbar))
+ default_deconstruction_crowbar(I)
+ return
- if (istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER) )
- if(beaker)
- to_chat(user, "There's already a container inside.")
- else if(panel_open)
- to_chat(user, "Close the maintenance panel first.")
- else
- if(!user.drop_item())
- return 1
- beaker = I
- beaker.loc = src
- update_icon()
- src.updateUsrDialog()
- return 1 //no afterattack
+ if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER) )
+ if(beaker)
+ to_chat(user, "There's already a container inside.")
+ else if(panel_open)
+ to_chat(user, "Close the maintenance panel first.")
+ else
+ if(!user.drop_item())
+ return FALSE
+ beaker = I
+ beaker.loc = src
+ update_icon()
+ updateUsrDialog()
+ return TRUE //no afterattack
- if(is_type_in_list(I, dried_items))
- if(istype(I, /obj/item/reagent_containers/food/snacks/grown))
- var/obj/item/reagent_containers/food/snacks/grown/G = I
- if(!G.dry)
- to_chat(user, "You must dry that first!")
- return 1
+ if(is_type_in_list(I, dried_items))
+ if(istype(I, /obj/item/reagent_containers/food/snacks/grown))
+ var/obj/item/reagent_containers/food/snacks/grown/G = I
+ if(!G.dry)
+ to_chat(user, "You must dry that first!")
+ return FALSE
- if(holdingitems && holdingitems.len >= limit)
- to_chat(usr, "The machine cannot hold anymore items.")
- return 1
+ if(holdingitems && holdingitems.len >= limit)
+ to_chat(usr, "The machine cannot hold anymore items.")
+ return FALSE
- //Fill machine with a bag!
- if(istype(I, /obj/item/storage/bag))
- var/obj/item/storage/bag/B = I
- for (var/obj/item/reagent_containers/food/snacks/grown/G in B.contents)
- B.remove_from_storage(G, src)
- holdingitems += G
- if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
- to_chat(user, "You fill the All-In-One grinder to the brim.")
- break
+ //Fill machine with a bag!
+ if(istype(I, /obj/item/storage/bag))
+ var/obj/item/storage/bag/B = I
+ if(!B.contents.len)
+ to_chat(user, "[B] is empty.")
+ return FALSE
- if(!I.contents.len)
- to_chat(user, "You empty the plant bag into the All-In-One grinder.")
+ var/original_contents_len = B.contents.len
- src.updateUsrDialog()
- return 1
+ for(var/obj/item/G in B.contents)
+ if(is_type_in_list(G, blend_items) || is_type_in_list(G, juice_items))
+ B.remove_from_storage(G, src)
+ holdingitems += G
+ if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
+ to_chat(user, "You fill the All-In-One grinder to the brim.")
+ break
- if (!is_type_in_list(I, blend_items) && !is_type_in_list(I, juice_items))
- if(user.a_intent == INTENT_HARM)
- return ..()
- else
- to_chat(user, "Cannot refine into a reagent!")
- return 1
+ if(B.contents.len == original_contents_len)
+ to_chat(user, "Nothing in [B] can be put into the All-In-One grinder.")
+ return FALSE
+ else if(!B.contents.len)
+ to_chat(user, "You empty all of [B]'s contents into the All-In-One grinder.")
+ else
+ to_chat(user, "You empty some of [B]'s contents into the All-In-One grinder.")
- if(user.drop_item())
- I.loc = src
- holdingitems += I
- src.updateUsrDialog()
- return 0
+ updateUsrDialog()
+ return TRUE
+
+ if(!is_type_in_list(I, blend_items) && !is_type_in_list(I, juice_items))
+ if(user.a_intent == INTENT_HARM)
+ return ..()
+ else
+ to_chat(user, "Cannot refine into a reagent!")
+ return TRUE
+
+ if(user.drop_item())
+ I.loc = src
+ holdingitems += I
+ src.updateUsrDialog()
+ return FALSE
/obj/machinery/reagentgrinder/attack_ai(mob/user)
- return 0
+ return FALSE
/obj/machinery/reagentgrinder/attack_hand(mob/user)
user.set_machine(src)
@@ -301,8 +313,8 @@
/obj/machinery/reagentgrinder/proc/is_allowed(obj/item/reagent_containers/O)
for (var/i in blend_items)
if(istype(O, i))
- return 1
- return 0
+ return TRUE
+ return FALSE
/obj/machinery/reagentgrinder/proc/get_allowed_by_id(obj/item/O)
for (var/i in blend_items)