class BExplode : Actor //generic effect that won't overload and end up muting itself
{
	default
	{
		+NOINTERACTION;
		+NOGRAVITY;
		+DEHEXPLOSION;
		+FORCEXYBILLBOARD;
		scale 1.0;
		RenderStyle "Add";
		seesound "";//"weapons/rocklx";
	}
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CVar.FindCVar("egr_particle_toggle").GetInt() == 0, "SkipParticles");
		TNT1 AAAAAAA 0 
		{
			A_SpawnParticle (0xee0000, SPF_FULLBRIGHT, random(25,35), random(2,10), 0, frandom(-2.0, 2.0), frandom(-2.0, 2.0), frandom(-2.0, 2.0)+2,  frandom(-4.0, 4.0), frandom(-4.0, 4.0), frandom(-4.0, 4.0),  0,0,0, 0.98, -1);
			A_SpawnParticle (0xff6600, SPF_FULLBRIGHT, random(25,35), random(2,10), 0, frandom(-2.0, 2.0), frandom(-2.0, 2.0), frandom(-2.0, 2.0)+2,  frandom(-4.0, 4.0), frandom(-4.0, 4.0), frandom(-4.0, 4.0),  0,0,0, 0.98, -1);
			A_SpawnParticle (0xffaa00, SPF_FULLBRIGHT, random(25,35), random(2,10), 0, frandom(-2.0, 2.0), frandom(-2.0, 2.0), frandom(-2.0, 2.0)+2,  frandom(-4.0, 4.0), frandom(-4.0, 4.0), frandom(-4.0, 4.0),  0,0,0, 0.98, -1);
		}
	SkipParticles:
		TNT1 A 0 A_PlaySound("weapons/rocklx", CHAN_AUTO);
		MISL B 1 Bright;
		MISL B 7 Bright
		{
			if(CVar.FindCVar("egr_remove_quake").GetInt() == 0)
			{
				A_Quake(1, 5, 0, 400);
				A_Quake(2, 5, 0, 300);
				A_Quake(3, 5, 0, 200);
				A_Quake(4, 5, 0, 100);
			}
		}
		MISL C 6 Bright;
		MISL D 4 Bright;
		stop;
	}
}


class BExplodeSmall : Actor
{
	default
	{
		+NOINTERACTION;
		+NOGRAVITY;
		+DEHEXPLOSION;
		+FORCEXYBILLBOARD;
		scale 0.25;
		RenderStyle "Add";
		seesound "";
	}
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CVar.FindCVar("egr_particle_toggle").GetInt() == 0, "SkipParticles");
		TNT1 AAAAAAA 0 
		{
			A_SpawnParticle (0xee0000, SPF_FULLBRIGHT, random(25,35), random(2,5), 0, frandom(-2.0, 2.0), frandom(-2.0, 2.0), frandom(-2.0, 2.0)+2,  frandom(-4.0, 4.0), frandom(-4.0, 4.0), frandom(-4.0, 4.0),  0,0,0, 0.98, -1);
			A_SpawnParticle (0xff6600, SPF_FULLBRIGHT, random(25,35), random(2,5), 0, frandom(-2.0, 2.0), frandom(-2.0, 2.0), frandom(-2.0, 2.0)+2,  frandom(-4.0, 4.0), frandom(-4.0, 4.0), frandom(-4.0, 4.0),  0,0,0, 0.98, -1);
			A_SpawnParticle (0xffaa00, SPF_FULLBRIGHT, random(25,35), random(2,5), 0, frandom(-2.0, 2.0), frandom(-2.0, 2.0), frandom(-2.0, 2.0)+2,  frandom(-4.0, 4.0), frandom(-4.0, 4.0), frandom(-4.0, 4.0),  0,0,0, 0.98, -1);
		}
	SkipParticles:
		TNT1 A 0 A_PlaySound("weapons/rocklx", CHAN_AUTO);
		MISL B 1 Bright;
		MISL B 7 Bright
		{
			if(CVar.FindCVar("egr_remove_quake").GetInt() == 0)
			{
				A_Quake(1, 5, 0, 200);
				A_Quake(2, 5, 0, 100);
			}
		}
		MISL C 6 Bright;
		MISL D 4 Bright;
		stop;
	}
}

class BExplodeSmallSilent : Actor
{
	default
	{
		+NOINTERACTION;
		+NOGRAVITY;
		+DEHEXPLOSION;
		+FORCEXYBILLBOARD;
		scale 0.25;
		RenderStyle "Add";
		seesound "";
	}
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CVar.FindCVar("egr_particle_toggle").GetInt() == 0, "SkipParticles");
		TNT1 AAAAAAA 0 
		{
			A_SpawnParticle (0xee0000, SPF_FULLBRIGHT, random(25,35), random(2,5), 0, frandom(-2.0, 2.0), frandom(-2.0, 2.0), frandom(-2.0, 2.0)+2,  frandom(-4.0, 4.0), frandom(-4.0, 4.0), frandom(-4.0, 4.0),  0,0,0, 0.98, -1);
			A_SpawnParticle (0xff6600, SPF_FULLBRIGHT, random(25,35), random(2,5), 0, frandom(-2.0, 2.0), frandom(-2.0, 2.0), frandom(-2.0, 2.0)+2,  frandom(-4.0, 4.0), frandom(-4.0, 4.0), frandom(-4.0, 4.0),  0,0,0, 0.98, -1);
			A_SpawnParticle (0xffaa00, SPF_FULLBRIGHT, random(25,35), random(2,5), 0, frandom(-2.0, 2.0), frandom(-2.0, 2.0), frandom(-2.0, 2.0)+2,  frandom(-4.0, 4.0), frandom(-4.0, 4.0), frandom(-4.0, 4.0),  0,0,0, 0.98, -1);
		}
	SkipParticles:
		MISL B 1 Bright;
		MISL B 7 Bright
		{
			if(CVar.FindCVar("egr_remove_quake").GetInt() == 0)
			{
				A_Quake(1, 5, 0, 200);
				A_Quake(2, 5, 0, 100);
			}
		}
		MISL C 6 Bright;
		MISL D 4 Bright;
		stop;
	}
}