diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm index b5fd04a98f2..63a48dcd976 100644 --- a/code/game/machinery/harvester.dm +++ b/code/game/machinery/harvester.dm @@ -13,6 +13,7 @@ var/harvesting = FALSE var/warming_up = FALSE var/list/operation_order = list() //Order of wich we harvest limbs. + var/output_dir = SOUTH //Direction to drop the limbs in var/allow_clothing = FALSE var/allow_living = FALSE @@ -58,6 +59,12 @@ /obj/machinery/harvester/AltClick(mob/user) . = ..() + if(!user.can_perform_action(src)) + return + if(panel_open) + output_dir = turn(output_dir, -90) + to_chat(user, span_notice("You change [src]'s output settings, setting the output to [dir2text(output_dir)].")) + return if(!can_interact(user)) return if(harvesting || !user || !isliving(user) || state_open) @@ -121,17 +128,7 @@ if(!LAZYLEN(operation_order)) //The list is empty, so we're done here end_harvesting(success = TRUE) return - var/turf/target - for(var/adir in list(EAST,NORTH,SOUTH,WEST)) - var/turf/T = get_step(src,adir) - if(!T) - continue - if(isclosedturf(T)) - continue - target = T - break - if(!target) - target = get_turf(src) + var/turf/target = get_step(src, output_dir) for(var/obj/item/bodypart/BP in operation_order) //first we do non-essential limbs BP.drop_limb() C.emote("scream") @@ -219,4 +216,4 @@ else if(!harvesting) . += span_notice("Alt-click [src] to start harvesting.") if(in_range(user, src) || isobserver(user)) - . += span_notice("The status display reads: Harvest speed at [interval*0.1] seconds per organ.") + . += span_notice("The status display reads: Harvest speed at [interval*0.1] seconds per organ. Outputting to the [dir2text(output_dir)].")