Haven't read the other posts so I may repeat others' points.
- Incorrect executefunc usage (when using scopes for spell distribution you must use SCOPE_PREFIX instead of naming it statically).
- Not strictly a problem, but as a development note: private-ing your globals removes the need to prefix them to make them unique (so the 'tw_' 's aren't really necessary).
- To make it easier to customise, I recomend moving all constant spell data variables (along with the functions) to the top in a clearly indicated configuration section. Just so you don't have people changing some important stuff and screwing up the spell. On that note you should explain what each one does a bit better; "//The increament/decreament of the speed" isn't very helpful.
- In function Cast_Actions you create variables for caster and target coordinates and then neglect to use them in a couple of instances.
- Replace bj_DEGTORAD/RADTODEG with literal constants
- May want to make tree destruction area configurable
- You need to at the very least make a huge note saying that you use UnitUserData for knockbacks. It can conflict with other people's code.
- function CreateKB has useless radian->degree->radian conversions
- Pausing units that are knocked back isn't always what people want. Also, you pause the units and remove their pathing on every iteration of knockback. Just do it when it starts.
- Your terrain checking function is bad, other items will get in the way and terrain may be pathable but the item won't be exactly on the spot. Account for these.
- It is good practice to initialise all struct members to null.