RequestDecision() not invoking OnActionReceived(), CollectObservations() or WriteDiscreteActionMask(

I am working on a turn based grid game using discrete actions and am using an Event to invoke RequestDecision(), the Event works and RequestDecision() is being called I have print statements that confirm it.

But then once RequestDecision() is invoked nothing happens it does not call OnActionReceived(), CollectObservations() or WriteDiscreteActionMask().

I have set the Academy as such on the Agent:

What am I doing wrong? If I don’t use an Event to call RequestDecision() and instead place it inside

like such the agent moves and RequestDecision() is being called but this is the wrong way to do it since it’s a turn based game that requires only a single move per turn. Any help would be greatly appreciated.

try without turning off automatic academy stepping, the agent shouldn’t act without calling request decision anyway

I tried it and it still doesn’t call OnActionReceived(), CollectObservations() or WriteDiscreteActionMask().

Any other suggestions?

not sure, you’re 100% sure the event is being invoked? it should work fine, might need to share your scripts / workflow in more details

I still can’t get RequestDecision() to be invoke.
I have the event inside the OnEnable() function which I have overrided
For the agent child am I allowed to override the OnEnable() function??

If not, should I not be using Events where is the best place in the agent child code to invoke the RequestDecision() function?

I just looked at Agent.cs and in there OnEnable() is a protected virtual void which means it cannot be overriden so how are we suppose to use Events in the Agent then, any ideas would be helpful.

public override void Initialize()

Thanks! I will try that