Your setup seems convoluted. The suggestion of using a scene based manager is good for some game types: if you cannot for some reason use names or tags, to have something akin to global variables or “variable containers” in one place, to keep track of something without every frame checks etc. However, as I wrote, it is better to handle each part itself with as minimal spaghetti (cross referencing etc) as possible.
In your case, you need to think more atomistic. Each wolf manages its own health. Each arrow delivers the damage. See the method above.
Player is tagged as player, and wolf is tagged enemy. Each arrow’s collision/trigger detection looks for something with the tag enemy, and then stores the object it hit (the wolf). Then the arrow “knows” the wolf that was hit. It also has the event data action, that contains the damage values, and sends an event to the wolf’s health FSM on the wolf, telling it, that it was hit. The wolf’s health FSM gets the info (see a post above of mine) and then substracts this value from its own health, then checks if the wolf is still alive etc.
If you really want to use a battle manager to do the calculation, which looks like spaghetti to me, you can find the Battle Manager by name, or tag. Then, it has two game object variables I assume, one for damage dealer and one for damage receiver.
When the collision or trigger hits, the arrow knows what it hit and also knows itself (at least with get owner, executed at the start). It can then Set FSM Game Object , twice, into the Battle Managr, once for itself as the dealer and the target it hit as the receiver. Then the battle manager knows them, too, and can do whatever calculation it needs to do, and use those same game object variables plus Send Events or Set FSM viables to report back the outcome.
However, unless you have a compelling reason for doing it like this, I recommend to do the more robust, simpler approach without the battle manager.