Try this:
Instead of a normal Birth Operator use a Birth Script with this code in the ‘on Proceed pCont do’ part:
on Proceed pCont do
(
ss = $Sphere01
varr = getvertselection ss as array -- Get the vert selection
t1 = pCont.getTimeStart()
if t1<0 do
(
for i in 1 to varr.count do -- Run trought all selected verts and add a particle to each selected vert
(
ThePos = getvert ss varr[i] -- Get the selected vert position
pCont.AddParticle() -- Add a particle
pCont.particleIndex = pCont.NumParticles()
pCont.particleAge = 0
pCont.particlePosition = ThePos -- Sets the particle Position to the vertex position
)
)
)
Where ‘Sphere01’ is the object that the particles will be emmited from (i must be a Editable Mesh).
And the order depends on what you are trying to achieve.
If you want to just make the particles Speed diferent, you could use something like this. Just add a Script Operator after the Birth Script with this code on the ‘on Proceed…’ part:
on Proceed pCont do
(
count = pCont.NumParticles()
ss = $Sphere01
varr = getvertselection ss as array
for i in 1 to count do
(
pCont.particleIndex = i
t1 = (pCont.particleTime as float / 160) -- Get the current particle time in frames
theTime = 50 + i -- Particles will start moving at frame 50
if t1 == theTime do
(
pCont.particleSpeed = (getnormal ss varr[i])*0.1 -- Set the particle Speed to the Sphere01 normals.
)
)
)
I’m sure there is a way of mergin those 2 scripts and probably there is a better way of doing what you want too. I’m still learning maxScript so Bobo can probably help you with that 
Btw, Cool animation treed :applause: