The OP described a state machine.
That still leaves you locked to a state machine.
State machines are perhaps the most often use control system for complex systems, or any system that needs a simple flow.
I've probably written a thousand state machines over my career so far.
In my current mass-production of game objects I'm creating about three state trees every week and the code that goes inside them.
I completely agree about having generic state machine code available in any serious game. It is necessary functionality.