udg_DamageTypeDOT > 0 and IsUnitEnemy(a,GetOwningPlayer(t)) and GetUnitAbilityLevel(a,MA_HeroAbility()) > 0 and not IsUnitType(t,UNIT_TYPE_DEAD) and not IsUnitType(t,UNIT_TYPE_STRUCTURE) and not IsUnitType(t,UNIT_TYPE_MAGIC_IMMUNE)
Mmm, I think that this filter should be configurable.
Instead of using UserData, you can use hashtables :). In some maps, the people use IndexUnit (bad choise by the way) and this can result in a bug.
In the ability's preload:
You don't need these, just remove it >:).
Good job ;).