There is actually a simpler solution to implement this kind of behavior:
You can just create a single particle with an infinite life that will act as the spawner for another layer with the actual particle you want to spawn:
So you can create two layer, one in the "Spawner" folder that will be the layer that will trigger the particle you want to see which will be in a layer in the "LayerGroups" folder.
Both of those layers only spawn one particle so we can setup their properties like that:
But the "RootLayer" will have an infinite life and a local space evolver so that it sticks to the position of the emitter.
You then need to add an event in the "RootLayer" that will trigger the "SpawnedLayer" when necessary:
Then we need to determine when to trigger this event. For this, you will need two additional particle fields which are the current age of the particle in second and the last time the event was triggered.
I have also added two attributes "SpawnParticle" which value is either zero or one and a "DelayBetweenSpawn" which will be 8 seconds in your case.
You can then just write an evolve script in the "RootLayer" like that:
function void Eval()
// We want to trigger the particle spawn if the attribute "SpawnParticle" value is one
// and if the last particle was spawned at least DelayBetweenSpawn seconds ago or if no particle was spawned before
int shouldTrigger = SpawnParticle == 1 && (ParticleAge - LastSpawnTime > DelayBetweenSpawn || LastSpawnTime == 0);
// Actual trigger of the event with the condition:
// Updates the LastSpawnTime if necessary
LastSpawnTime = iif(shouldTrigger, ParticleAge, LastSpawnTime);
// Updates the ParticleAge (this is used instead of Age or Life which do not work for particles with infinite life)
ParticleAge += dt;
The "SpawnedLayer" should then spawn a particle when the "SpawnParticle" attribute is equal to one and when the last particle was spawned at least "DelayBetweenSpawn" seconds ago.
Hope this helps,
do not hesitate to send us a mail at email@example.com if you need an example package for this behavior.