Skip to main content

FX_PARTICLE

The most common type of FX element will be an FX_PARTICLE, this called on a particle decl file that either defines the particle in the file itself or references already defined particleStage files.

Here are the most essential things to know when dealing with particle decls.

1.) Assign one or many particle decls to an FX element.

A single particle decl.

// each time the FX element is invoked, the sole declPrt will be rendered
item[8] = {
	name = "shrapnel_CENTER";
	group = "explosion";
	type = "FX_PARTICLE";
	duration = 2000;
	fadeOutTime = 1500;
	fadeInTime = 0;
	size = 2.0;
	enabled = true;
	delayMin = 100;
	delayMax = 115;
	color = {
		r = 1.0;
		g = 0.4;
		b = 0.2;
		a = 1.0;
	}
	tagNames = {
		num = 1;
		item[0] = "exhaust";
	}
	multiTagUseType = "FX_MULTI_TAG_USE_ALL";
	startCondition = {
		num = 1;
		item[0] = "FX_PROJECTILE_EXPLODE_ALT";
	}
	stopCondition = {
		num = 1;
		item[0] = "FX_OUTLINE_OFF";
	}
	originType = "FX_ORG_TRACK_POS";
	offset = {
		x = 0.0;
		y = 0.0;
		z = 0.0;
	}
	rotationType = "FX_ROT_START_AXIS_PARENT";
	rotOffsetAngles = {
		pitch = 0;
		yaw = 0;
		roll = 0;
	}
	particleParms = {
		declPrt = "weapons/rocketlauncher/explosion_lockon";
	}
}

If you pass an FX element a list of particle decls, one of them will be chosen at random each time the element is invoked. This is very useful if you don't want to see the same explosions over and over.

item[6] = {
	name = "LockonRocketExplosion";
	group = "explosion";
	type = "FX_PARTICLE";
	duration = 1500;
	fadeInTime = 0;
	fadeOutTime = 1000;
	size = 1.0;
	enabled = false;
	color = {
		y = 0.130136997;
		z = 0.0262412;
	}
	multiTagUseType = "FX_MULTI_TAG_USE_ALL";
	startCondition = {
		num = 4;
		item[0] = "FX_PROJECTILE_EXPLODE";
		item[1] = "FX_PROJECTILE_STOP";
		item[2] = "FX_PROJECTILE_STUCK";
		item[3] = "FX_PROJECTILE_EXPLODE_ALT";
	}
	stopCondition = {
		num = 1;
		item[0] = "FX_NONE";
	}
	particleParms = {
		declPrtList = {
			num = 3;
			item[0] = "weapons/combatshotgun/pop_rocket_charge_lv_01";
			item[1] = "character/pain_elemental/lost_soul/explosion";
			item[2] = "character/zombie_cueball/full_body_explosion";
			// declPrt = "weapons/grenade_launcher/concussive_blast";
			// declPrt = "weapons/rocketlauncher/explosion_array";
			
		}
	}
}

Using declPrtList makes it convenient to switch out particle decls, just don't forget to comment out the extra indexes!

particleParms = {
	declPrtList = {
		num = 3;
		item[0] = "weapons/combatshotgun/pop_rocket_charge_lv_01";
        item[0] = "character/doom_hunter/destructables/metal_chunk_explosion";
		item[1] = "character/pain_elemental/lost_soul/explosion";
		item[2] = "character/zombie_cueball/full_body_explosion";	
	}
}