From 3f1416e2e5b120f8a8c2412bb9d64b4f4a7bdb89 Mon Sep 17 00:00:00 2001 From: skull132 Date: Fri, 25 Mar 2016 16:52:49 +0200 Subject: [PATCH] Fixes #179 Merge pull request #11121 from Dennok/patch-1 --- code/modules/recycling/conveyor2.dm | 40 +++++++++-------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 32d6652e9d3..957c3b574dc 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -25,31 +25,14 @@ ..(loc) if(newdir) set_dir(newdir) - switch(dir) - if(NORTH) - forwards = NORTH - backwards = SOUTH - if(SOUTH) - forwards = SOUTH - backwards = NORTH - if(EAST) - forwards = EAST - backwards = WEST - if(WEST) - forwards = WEST - backwards = EAST - if(NORTHEAST) - forwards = EAST - backwards = SOUTH - if(NORTHWEST) - forwards = SOUTH - backwards = WEST - if(SOUTHEAST) - forwards = NORTH - backwards = EAST - if(SOUTHWEST) - forwards = WEST - backwards = NORTH + + if(dir & (dir-1)) // Diagonal. Forwards is *away* from dir, curving to the right. + forwards = turn(dir, 135) + backwards = turn(dir, 45) + else + forwards = dir + backwards = turn(dir, 180) + if(on) operating = 1 setmove() @@ -57,8 +40,9 @@ /obj/machinery/conveyor/proc/setmove() if(operating == 1) movedir = forwards - else + else if(operating == -1) movedir = backwards + else operating = 0 update() /obj/machinery/conveyor/proc/update() @@ -96,8 +80,8 @@ /obj/machinery/conveyor/attackby(var/obj/item/I, mob/user) if(isrobot(user)) return //Carn: fix for borgs dropping their modules on conveyor belts if(I.loc != user) return // This should stop mounted modules ending up outside the module. - - user.drop_item(src) + + user.drop_item(get_turf(src)) return // attack with hand, move pulled object onto conveyor