1. Avoid the usage of Do nothing:
-
If ((Distance between FL_LeakPoint[0] and FL_LeakPoint[3]) Greater than or equal to FL_Range[FL_LoopIndex[3]]) then do (Set FL_TargetUnit[FL_LoopIndex[3]] = No unit) else do (Do nothing)
2. This is totally useless since the only time FL_DamageGroup is null the group would have been already created at map initialization:
-
Custom script: if udg_FL_DamageGroup == null then
-
Custom script: set udg_FL_DamageGroup = CreateGroup()
-
Custom script: endif
3. You leak a group:
-
Set FL_TargetUnit[FL_LoopIndex[3]] = (Random unit from (Units within FL_Range[FL_LoopIndex[3]] of FL_LeakPoint[3] matching (((((Matching unit) is A structure) Equal to False) and (((Matching unit) is A flying unit) Equal to False)) and ((((Matching unit) is Magic Immune) Equal to False) and ((((...
4. Why use "And" for only one condition:
-
And - All (Conditions) are true
-
Conditions
-
FL_LoopIndex[1] Equal to 0
5. You index two integer variables, yet you don't use this one:
-
Set FL_Index[1] = (FL_Index[1] + 1)
-
Set FL_Index[2] = (FL_Index[2] + 1)
And it's actually senseless using two indexes.
6. You aren't decreasing the LoopIndex[1] at the end of each cast, and this the indexing method you're using doesn't recycle at all. My advice would be replacing this indexing method with a dynamic one. Check Hanky's:
[GUI] Dynamic Indexing Template
7. Some better special effects would be nice.
8. Attach the effect to the "origin" instead of to the "chest" in order to lower the height of the effect:
-
Special Effect - Create a special effect attached to the chest of (Last created unit) using FL_FlameSFX_String
9. Lacks documentation on how to import.
The spell idea is definitely nice and original; however, you've got to fix the just mentioned problems. And try to do come up with some creative special effects. Fix those and I'd be definitely advising people to use this spell if that's what they're searching for.