If you instead save the strings into a hashtable, using the unit-type as the key, then you can just load the string from the key of the unit-type of (Triggering unit) or whatever, instead of having a lot of if/then/else functions.
This sounds like a solution. :thup:
False; Unit Is Attacked happens at the very start of an attack, right before the animation plays and some time before the attack actually fires.
Set its base damage to 1, its dice sides to 1, and number of dice to -1 (by shift-clicking).
Alternately, a unit can still show some damage in its stats but actually deal 0 damage by giving it a modified Critical Strike or Elune's Grace ability with the damage modifiers set to 0%.
The event Unit stops casting is fired when channeling stops, whether interrupted or the duration is successfully completed. The event Unit finishes casting fires only when the duration completes. Alternately, you could periodically check whether the unit's current order is still the order of...
You would just alter the maximum health using traditional flat-amount methods, but calculate the amount as a percent of the unit's current maximum HP (eg. 0.2*Max. HP is 20%).
I have not tried it myself, but based on how Ayanami programmed his Dark Lady spell pack (and I trust his methods), it appears that ability cannot be leveled and you must make a separate ability for each different value.
Re-read the tutorial; those are not the correct paths. In fact, the tutorial even has a section about how to fix things if you get a green icon...
The paths need to be:
ReplaceableTextures\CommandButtons\BTNFrostImpale2.blp
ReplaceableTextures\CommandButtonsDisabled\DISBTNFrostImpale2.blp