There are some issues, and finding the specific reason is not likely to be one thing.
The first thing that will cause you issues though are that you do a "for each canDamage" however this family is not the same as genEnemy. So even if you do a for each canDamage and then do genEnemy is overlapping Damgbox. the for each have no effect as these are completely different objects to the program. so it selects all genEnemy objects.
The way you use for each is a bit wrong or misunderstood. And doesn't really do anything in this case.
Normally when you need for each is when you need different things to happen to a range of objects. So placing it as the very first condition is not very common as its not really needed in most cases.
The normal way of using it would be for something like this, if we imagine that a bomb explode in the middle of some enemies.
First you need to pick all the enemies that are hit (Enemies overlapping explosion) This will select X amount, lets say 5 enemies.
Each of these enemies we want to fly in random directions. So we add a for each Enemy as the last condition.
And then in the action, we do:
Set Enemy.position X = random(300)-150 Y= random(300)-150
(This is just simplified for the explanation and wouldn't work correctly )
Which will set each enemy position to a random X,Y within that range.
So first you isolate the objects you want to work with and then you do something for each of them.
In your case you might be able to solve it if you after the for each in the top of the event add a "Pick genEnemy.UID = canDamage.UID"
Since these two families have the same UIDs, however I don't know your program well enough to know if that will fix it completely or not