Updating status to:
Confirmed
Updating severity to:
1 - Low
This happens because the direction check in the push command assumes NORTH = 0, SOUTH = 1, EAST = 2, WEST = 3, when actually NORTH = 1, SOUTH = 2, EAST = 3, WEST = 4. SliderNS is the only type that uses A_PUSHNS exclusively, so it's the only type affected.
run_robot.c line 4917
if((d_id == ROBOT_PUSHABLE) || (d_id == PLAYER) ||
((push_dir < 2) && (d_flag & A_PUSHNS)) ||
((push_dir >= 2) && (d_flag & A_PUSHEW)))
data.h line 186
enum dir
{
IDLE = 0,
NORTH = 1,
SOUTH = 2,
EAST = 3,
WEST = 4,
A separate variable int_dir is created which
does fit the expectations of the code here (as it is the result of evaluating push_dir), and this variable is the one that ultimately makes it to the push function. So, push_dir should be replaced with int_dir in this check.