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";
	}
}

A list of particle decls.

// Each time the FX element is invoked, 1 particle decl will be chosen at random from the list of declPrts	
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";	
	}
}