even though it uses a location, try adding GetLocationZ() of your start point, and subtracting GetLocationZ() of your current point, to your height
EDIT: sorry. didn't notice "found the error" the first several times i read through. XD
it's MUI and MPI as long as no 2 casts are at the exact same time. after that, i don't know whether it would work normally or bugged. normally though I believe
when you create custom abilities, they retain the same ability order keyword. i.e. creating an enhanced blink. even if the new ability is not actually called blink or has a completely different triggered functionality, through triggers, it is still ordered with the same keyword
there's some systems that check whenever a unit takes damage, check for the buff, remove the buff, and run the effect, so the poison could last 0.0 seconds and won't be seen. takes a bit of prep though, and could cause overhead. if you want a periodic check for buffed units, multiple attacks...
he's right. the hero has to have the ability first. hero learning skill just levels up that skill by 1. if the hero doesn't have it yet, add the ability to the hero
create a trigger so that whenever a unit buys or picks up an item, check its inventory for any items you would classify as a weapon. (will need hardcoding for item ID's) if an item is already present, remove either of the items (depends on what you want) and print the text, and refund whatever...
give the transporting spell to the unit, and enable/disable spell for player (assuming there's only 1 hero of that type per player) rather than removing the spell. the icon should disappear and be unusable while disabled, and normal when enabled