//NO changes in any other functions but these two...
function flame_alphafade(PARTICLE *p)
{
start_color[0] = 200;
start_color[1] = 180;
start_color[2] = 100;
end_color[0] = 128;
end_color[1] = 50;
end_color[2] = 50;
vec_lerp(current_color[0], end_color[0], start_color[0], p.lifespan / flame_lifespan);
p.red = current_color[0];
p.green = current_color[1];
p.blue = current_color[2];
p.alpha = p.lifespan / flame_lifespan * 100;// * 0.3;
if (p.alpha <= 0) p.lifespan = 0;
VECTOR tVec;
vec_diff(tVec, p.x, p.skill_x); //subtract Old camera position
vec_rotate(tVec, vec_diff(NULL, camera.pan, p.skill1)); //rotate by old camera pan/tilt/roll
vec_add(tVec, camera.x); //add new camera position
vec_set(p.x, tVec); //position particle accordingly
//
vec_set(p.skill1, camera.pan); //set new LAST camera pan/tilt/roll
vec_set(p.skill_x, camera.x); //set new LAST camera position
}
// particle function: generates a fading explosion into vel direction
function effect_flame(PARTICLE *p)
{
var temp[3];
flame_randomize(temp, 1);
vec_add (p.vel_x, temp);
p.bmap = flame_particle;
p.flags |= (BRIGHT | MOVE | TRANSLUCENT);
p.lifespan = flame_lifespan;
p.size = 3;
vec_set(p.skill1, camera.pan); //set LAST camera pan/tilt/roll
vec_set(p.skill_x, camera.x); //set LAST camera position
p.event = flame_alphafade; // change to a shorter, faster function
}