Ok. The problem is with the GLIDE flag in c_move(). Because the player is on a slope, the trace (without using USE_BOX) is thinking the player is above ground. Therefore, the c_move is pushing the player downwards, and sliding down the slope.
You could do many things. Turn off the GLIDE flag in c_move(), but this isn't desireable.
The most popular option would be to use USE_BOX with your downward trace. This way the player knows it's actually hitting the ground.
However, with the latter solution, you must configure your "slope sliding" manually, which is what we want here

.
So then you use the normal returned from the trace and do as I stated above, transforming the angles.
...I need to figure out this part still...
