First off what's the 'angletracker' actually doing? What's sprite9?
there might be a better way of finding the angle of movement.
(I'll just use the player/enemy object name: 'Body' cos it's what I'm used to)
for example with platform behaviour you can just use:
Body.Platform.MovingAngle
and for a physics object you can use:
angle(0,0,Body.Physics.VelocityX,Body.Physics.VelocityY)
I haven't downloaded your cap because of the additional plugins, but also, you could try using 'anglediff' inside compare two values.. instead of 'is between values'. I find this generally works out any kinks with comparing angles
for example:
+For each Body
+system, compare two values: anglediff(Body.angletracker,0) is less than 45
->set animation... etc
+system, compare two values: anglediff(Body.angletracker,180) is less than 45
->set animation... etc
as you've probably guessed, this checks to see if the movement angle is within 45 degrees of 0, or if it's within 45 degrees of angle 180
-180 is Left, -90 is Up, 0 is Right, +90 is Down, and +180 is left again.
If you want to use 8 directions, then just use the angles inbetween and 'is within 22.5 degrees of x' instead