thinkingParticles offers a rich collection of nodes to control particle behavior. You can combine many operators to create one "super" particle system. It's possible to make an operator create particles, based on the behavior of other particles. Particles may be even used to Paint another material onto objects!
In the example shown above, a Paint operator was used to create splashes on an object's surface. Accurate "surface level" collision detection is used by this operator to detect an impact on an object's surface. Each particle hitting the surface, paints a user defined material, at that exact location.