np, that is why it is there 
The only caveat is your birth object needs to be an Editable Poly since the script is calling a polyOp method. If it were calling meshOp method your birth object would need to be an Editable Mesh.
Since there is no Time condition in that snippet it will add new particles every integration step, you can easily tell the operator when to born particles by adding a if/then statement.
A little bit cleaner way to write it would be something like this. There is only one instance of the node $Geosphere01 and it is now in a global variable, if you change the birth object you only have to replace a single instance of code:
on ChannelsUsed pCont do
(
pCont.usePosition = true
)
on Init pCont do
(
global theBirthObj = $GeoSphere01 --your birth object it needs to be editable poly
)
on Proceed pCont do
(
t1 = pCont.getTimeStart() as float
if t1 < 0 then --born particles at less frame 0
(
for i in 1 to (polyop.getnumfaces theBirthObj) do--add a particle for every face
(
pCont.AddParticle()--add a new particle
pCont.particleIndex = pCont.NumParticles()--set the index to the count
pCont.particleAge = 0--set the age to 0
pCont.particlePosition = (polyop.getfacecenter theBirthObj i)--match to the poly of the same id
)
)
)
on Release pCont do()
You can do rotations too but it is a bit more difficult, you need to create and build a matrix and grab the matching face normal and the current particles rotation do some magic(or voodoo) and plug it into the rotationPart. Then use the particleTM channel to assign it. It is a PITA to script, I always use a Box#3 operator.
That is a Bobo job for sure, he understands rotations/TMs/quats and scripting exponentially better than I do. 