This is perhaps a bit 'unortodox' but I found out I can use a SPRITE as an invisible ramp. I only need a sprite in the right proportions of the stair (say, 1x5) and make it invisible and Polygon ON. I can then scale and rotate the sprite to match the stairs.
A bit odd, but far easier than creating map entities, and I bet they build level and also realtime-render faster.

Invisible entities are not ignored by c_move/c_trace. Invisible blocks are.
I'd really like it wasn't that way. What are the possible uses of an invisible block, other than blocking movement? What is the difference between an invisible block and a deleted block?