action act_emitter()
{
while(1)
{
for(k = 0; k < 3; k++)
{
p_lightning1_size = 4+random(4);
i = vec_dist(my.x,p_effect_target);
j = floor(i/32)-1;
vec_set(temp,my.x);
vec_set(temp3,my.x);
for(i = 0; i < j; i ++)
{
vec_diff(temp2,p_effect_target,temp);
vec_normalize(temp2,32);
vec_add(temp3,temp2);
temp3.z += (1-random(2))*(8+k*3);
vec_diff(temp2,temp3,temp);
effect(p_lightning1,1,temp,temp2);
effect(p_lightning2,1,temp,temp2);
vec_set(temp,temp3);
}
vec_diff(temp2,p_effect_target,temp);
effect(p_lightning1,1,temp,temp2);
effect(p_lightning2,1,temp,temp2);
}
my.tilt += 2*time_step;
my.tilt %= 360;
vec_set(temp,vector(700,0,0));
vec_rotate(temp,my.pan);
vec_add(temp,my.x);
c_trace(my.x,temp,IGNORE_MODELS);
if(trace_hit)
{
effect(p_laser_hit,3,target,normal);
vec_set(temp,target);
}
vec_diff(temp2,temp,my.x);
j = vec_length(temp2)/16;
for(i = 0; i < j; i++)
{
vec_lerp(temp3,my.x,temp,i/j);
effect(p_laser,1,temp3,temp2);
effect(p_laser2,1,temp3,temp2);
}
time_factor = 1-key_ctrl*0.75;
wait(1);
}
}