diff --git a/code/modules/plumbing/plumbers/_plumb_machinery.dm b/code/modules/plumbing/plumbers/_plumb_machinery.dm index 24410a114e4..09ce731a747 100644 --- a/code/modules/plumbing/plumbers/_plumb_machinery.dm +++ b/code/modules/plumbing/plumbers/_plumb_machinery.dm @@ -26,7 +26,10 @@ . = ..() anchored = bolt create_reagents(buffer, reagent_flags) - AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ) + AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) + +/obj/machinery/plumbing/proc/can_be_rotated(mob/user,rotation_type) + return TRUE /obj/machinery/plumbing/examine(mob/user) . = ..() diff --git a/code/modules/plumbing/plumbers/grinder_chemical.dm b/code/modules/plumbing/plumbers/grinder_chemical.dm new file mode 100644 index 00000000000..9ef1d192b24 --- /dev/null +++ b/code/modules/plumbing/plumbers/grinder_chemical.dm @@ -0,0 +1,65 @@ +/obj/machinery/plumbing/grinder_chemical + name = "chemical grinder" + desc = "chemical grinder." + icon_state = "grinder_chemical" + layer = ABOVE_ALL_MOB_LAYER + reagent_flags = TRANSPARENT | DRAINABLE + rcd_cost = 30 + rcd_delay = 30 + buffer = 400 + var/eat_dir = NORTH + +/obj/machinery/plumbing/grinder_chemical/Initialize(mapload, bolt) + . = ..() + AddComponent(/datum/component/plumbing/simple_supply, bolt) + +/obj/machinery/plumbing/grinder_chemical/can_be_rotated(mob/user,rotation_type) + if(anchored) + to_chat(user, "It is fastened to the floor!") + return FALSE + switch(eat_dir) + if(WEST) + eat_dir = NORTH + return TRUE + if(EAST) + eat_dir = SOUTH + return TRUE + if(NORTH) + eat_dir = EAST + return TRUE + if(SOUTH) + eat_dir = WEST + return TRUE + +/obj/machinery/plumbing/grinder_chemical/CanPass(atom/movable/AM) + . = ..() + if(!anchored) + return + var/move_dir = get_dir(loc, AM.loc) + if(move_dir == eat_dir) + return TRUE + +/obj/machinery/plumbing/grinder_chemical/Crossed(atom/movable/AM) + . = ..() + grind(AM) + +/obj/machinery/plumbing/grinder_chemical/proc/grind(atom/AM) + if(stat & NOPOWER) + return + if(reagents.holder_full()) + return + if(!isitem(AM)) + return + var/obj/item/I = AM + if(I.juice_results || I.grind_results) + if(I.juice_results) + I.on_juice() + reagents.add_reagent_list(I.juice_results) + if(I.reagents) + I.reagents.trans_to(src, I.reagents.total_volume, transfered_by = src) + qdel(I) + return + I.on_grind() + reagents.add_reagent_list(I.grind_results) + qdel(I) + diff --git a/icons/obj/plumbing/plumbers.dmi b/icons/obj/plumbing/plumbers.dmi index b9ce30e4eb6..87b94472e67 100644 Binary files a/icons/obj/plumbing/plumbers.dmi and b/icons/obj/plumbing/plumbers.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 06580ae52ba..428937f3543 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2408,6 +2408,7 @@ #include "code\modules\plumbing\plumbers\acclimator.dm" #include "code\modules\plumbing\plumbers\destroyer.dm" #include "code\modules\plumbing\plumbers\filter.dm" +#include "code\modules\plumbing\plumbers\grinder_chemical.dm" #include "code\modules\plumbing\plumbers\pill_press.dm" #include "code\modules\plumbing\plumbers\pumps.dm" #include "code\modules\plumbing\plumbers\reaction_chamber.dm"