GrayscaleRange, Bit mask will only let you extract a single bit from the mask. most likely it worked but the slice it extracted from your gradient was razor thin so you didn't see it. If you want to extract a certain range the math is pretty simple.
SlopeBlend - Used DOT function to compare the VertexNormalWS to the Z vector (Constant3Vector 0,0,1). This paints your vector in a gradient representing the angle of the vector compared to Z axis. So, the rest of the math is to confine the gradient to the transition from slope to plain (slope starts at .7). Lerp and clamp it (turns out I was right to clamp it in the end, as no clamp would add weird colors to your textures.) Oneminus node is to reverse the gradient
ExtractMasks - All the inputs are plugged to the output of the final lerp of the previous screenshot. At this point the material is already functional; the masks we got can be used to paint the material with your textures. Next post - fine-tuning the material.
So, first we blend the Grass (G) maps with the Pebble (B) maps using the Dirt (B) mask we got in the beginning. Then, we blend the result with the Cliff (R) maps using the Cliff (R) mask. We still need the Grass (G) mask for grass output.