//=============================================================================
/*QUAKED func_particle (1 0 .83) (-8 -8 -8) (8 8 8) START_ON MODE_2
Spawn some particles.
-------- KEYS --------
target : Target the spawner at a target_position.
targetname : If set, a func_button or trigger can turn this spawner on and off.
xrandom : Adds randomness to the particle spawn in the X-Axis. (Default is 0.)
yrandom : Adds randomness to the particle spawn in the Y-Axis. (Default is 0.)
zrandom : Adds randomness to the particle spawn in the Z-Axis. (Default is 0.)
pcolor : This is a set of normalized RGB values for the color of the particles. (Default is 1.0 1.0 1.0, See Notes Below.)
velocity : Modifies the particle velocity. (Default is 100)
duration : Controls the life of each particle, in milliseconds. (Default is 3000.)
frequency : Controls how often the spawner generates a particle. (Default is 0.  See Notes below.)
speed : Controls the upward drift speed of particle movement for MODE_2 only.(See notes below.)
width : Sets the starting width of the particles (Default is 1.)
height : Sets the starting height of the particles (Default is 1.)
srandom : Allows individual particle sizes to be randomized within one spawner. (Default is 0. See Notes below.)
endsize : Sets a multiplier to be used with the width and height to determine the end size of the particles when their durations expire. (Default is 1.  See Notes below.)
ptype : Determines which graphic is used for each particle sprite. (Default is 1, See Notes Below.)
-------- SPAWNFLAGS --------
START_ON : The particle spawner will start in the ON position, spawning particles.
MODE_2 : Alternate particle behavior mode, see notes below.
-------- NOTES --------
***NOTE*** YOU MUST TARGET THIS AT A TARGET_POSITION ***NOTE***
Func_particle is a fairly complicated entity.  The xrandom, yrandom, and zrandom parameters allow you to increase the particle spread in all directions.  A good starting place is around 50 in each to direction for a mild spread.  If you leave them all at 0 you will get a straight line of particles.  Velocity modifies the "force" that propels the particles in the direction of your target_position.  The default is 100 and is generally a good starting point unless you need your particles to go long distances.
Duration controls how long a particle will stay around before fading itself out of existance.  You want this number as low as possible while still generating the effect you are after.  A particle that hits a solid object (like a floor) will be deleted automatically and will not float down to lower levels.  Frequency controls how many particles the spawn spits out per unit of time.  The default is 0 which allows the spawner to go at full speed.  A setting of 10 will lessen the number of particles significantly so do not set this value too large initially.
Pcolor allows you to select the color of the particles being emitted.  This key requires 3 normalized RGB values in x.x format, each separated by a space.  This is the same format as the color key for light entities.  It should look something like this:  0.4 0.9 0.2

Ptype allows you to select the graphic used on each particle sprite.  WFA includes 8 "pre-made" particle images and allows 2 "custom" images per map.  To use a custom image, you must make a shader named <mapname>_particle1 or <mapname>_particle2  where mapname is the BSP name (without directory structure) of your map (For instance, cancer1-wfa_particle1.)  The pre-made particle descriptions are listed below :

Type 1		Generic particle
Type 2		Generic bubble (Under Water Only)
Type 3		Large Flare
Type 4		Small Flare
Type 5		Smoke Puff (BLACK, DON'T SPECIFY COLOR)
Type 6		Snow Flake
Type 7		Four Point Star
Type 8		Steam Puff
Type 9		<mapname>_particle1 CUSTOM PARTICLE GRAPHIC
Type 10		<mapname>_particle2 CUSTOM PARTICLE GRAPHIC

The last two types must be a black and white jpg for color to work. See the particle shader in the pak for examples of already sepcified sprites.

MODE_2 changes the way the particles behave significantly.  Instead of being effected by gravity, they work in the opposite (somewhat like smoke.)  They try to rise towards the ceiling based on the speed parameter (if set to 0, they defy gravity.)  Additionally, when modifying the X,Y,and Z-randoms the ORIGIN is modified, not the trajectory.  This allows for the creation of particle "fields."

The srandom key allows you to randomize particle sizes within one spawner.  The same random value is applied to both the height and the width to preserve the size ratio for any given particle.  The formula for particle size looks like this:

	randomSize = ( <random fraction between 0 and 1> * <the Srandom key> );
	height = <the height key> + randomSize;
	width = <the width key> + randomSize;
	endheight = (<the height key> + randomSize) * <the endsize key>;
	endwidth = (<the width key> + randomSize) * <the endsize key>;

In short, you never want the srandom key to be larger than the height or the width.  This would potential cause particles with a negative size since the srandom key represent the MAXIMUM deviance that can occur for any particle.  This number can be positive or negative.  

The endsize key is a multiplier that is applied to the width and height to determine the end size of the particles when their durations expire.  You can use this to cause particles to shrink or grow during the course of their lives (But not both, and size change is linear.)  This number is positive for growth and negative for shrinkage.

As an additional note, you CAN point this entity at a moving entity (such as a door or a func_train) and it will adjust the direction of the spray of particles as its target entity moves around the world.  It does not currently adjust it's velocity.
Keep in mind that the 'origin' of a door is not neccessarily the center. If you want to point it to a mover, it -can help- to make a small brush as the center of the mover and select that brush first when creating the entity.
*/