Always try to include a type. The engine will guess what your particle is meant to be otherwise, based on textures and other nonsense. That stuff is generally unreliable, and probably not what you want.
Chaining:
You can add multiple particle descriptions to a single effect. The first should be 'r_part foo', and the others should be 'r_part +foo'. Particles without a + will reset the chain.
Effect naming:
Effects loaded by r_particledesc will be given an internal prefix, eg: foo.cfg.
If the gamecode explicitly states foo.bar, your foo.cfg will automatically be executed, and will automatically use the bar effect from it.
The effect can still be overriden from a custom config by explicitly naming the effect foo.bar - the effect bar in the config foo will not override this, but would override bar on its own.
Scale:
scale values are defined in 1/4th qu, for some reason.
scalefactor typically needs to be explicitly set to 1. this value affects how the particle scales with distance from view, rather than the actual size of the particle.
if tscale is set, all units are divided by this. it is the virtual size of your texture. So a value of 1 means that your texture coords must be between 0 and 1. But if it properly matches your texture's size, the coords are in pixels.
if rsmax is present, each particle will use a random image. These images must be on a single row in your particle font.
rsstep specifies the stride (gap from one to the next) in your particle font, and is only needed if rsmax is present and greater than 1.
rotationstart <min> [max]
the particle will start with a rotation rotated between min and max.
if max is missing, the particle will always start with the min value.
beamtexstep <value>
only valid if the effect is a beam.
specifies the number of quake units per beam texture repitition.
beamtexspeed <value>
only valid if the effect is a beam.
controls how fast the texture scrolls on the beam.
scale <min> [max]
particles will start with a diameter of this many quake units.
uniformcircle: particles are spawned in a circle with uniform distance between and from the center. z=0.
syncfield: particles spawn at predictable locations based upon time within a rough sphere. Only useful for effects that are regenerated+replaced every frame.
distball:
*default*: regular box. particles are spawned inside an axially aligned box.
for trail effects, mode may be one of:
spiral: particles are given velocities perpendicular to the direction based on the distance moved.
tracer: particles spawn with alternating horizontal velocities (a wake effect).
When the effect is first spawned, the named sound will play with the given volume and attenuation at the center point. This may not work with all spawn methods, as it will ignore any count scales.
lightradius <radius>
lightradiusfade <radiuspersecond>
lightrgb <r> <g> <b>
lightrgbfade <r/s> <g/s> <b/s>
lighttime <maxage>
Spawns a dlight when the effect is spawned.
dlight is removed when radius drops to 0 or the age is exceeded.
at this time it is not possible to override the corona/specular levels.
lightcubemap <cubemapnum>
value 0 means no cubemap.
otherwise with eg cubemap 5, uses image files cubemaps/5ft.tga, cubemaps/5bk.tga, etc.
fixme: at the current time, the cubemap is world-aligned and cannot rotate.
model <name> <firstframe> <endframe> <framerate> <alpha>
spawns sprites or models that fly away with random angles and run through some frame sequence. handy for simple gib effects.