How do I let an external blueprint know that an animation blueprint has reached a certain state?

None of those things are my issue, it’s simply that in my experience of decades of professional game development, expecting a bunch of variables to stay in sync across multiple systems is a guarantee of regressions. I much prefer picking systems which are robust and don’t require extra setup or maintenance.

Also, montages won’t work for the system I am building, as there are portions of it which need direct player control, which would require the montage itself to be manipulated while it was running. It is possible I am missing something about how to use montages, but they seemed to generally be unfriendly to branching logic.

I did find a general workaround which is that from a thread safe statemachine update call, I could set the current state name, and from the ABP’s tick check for changes against the last statemachine name, and then from there I can direct functions outward.

It’s just an awkward pattern when really all I need is a callback.