Couldn't you just use Blitz collisions with the stop method?
Then check the collision normals for the angles (CollisionNX, ...NZ, etc.), and then just reverse (* -1) the velocity of the axis' that hit?
Then check the collision normals for the angles (CollisionNX, ...NZ, etc.), and then just reverse (* -1) the velocity of the axis' that hit?