///////////////////////////////
//rain
r_part te_rain
{
	texture ball; scalefactor 1; count 1; alpha 0.4; rgb 255 255 255; die 2; veladd 2; scale 2; type texturedspark
	cliptype rainsplash
	clipbounce 1
	clipcount 5
}

r_part rainsplash
{
	randomvel 50 50
	count 1;
	texture ball; scalefactor 1; alpha 0.1; rgb 255 255 255; die 0.4; scale 50;
	stretchfactor 4
	veladd 50; scale 1; type texturedspark
	gravity 400
}

///////////////////////////////
//rocket trail

// flame trail
r_part tr_rocket
{
	texture "particles/fteparticlefont.tga"
	tcoords 97 97 191 191 256
	step 1
	scale 12
	alpha 0.4
	die 0.5
	rgb 255 127 100
	rgbdelta -14 -300 -300
	blend add
	scalefactor 1
	scaledelta -15
}

// smoke puffs
r_part +tr_rocket
{
	texture "particles/fteparticlefont.tga"
	tcoords 97 97 191 191 256
	step 5
	scale 30
	alpha 0.2
	die 0.75
	//diesubrand 10.25
	randomvel 0.2
	rgb 5 5 5
	//rgbdelta -230 -45 -9
	gravity -15
	scalefactor 1
	scaledelta 20
	spawnvel 5
}


// burst sparks
r_part +tr_rocket
{
	type texturedspark
	texture "particles/fteparticlefont.tga"
	tcoords 1 65 31 95 256 8 32
	count 1
	scale 2
	scalefactor 1
	scaledelta -15
	alpha 0.2
	die 0.25
	rgb 255 128 0
	blend add
	spawnmode ball
	spawnorg 1
	spawnvel 50
	veladd 500
	friction 0.01
	gravity 100
}

///////////////////////////////////////////
//alternate rocket trail, which is used by a handful of qw players.
//r_part tr_altrocket
//{
//}


///////////////////////////////////////////
//grenade trail

r_part tr_grenade
{
	texture "particles/fteparticlefont.tga"
	tcoords 97 97 191 191 256
	step 6
	scale 32
	scaledelta 12
	alpha 0.3
	die 1.25
	randomvel 2
	veladd 15
	rgb 75 75 75
	//rgb 255 50 50
	//rgbdelta -255 -75 -75
	gravity -25
	scalefactor 1
	blend modulate
}
r_part +tr_grenade
{
	texture "particles/fteparticlefont.tga"
	tcoords 97 97 191 191 256
	scale 1
	scaledelta 0.25
	alpha 0.2
	step 4
	die 0.8
	randomvel 0
	rgb 255 150 150
	rgbdelta 0 -150 -150
	type beam
	blend add
}

//////////////////////////////////
//shotgun impacts
r_part gunshotsmoke
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 65 31 95 256 8 32
	count 3
	scale 25
	scalefactor 1
	die 0.8
	alpha 0.12
	rgb 32 32 32
	blend add
	spawnmode ball
	spawnorg 2
	spawnvel 20
	veladd -20
}
r_part te_gunshot
{
	type texturedspark
	texture "particles/fteparticlefont.tga"
	tcoords 1 65 31 95 256 8 32
	count 3
	scale 2
	scalefactor 1
	alpha 0.5
	die 0.8
	rgb 255 128 0
	blend add
	spawnmode ball
	spawnorg 1
	spawnvel 100
	veladd -80
	friction 0.3
	gravity 400
	assoc gunshotsmoke
}

//////////////////////////////////
//nail impacts

r_part te_spike
{
	type sparkfan
	count 10
	scale 1
	scalefactor 1
	alpha 0.5
	die 0.2
	rgb 255 128 0
	blend add
	spawnmode ball
	spawnorg 12
	spawnvel 300
}
r_part +te_spike
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	count 1
	scale 1
	scalefactor 1
	scaledelta 190
	die 0.1
	alpha 0.6
	rgb 255 128 0
	blend add
	assoc gunshotsmoke
}

r_part te_superspike
{
	type sparkfan
	count 20
	scale 1
	scalefactor 1
	alpha 0.5
	die 0.2
	rgb 255 128 0
	blend add
	spawnmode ball
	spawnorg 12
	spawnvel 300
}
r_part +te_superspike
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	count 1
	scale 1
	scalefactor 1
	scaledelta 190
	die 0.1
	alpha 0.6
	rgb 255 128 0
	blend add
	assoc gunshotsmoke
}

//simple slight trail, to show movement more than anything else.
r_part tr_spike
{
	texture "particles/fteparticlefont.tga"
	step 1.1
	scale 4
	die .4
	rgb 20 20 20
	alpha 1
	blend add
	spawnmode spiral 512
	spawnvel 10
}
r_trail "progs/spike.mdl" tr_spike
r_trail "progs/s_spike.mdl" tr_spike

