You could actually build a state machine using the StateMachine Utility. That would mean that your actions would lead you to various states such that you don't have to evaluate everything all the time, instead you rely upon being in the right state at all times because you define a Finite State Machine (FSM) that says what states there are and what states you can transition to from a given state, etc. You can write guard code that keeps you from exiting a given state unless you're ready (e.g., you've put something valid into a test tube), or from entering a given state unless you're allowed (e.g., you've got two test tubes with valid stuff in them so that you can mix them. You have Mediators and Commands send notifications about actions that change the state, or respond to notifications from the StateMachine saying the state is about to change or has changed, etc.
The difference in the StateMachine approach and the approach you describe is that you are constantly trying to evaluate the state of the application in various places. With an FSM driving things, you don't care. You just listen for the changes and trigger them when appropriate. Having an FSM at the core of your app is a fog-lifter.
Here is a recent post with a real-world FSM from a product of mine. It's a licensing program, not a game, but you can see what the process of declaring an FSM is and how looking at it gives you a conceptual map of your application's discrete states and how it moves between them.
http://forums.puremvc.org/index.php?topic=1991.msg8905#msg8905State Machine Overview Presentation
http://puremvc.tv/#P003/AS3 StateMachine Utility
http://trac.puremvc.org/Utility_AS3_StateMachine-=Cliff>