It probably works, just not the way you think - which enemy do you think this is referring to:
Some stale actor ref from when the Loop run last time? Probably the very last index providing the data is still cached there.
You are telling each widget which opponent it should refer to, that’s great :
The dispatcher in this widget should broadcast that information:
When you bind to this dispatcher you will get a reference of the enemy (SelectOpp) that needs attacking:
Pseudoscript but it should fit into your setup.