I dont recomend you to put 0.01 time at loop triggers.
Human eye can see ~47 frames per second, and you loop 100 times per second.
Did that is not waste of CPU usage?
-Meaby use Pick Units in Group and do Multiple actions?
-From the start when ability casted set variable which will calculate damage of spell.
Why? Because if you will increase level of spell upon effect of ability is runing, damage will increase instantly.
-Dont use integer cheking for every ability level

If you want make ability with 10 levels, you will check every level? Make it like this:
Cause Hero to damage Target, dealing (
0 + (
200 x
Level of ability for Hero ))
I will explain
-0 is base of your spell damage
-200 x Level of ability for Hero is for how much damage spell will increase every level include 1st level of spell
If i will but 50 instead 0 then spell will cause:
First level 50+(200x1)=250
Second level 50+(200x2)=450
Third level 50+(200x3)=650
Ofcorse you can make some more hard damage calculations like:
damage + 75% of inteligence or something harder... Like

((50+(100xLevel of ability)) + ((Hero inteligence x (0.50+((0.25x(Level of Ability))))
I will not gona tell you how much it is
I saw a script of one pro coder. He used 2 TS_Point[0], TS_Point[1], TS_Point[3] ... (TS means Thunder Strike - name of spell)
He create 1 array Point variable for every spell and just changing index number.
It is good for:
-Small variable name
-Smaller table with variables, so serch variables is easyer
-Meaby something more what i dont know ^^
EDIT: remove all Do nothing. It do nothing ^^ and just confuze you and make the trigger bigger
By deleting those spell will not crash
EDIT 2: hmm it is not spells i thinked... anyway... i will not tell for spell ideas etc.