- System code shouldn't need to be in the map header - it should be done in a way which allows it to be imported as a trigger.
- You use a Globals/Endglobals block, making this vJASS not JASS (it will not compile in vanilla World Editor), as such there is no reason not to make full use of vJASS, or to convert the system to not need the aforementioned globals block (turning them all into either constant functions or put into the variable editor - when doing the latter you could have the globals block in another function and have it disabled so those using JNGP can still make use of it)
- Configuration lacks documentation (without it, it's hard to understand the configuration)
- There's no documentation on how to set up abilities to use these things: you give examples but they do not explain what each thing is for
- You need to fix your indentation in some places, it's very awkward to read
- Unit groups can be globals, given you reuse them and empty them every time it's not efficient to keep creating/destroying them
JASS:
GetUnitState(t,UNIT_STATE_LIFE)>0.405
- A dead unit can have its life changed (and increased over this value), you should just run the check to see if it is treated as a dead unit rather than on its health, also GetWidget functions are faster though can't be used for everything, but you should use them where you can - look it up on the function list)
Other than that the code looks fairly alright (given I quickly skimmed through and probably missed a few things) though these systems have all been done before many times