////////////////////////////////////////////////
//explosion

//red bit
r_part te_explosion
{
	texture "particles/fteparticlefont.tga"
	tcoords 97 97 191 191 256
	count 1
	scale 500
	alpha 0.4
	die 0.2
	rgb 255 127 100
	rgbdelta -14 -300 -300
	blend add
	scalefactor 1
	scaledelta -15
	randomvel 0
//	lightradius 350
//	lightrgb    1.4 1.2 1.05
//	lighttime   0.5
//	lightradiusfade 350
//	lightrgbfade 2 2 2	
}
//smoke
r_part +te_explosion
{
	texture "particles/fteparticlefont.tga"
	tcoords 97 97 191 191 256
	count 7
	scale 300
	alpha 0.2
	die 0.8
	//diesubrand 10.25
	randomvel 100
	rgb 5 5 5
	//rgbdelta -230 -45 -9
	gravity -15
	scalefactor 1
	scaledelta 40
	spawnvel 5
}
// burst sparks
r_part +te_explosion
{
	type texturedspark
	texture "particles/fteparticlefont.tga"
	tcoords 1 65 31 95 256 8 32
	count 100
	scale 5
	scalefactor 1
	scaledelta -15
	alpha 0.2
	die 0.5
	rgb 255 128 0
	blend add
	spawnmode ball
	spawnorg 1
	randomvel 1000
	friction 0.01
	gravity 100
	stretchfactor -80
}

//hide lights in explosions.
//r_explosionlight 0

//hide the explosion sprite in qw
cl_expsprite 0
//hide it in nq - WARNING: some mods use this sprite as a flame thrower.
//r_effect "progs/s_explod.spr" hidden 1


//////////////////////////////////////////
//rogue te_explosion2 effect
//note: if not otherwise defined, te_explosion2_BASE_RAND maps to this, and specifies the palette colours.
r_part te_explosion2
{
	type texturedspark
	texture "particles/fteparticlefont.tga"
	tcoords 1 65 31 95 256 8 32
	count 256
	scale 5
	scalefactor 1
	scaledelta -15
	alpha 0.2
	die 0.5
	blend add
	spawnmode ball
	spawnorg 1
	randomvel 1000
	friction 0.01
	gravity 100
	stretchfactor -80
}
//dragon fireball
//r_part te_explosion2_228_5

//rogue multigrenade sub explosion
//also triggered from a shielded rogue player touching another player (and doing some damage)
//also used during the ending.
//red particles
//r_part te_explosion2_230_5

//rogue plasma explosion
//also rogue timemachine explosion
//white particles splaying outwards
//r_part te_explosion2_244_3

//////////////////////////////////////////
//for when a spawn dies.
//also used by TF for emp explosions.
r_part te_tarexplosion
{
	type texturedspark
	texture "particles/fteparticlefont.tga"
	tcoords 1 65 31 95 256 8 32
	count 128
	scale 5
	scalefactor 1
	scaledelta -15
	rgb 0 0 17
	alpha 0.5
	die 0.5
	spawnmode ball
	spawnorg 1
	randomvel 500
	friction 0.01
	gravity 100
	stretchfactor -80
}
r_part +te_tarexplosion
{
	type texturedspark
	texture "particles/fteparticlefont.tga"
	tcoords 1 65 31 95 256 8 32
	count 256
	scale 5
	scalefactor 1
	scaledelta -15
	rgb 83 67 115
	alpha 0.3
	die 0.5
	blend add
	spawnmode ball
	spawnorg 1
	randomvel 500
	friction 0.01
	gravity 100
	stretchfactor -80
}

//////////////////////////////////////////
//cthon falling into lava.
//often also used for TF gas grenades.
r_part te_lavasplash
{
	texture "particles/fteparticlefont.tga"
	tcoords 129 1 191 63 256
	count	654
	scale 15
	alpha 0.7
	die 4
	randomvel 64
	rgb 255 128 128
	gravity 50
	blend add
	spawnorg 192 64
	up 48
}

