Not sure if that can be done. Also biggest reason to have AI, behavior trees and blackboards is performance when you get 100+ characters like that.
So it may be impossible, or rather (quite common in unreal) you are fighting against design of engine.
At some point I gave up on fighting all those references up and down (like AI, umg, animation trees etc.)
And for every group of blueprints\actors i made single messaging system.
Quite simple:
- there is dispatcher in easily referenced blueprint like game mode,
- and there is event that fires that dispatcher also in game mode
- every actor that want to send message calls that event in game mode
- everybody that needs such info hooks into dispatcher
Dispatcher and event are simple, they pass over only 2 values:
- who called it
- and what is message.
ofc. i Format messages so they are easily readable by other scripts, for that i create enumerators, but when they passed over i change them to string and back to enum.
Easier to avoid silly spelling errors.
Unreal really needs some global messaging system