#define speed_z skill50
var key_space_off = 0;
VECTOR temp;
action act_player()
{
c_setminmax(my);
my.min_z += 40;
while(1)
{
my.x += (key_w-key_s)*5*time_step;
my.y += (key_a-key_d)*5*time_step;
vec_set(temp,vector(my.x,my.y,my.z-500));
c_trace(my.x,temp,IGNORE_ME | IGNORE_PASSABLE);
if(!trace_hit) vec_set(target,temp);
var target_height = target.z-my.min_z+40;
if(my.z > target_height+5 || my.speed_z > 0)
{
my.speed_z = maxv(my.speed_z-10*time_step,-80);
c_move(me,nullvector,vector(0,0,my.speed_z*time_step),IGNORE_PASSABLE);
}
else
{
my.speed_z = 0;
if(my.z > target_height) my.z += (target_height-my.z)*time_step;
else my.z = target_height;
if(key_space)
{
if(key_space_off)
{
my.speed_z = 50;
key_space_off = 0;
}
}
else key_space_off = 1;
}
wait(1);
}
}