This is no contest here for you to just choose the best. If someone wants to help you with the spell be happy that he did. I can give you advice how to make it but I'm afraid I don't take spell requests anymore.
This is my idea though i cannot make your hero as if it is charging its enemies.
Do the ff:
1. customized a unit. Remove food used & attack ability & let it be named as UNIT 2. make dummy spell 3. customized impale ability like the target allowed are only enemies (say make it a unit spell) 4. give the customized impale to the customized unit
PSEUDOCODE:
E: a unit begins casting an ability C: unit type of casting unit=your hero ability being cast=dummy spell A: create 1 UNIT at the position of casting unit & etc... hide last created unit order last created unit to impale random unit (unit w/n range of casting unit)..etc.. wait xx sec (enough time to be able to cast impale) remove last created unit
I did not find the integer level of ability being cast for casting unit=xx & it is not present in the WE so the only thing i could give you is the pseudocode. If you have the said integer then perhaps you can try this:
Since there are 7 lvls of your spell, therefore your dummy spell must have 7 lvls. Customized 7 impales & UNITS then give each of them the ability respectively. You should create 7 of those pseudocode but w/o the 1st two actions just copy/paste it then change the UNIT accordingly. Now, each of these triggers must have the action;
If level of ability being cast for casting unit = xx then create 1 UNIT at the position of casting unit & etc... and hide last created unit.
Final Opinion: the true actions might proceed according to the If statement. With that pseudocode alone you can do a lot of variations depending on what orders you will give to the created UNIT.