Hi,
Sending data with events works in 99% of the case and I think you fall in that case. I think it's simply a matter of wrong state or logic set up.
the only case where event data do not work reliably is the following:
if two objects have colliders and for example trigger enter or collision enter is fired and both object have Fsm implementing a send event with data in the state then the data is mixed up. I have a repro case that I need to clean up. I bumped into this problem only twice since the beginning of playmaker.
In this case, the best option is to manually set a variable in the target Fsm and then fire the event. Event data should not be used in that case. In the mix comes Prefab instantiation and Start state that also should be avoided. Don't rely on the start state when you know the Fsm is on a prefab amd relies on early set up when instantiated, instead do as above as well, set variables manually using set Fsm xxx actions and then either wait for a frame or send a "INIT event to that FSM at a later time.
So:
-- are your fsm attached to a physics gameObject using colliders?
.. Are you within the START state and its flow?
I do have a lot of fsm that relies on others indeed, and for this the best approach I found was to maintain a "META" fsm only holding them shared variables, they do not implement any logic or receive any events, they are simply repositories. Other Fsm get and set what they need there, so I know that I NEVER rely on a variable within a Fsm, but actually always rely on the "META" variable value instead. So when I enter a certain logic, I first make I get all the variable I need and then proceed. It doesn't have to be bad Fsm with twisted logic, I think mine are very organized and flows very well actually. The Get / set fsm variable dance is annoying for sure, and the way to go about that is to split States indeed.
splitting states that should work everyframe can be sometime a challenge, and for this, it's not about splitting the state, but actually splitting the Fsm all together.
EveryFrame bool states and similar technics is not very nice. I do use them, but only very occasionnally, when I can't be ask to do it proper to be honest...
and then I know I will have to re do them cause they are a pain to maintain and not flexible. When you switch a boolean variable state, you should fire a global event for other Fsm to listen and avoid too much "every frame states" this way everything flows much better, you visually see and understand when a state cane exit and why.
Do you have particular examples? that would help base this discussion on fact and provides tangible alternartives for users to understand these design patterns.
Bye,
Jean