Hey there, while I don't have an answer to your exact question, I will say that I personally have not had good luck with global variables. For me they always tend to break at one point or another. Rather I try to keep a game manager that has references to whatever gameobject or fsm I want to communicate with. It's more work than global variables but also more reliable, for me at least.
I like to have a gameobject (like an item, enemy or so on) use find gameobject with tag to find my game manager, then it can set variables, send evets and so on. Anyway I hope this helps, good luck with your project!