edit: Can I also prevent the damage differently than creating structs for each unit?
edit 2: Can't you make somtehing like this:
function ModifyDamage takes unit who, real byValue returns nothing
which can be only used in damage events?
But coded by you (used some map-specific funcs. Also I didn't all the research and don't know what to check)