//////////////////////////////////////////
//FIXME: what if we don't have glsl support?
r_part te_teleport
{
	scale 250
	count 1
	alpha 0.3
	die 0.5
	scalefactor 1
	rotationstart 45
	rotationspeed 0

	shader
	{
		surfaceparm noshadows
		surfaceparm nodlight
		glslprogram
		{
			!!samps screen=0
			varying vec2 tcoord;
			varying vec4 scoord;
			varying float alph;
#ifdef VERTEX_SHADER
			attribute vec2 v_texcoord;
			attribute vec4 v_colour;
		
			void main(void)
			{
				scoord = ftetransform();
				tcoord = (v_texcoord.st - 0.5)*2.0;
				alph = v_colour.a;
				gl_Position = ftetransform();
			}
#endif
#ifdef FRAGMENT_SHADER
			void main(void)
			{
				vec2 nst;
				float f;
				nst = scoord.xy / scoord.w;
				nst = (1.0 + nst)/2.0;
				f = 1.0 - length(tcoord);
//				f = 1.0 - tcoord*tcoord;
				if (f < 0.0) discard;
				f *= alph;
				gl_FragColor = texture2D(s_screen, nst - tcoord*f);
			}
#endif
		}
		{
			map $currentrender
			blendfunc blend
		}
	}
}


//////////////////////////////////////////
//hellknight
r_part tr_knightspike
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	scale 15
	step 1
	alpha 0.6
	die 0.2
	rgb 192 96 48
	veladd 0
	randomvel 2
	friction 4
	scalefactor 0.825
	blend add
	spawnmode spiral
	spawnvel -50
	lighttime 0
	lightshadows 0
	lightradius 150
	lightrgb    0.75 0.37 0.18
}

r_part te_knightspike
{
	type sparkfan
	count 200
	scale 3
	scalefactor 1
	alpha 0.5
	die 0.5
	rgb 192 96 48
	blend add
	spawnmode ball
	spawnorg 12
	spawnvel 100
	stretchfactor 10
}

/////////////////////////////////////////
//vore missiles
r_part tr_vorespike
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	scale 15
	step 1
	alpha 0.6
	die 0.5
	rgb 192 96 192
	veladd 15
	spawnmode spiral
	spawnvel 50
	randomvel 0
	friction 0
	scalefactor 1
	blend add
	lighttime 0
	lightshadows 0
	lightradius 150
	lightrgb    0.75 0.37 0.75
}
//rygel's pack sucks
r_trail "progs/v_spike.mdl" tr_vorespike


////////////////////
//enforcer laser effect
r_part tr_enforcerlaser
{
	type texturedspark
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	scale 15
	step 4
	alpha 0.3
	die 0.5
	rgb 255 69 0
	veladd -32
	spawnmode spiral
	spawnvel 16
	randomvel 32
	friction 0
	scalefactor 1
	blend add
	lighttime 0.2
	lightshadows 0
	lightradius 150
	lightrgb    1 0.27 0
	lightrgbfade    5 1 0
	lightcorona 2 0.25
}
r_trail "progs/laser.mdl" tr_enforcerlaser

/////////////////////////////////////////
//rogue wrath enemy's projectiles
r_part tr_wrathball
{
	type texturedspark
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	scale 15
	step 4
	alpha 0.3
	die 0.5
	rgb 255 0 0
	veladd -32
	spawnmode spiral
	spawnvel 16
	randomvel 32
	friction 0
	scalefactor 1
	blend add
	lighttime 0.2
	lightshadows 0
	lightradius 150
	lightrgb    1 0.27 0
	lightrgbfade    5 1 0
	lightcorona 2 0.5
}
r_trail "progs/w_ball.mdl" tr_wrathball

//wrath death
//grey particles
//no difference from the fallback except for the blend mode. this should ensure that we are not quite so invisible.
r_part te_explosion2_0_4
{
	type texturedspark
	texture "particles/fteparticlefont.tga"
	tcoords 1 65 31 95 256 8 32
	count 256
	scale 5
	scalefactor 1
	scaledelta -15
	alpha 0.2
	die 0.5
	spawnmode ball
	spawnorg 1
	randomvel 1000
	friction 0.01
	gravity 100
	stretchfactor -80
}

/////////////////////////////////////////
//rogue lavaspikes
r_part tr_lavaspike
{
	type spark
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	scale 15
	step 4
	alpha 0.3
	die 0.5
	rgb 255 0 0
	veladd -32
	spawnmode spiral
	spawnvel 16
	randomvel 32
	friction 0
	scalefactor 1
	blend add
}
r_trail "progs/lspike.mdl" tr_lavaspike

/////////////////////////////////////////
//rogue plasma gun
r_part tr_plasma
{
	type texturedspark
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	scale 15
	step 4
	alpha 0.3
	die 0.25
	rgb 128 128 255
	veladd -32
	spawnmode spiral
	spawnvel 16
	randomvel 32
	friction 0
	scalefactor 1
	blend add
	lighttime 0.2
	lightshadows 0
	lightradius 150
	lightrgb    1 1 2
	lightrgbfade    5 1 0.5
	lightcorona 2 0.5
}
r_trail "progs/plasma.mdl" tr_plasma


