+private.variable = 0
+On control "p1_catch" pressed
->Catch ball
->set private.variable to 1
+private.variable caught =1
+On control "p1_pass" pressed
->Pass ball
->set private.variable to 0
i'm already doing something similar, but with testing for 'is animation playing' rather than private variables. you'd have to switch the order in your example though, or it'd always fly through both (the order of mine apparently doesn't matter, because either way it still does it half the time).
the odd behavior is that it only auto-passes half the time.
edit: if it makes any difference, i'm using Functions for the actual actions.