Indeed aFoolsDuty is super helpful on discord 🙂
Yes, ConditionTask.OnEnable is always called before State.Enter (and thus before assigned ActionTask Execute as well).
The OnEnable is not affected by any option (like “Check Contiously” or “Check After State Finished”) at all. These only affect the check, yes.
With “Check After State Finished”, and in respects to CheckCSharpEvent and other similar conditions, the event has to be raised after the state has finished (or at the same frame). The way these conditions are implemented does no latch/remember the event being raised and the conditions only return “TRUE” for 1 frame after the said event has been raised. This has purely to do with the way the conditions are implemented and them using the ‘YieldReturn’ function (which makes the condition return true for one frame then resets back to false). You could of course implement your custom condition in a way that it latch/remembers the event being raised (by setting some boolean flag for example).