var radius = 40;
function particle_move(PARTICLE *p)
{
p.x = radius * sinv((p.lifespan/2)) * cosv(p.lifespan+p.skill_a);
p.y = radius * sinv((p.lifespan/2)) * sinv(p.lifespan+p.skill_a);
p.z = -radius * cosv((p.lifespan/2))+42;
p.lifespan -= p.skill_b * time_step;
}
function particle_init(PARTICLE *p)
{
p.lifespan = 360;
p.alpha = 40+random(60);
p.bmap = snow_map;
p.size = 1+random(3);
p.vel_x = 0;
p.vel_y = 0;
p.vel_z = 0;
p.flags = MOVE;
p.event = particle_move;
p.skill_a = random(360);
p.skill_b = 1+random(3);
}
function create_particle()
{
while(actor == NULL) {wait (1);}
while(1)
{
effect(particle_init, 1, vector(actor.x, actor.y, actor.z+45), normal);
wait(1);
}
}