And this version proves that the c_trace is working ...because it beeps.

Code:
function village_func()
{
my.polygon = on;
vec_set (temp, my.pos);
temp.z -= 1000;
result -= c_trace (my.pos, temp, ignore_me + ignore_sprites + use_box );
if(result){beep();
}
}

function sioux_camp()
{
temp.x = -96;
temp.y = -1164;
temp.z = result;
ent_create("tepee_village.mdl",temp,village_func);
}




But the village is then placed at 0, not on the terrain surface. That seems to indicate that c_trace is identifying 0 as the terrain surface. In this instance the surface is at z = 10.

I'm losing my mind.