Families are also a good way to solve this. Eventually you won't be able to put everything that is supposed to have damage displayed into the same family though, or you just plain don't like to bother with families. Personally I'd probably prefer to simply pass parameteres of whatever is being damaged to the function. But you know, whatever works.
The way you used a lot of globals there though confuses me a little to be honest. You use them to temporarily store the data of the current enemy? Of course I don't see the whole picture here, as there are only snippets of the event sheet, but I think you could be more efficient about it.
The enemy being attacked is going to be picked anyway, why is there the need to temporarily store its stats in globals and calculate the actual damage from that? It seems like an unnecessary step.