They (help) determine the direction component of each particle's velocity.

The direction vector for each particle is determined as such,

For each component (x, y & z),

*a* (0.0 -> 1.0) is multiplied by a random number (in the range -1.0 -> 1.0), and the resulting number (which is also in the range -1.0 -> 1.0) has

*b* (in the range -1.0 -> 1.0) added to it.

for the x and z components

*a* and

*b* are the horizontal-spread numbers, and for y it uses the vertical-spread.

So what the hell does that all mean ?

The

*a* in horizontal-spread determines the amount of the velocity that points out from the splash centre, if

*a*=0.0 (and

*b*=0.0) then the particles will have no velocity in the x or z directions and will only move up or down, depending on the vertical-spread.

If

*a* is not 0.0, then the x and z components of the resulting velocity vector will not be zero either and the particle will by directed (horizontally, believe it or not) away from the centre of the splash.

The magnitude of

*a* in this way is only important if the vertical-spread

*a* is not 0.0, if the vertical-spread

*a* is 0.0 then a horizontal-spread

*a* of 0.1 and 1.0 will give identical results, the direction has no vertical part to it, it will always point horizontally away from the splash centre (ie, archmage's ice-nova).

I'll say something about

*b* with horizontal-spread after I describe vertical...

Ok, so for vertical-spread the

*a* is much the same as in horizontal, it determines if there will be any vertical component to the initial velocirty vector, and if so, how much compared to the horizontal

*a* (unless the horizontal

*a* is 0.0 of course, in which case the magnitude of the vertical

*a* is largely irrelavant).

The

*b* in vertical-spread can then be used to fine tune the result of multiplying

*a* by a random number between -1.0 and 1.0. The result of the multiplication is also guaranteed to be in the range -1.0 to 1.0, which could be down or up. As

*b* can be itself -1.0 to 1.0 and is added after the multiply, you can completely cancel out any downward pointing velocities (+1.0), or partially (so most, but not all, head upwards) (+0.x), or likewise have no upward travelling ones (-1.0), or favour downward ones (-0.x).

Now, 'horizontal-spread has a

*b* too...' you may note, and while yes it does, unfortunately it is useless. Firstly, it biases BOTH x and z with the same number, and secondly, its aligned to the global axis, not the attack direction vector.

My advice: Leave it on 0, waste time playing with it if you like, but you wont get any good results from doing so... One day we'll get the attack vector in there and you'll be able to do more interesting things, but now is not the time

Yikes...

Picture time! Yay!

horizontal-spread a="1.0" b="0.0"

vertical-spread a="1.0" b="0.0"

With both

*a*s at 1.0 and vertical

*b* at 0, the direction of each particle will be completely random, the net effect is of course particles heading out in all directions.

horizontal-spread a="1.0" b="0.0"

vertical-spread a="1.0" b="1.0"

This time we bias the vertical component with a +1.0, giving all particles a positive y component to their velocity.

horizontal-spread a="1.0" b="0.0"

vertical-spread a="1.0" b="-1.0"

vertical bias -1.0, make them all go downward.

horizontal-spread a="0.0" b="0.0"

vertical-spread a="1.0" b="1.0"

and back to a positive bias for vertical, but with no horizontal spread, all particles move directly upwards.

Obviously using numbers more like 0.2 and 0.7 for these things will give you more interesting results than shown above, but hopefully you now have some sense of what they do.