I came across this WDL the other day on a backup disk.
Here it is to anyone interested in the old code;

Code:
DEFINE max_alpha, SKILL1;

var cam_fog = 1800;
var wind[3];

function set_alpha
{
	my.alpha=0;
	wait(1);
	my.max_alpha = INT(random(25));
	if(my.max_alpha < 10){ my.max_alpha = 15; }
	while(my.alpha < my.max_alpha)
	{
		my.alpha += 0.5*time;
		wait(1);
	}
	my.alpha = my.max_alpha;
}

function fog_wind
{
	while(1)
	{
		wind.x = (random(1) - .5)*1.5;//*.4;
		wind.y = (random(1) - .5)*1.5;//*.4;
		wind.z = random(1)*.4;//*.1;
		sleep(5+random(3));
	}
}

function move_fog
{
	var roll_speed;
	var fade_distance = 500;
	
	roll_speed = random(2)-1; 
	
	while(me)
	{
		my.roll += roll_speed*time; //roll this sprite
		
		my.x += random(20)*wind.x*time;
		my.y += random(20)*wind.y*time;
		
		if(vec_dist(my.x, camera.x) < fade_distance) 
		{
			my.alpha = min(my.max_alpha,  vec_dist(camera.x, my.x) *my.max_alpha / fade_distance);
		}
		
		wait(1);
	}
}

function autofog
{
	my.scale_x = 2.8;
	my.scale_y = my.scale_x;
	my.scale_z = my.scale_x;
	
	var cam_pos[3];
	var randint;
	
	my.passable = on;
	my.transparent = on;
	my.bright = on;
	
	//fade in slowly
	set_alpha();

   //set orientation style
	my.oriented = off;
	my.facing = on;
	
	move_fog();
	
	while(me)
	{
		if(my.alpha < my.max_alpha) { my.alpha += time; }
	//	my.invisible = off;
		vec_set(cam_pos, camera.x);
		cam_pos.z = my.z;
		
		if(vec_dist(my.x, cam_pos) >= cam_fog)
		{
		//	my.invisible = on;
			while(my.alpha > 0) { my.alpha -= time; wait(1); }
			
			my.x = cycle(my.x, camera.x - cam_fog, camera.x + cam_fog);
			my.y = cycle(my.y, camera.y - cam_fog, camera.y + cam_fog);
			my.z = camera.z - random(100) + random (200);
		}
		
		wait(5);
	}
}

function generate_fog
{
	var randint;
	var fogcount=0;
	
	var pos_place[3];
	fog_wind();
	
	while(fogcount < 250)
	{
		fogcount+=1;
		
		pos_place.x = (camera.x - random(2500)) + (camera.x + random (2500));
		pos_place.y = (camera.y - random(2500)) + (camera.y + random (2500));
		pos_place.z = camera.z - random(100) + random (200);
		
		randint = INT(Random(2));
		if(randint == 0){ ent_create("dust1.tga", pos_place, autofog); }
		if(randint == 1){ ent_create("dust2.tga", pos_place, autofog); }
	//	wait(1);
	}
}



All you need to do is call generate_fog() in your main function, and done!

regards,


Formerly known as dennis_fantasy
Portfolio - http://www.designorhea.com/
Project - http://randomchance.cherrygames.org/