/////////////////////////////////////////
//scrag missiles.
r_part tr_wizspike
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	scale 15
	step 4
	alpha 0.6
	die 0.2
	rgb 25 200 25
	veladd 0
	randomvel 2
	friction 4
	scalefactor 0.825
	spawnmode spiral
	spawnvel 25
	blend add
	lighttime 2
	lightradiusfade 75
	lightshadows 0
	lightradius 150
	lightrgb    0.1 0.7 0.1
}

r_part tr_wizspike2
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	scale 4
	step 1
	alpha 0.6
	die 0.2
	rgb 25 200 25
	veladd 64
	randomvel 64
	friction 4
	scalefactor 0.825
	spawnmode spiral
	spawnvel 25
	blend add
}
//scrag impact
r_part te_wizspike
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	scale 15
	alpha 0.6
	rgb 25 200 25
	friction 0
	scalefactor 0.825
	blend add
	count 5
	veladd -256
	randomvel 256
	die 1
	diesubrand 0.5
	gravity 800
	emit tr_wizspike2
	emitinterval -1
	bounce 1.5
}

/////////////////////////////////////////
//shambler stuff
r_part shambercharging
{
	spawnmode ball
	count 200
	spawnorg 128
	spawnvel -256
	texture "particles/fteparticlefont.tga"
	tcoords 1 1 63 63 256 2 64
	scale 4
	alpha 1
	die 0.5
	orgadd -64
	rotationspeed 90
	rotationstart 0 360
	rgb 100 100 250
	rgbrand 0 0 0
	gravity 0
	scalefactor 0.4
	lighttime 0
	lightshadows 0
	lightradius 400
	lightrgb    2 2 2
}
r_effect progs/s_light.mdl shambercharging 0

/////////////////////////////////////////
//blood effects
r_part te_blood
{
	texture fte_bloodparticle
	blend subtract
	count 1
	scale 32
	alpha 0
	die 1
	randomvel 64
	veladd 10
	rotationspeed 90
	rotationstart 0 360
	rgb 32 64 64
	rgbdelta -32 -64 -64
	gravity 200
	scalefactor 0.8
}

r_part high.pe_73
{
	texture fte_bloodparticle
	blend subtract
	count 1
	scale 32
	alpha 0
	die 1
	randomvel 64
	veladd 10
	rotationspeed 90
	rotationstart 0 360
	rgb 32 64 64
	rgbdelta -32 -64 -64
	gravity 200
	scalefactor 0.8
}

r_part te_lightningblood
{
	texture fte_bloodparticle
	blend subtract
	count 1
	scale 32
	alpha 0
	die 1
	randomvel 32
	veladd 5
	rotationspeed 90
	rotationstart 0 360
	rgb 64 128 128
	rgbdelta -64 -128 -128
	gravity 200
	scalefactor 0.8
}
r_part high.pe_225
{
	texture fte_bloodparticle
	blend subtract
	count 0.5
	scale 32
	alpha 0
	die 1
	randomvel 32
	veladd 5
	rotationspeed 90
	rotationstart 0 360
	rgb 64 128 128
	rgbdelta -64 -128 -128
	gravity 200
	scalefactor 0.8
}

/////////////////////////////////////////
//zombie body-part blood trails
r_part tr_slightblood
{
	texture fte_bloodparticle
	blend subtract
//	tcoords 1 1 63 63 256 2 64
	step 16
	scale 64
	alpha 0
	die 1
	randomvel 32
	veladd 10
	rotationspeed 90
	rotationstart 0 360
	rgb 64 128 128 
	rgbdelta -64 -128 -128
	gravity 200
	scalefactor 0.8
	scaledelta -10
	stains -0.5
}

//////////////////////////////////////////
//regular ol' blood trails
r_part tr_blood
{
	texture fte_bloodparticle
	blend subtract
	step 8
	scale 64
	alpha 0
	die 1
	randomvel 32
	veladd 10
	rotationspeed 90
	rotationstart 0 360
	rgb 32 128 128 
	rgbdelta -32 -128 -128
	gravity 200
	scalefactor 0.8
	scaledelta -10
	stains -0.5
}

//////////////////////////////////
//fallbacks

r_part pe_default
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	count 1
	scale 4
	veladd 15
	die 0.4
	alphadelta 0
	diesubrand 0.4
	gravity 40
	spawnorg 8
}
r_part pe_defaulttrail
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	scale 15
	step 1
	alpha 0.6
	die 0.2
	rgb 192 96 48
	veladd 0
	randomvel 2
	friction 4
	scalefactor 0.825
	spawnmode spiral
	spawnvel 25
	blend add
}

//////////////////////////////////
//map debugging
r_part pe_pointfile
{
	texture "particles/fteparticlefont.tga"
	tcoords 1 97 95 191 256
	count 1
	scale 50
	die 30
	alphadelta 0
	rgb 255 255 0
}











