I dont have pro myself, so I cant test at all, but try using the USE_POLYGON in the c-trace call.
The physics may "hide" the entitys polygon flag.

As an alternative, could it be done by using c-trace to find the nearest vertex and get its global XYZ
and use that Z to calculate the surface height?
eg
Code:
var dist = c_trace(me, vector(me.x, me.y, me.z-1000), IGNORE_ME|SCAN_TEXTURE|ETC);
if((dist)&&(you)&&(hit.vertex))
{
   vec_for_vertex(hit.x, you, hit.vertex);
   dist = vec_dist (me.x, hit.x);
}
else
{  vec_set(hit.x, nullvector);   dist = 0;   }
///
///now "dist" equals distance from ME to the vertex nearest the 
///downward trace and hit.XYZ is set to the global co-ordinate of it.
///
///otherwise, if no entity or terrain was hit, "dist" is set to 0,
///and hit.XYZ is set to nullvector.


Get what I mean?


"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial