I've had problems with terrains and collision in the past, and through my searches, I found it was an ent_move problem(Even the head programmer here, JCL, admitted it) and the A5 script template action "Player_move" uses ent_move. So the solution would be A) abandoning terrains and opting for blocks or B) Doing something I've never done before with ent_move(And I've tried many different things for many many hours my friend) or C) Upgrading to the A6 templates and use their "BiPlayer_move" something or another action instead or D) Re-write the player_move(I'd suggest copying it beforehand because it's really easy to mess up the templates) code to use C_move or write your own code that uses C_move. If you're not much of a programmer or don't really want to stumble through the process of figuring how to get c_move to work(Like I did), I could just send you my code and you could modify it for your purposes.
I would go into a detailed analysis of why I suspect ent_move doesn't work with terrains but it's just speculation.
Of course, if you've stretched your terrain to ginormous proportions, that may be causing your falling-for-it syndrome. I also noticed that I tended to fall through terrain where the slope was greater then 40-50 degress with ent_move, so you could probably just ensure your hills and mountains aren't steeper than that. If you aren't up for that restriction(I sure wasn't), then you'd probably have to use c_move or use the A_6 template scripts. Since I'm the do-it-yourselfer coder, I opted for my own custom code with c_move.