There's an example of the checklist system I use in
this topic. As Gary said, it requires some "legwork", but it's designed to be easy to edit and expand.
One thing a "passive" checklist(one that doesn't actively, programmatically, checks any ingame parameters) doesn't require is waiting; The state can be incremented by your "check" command, after which the next checklist item is read, and the entire system does nothing until you give another command.
This also means it's unaffected by stopping all commands(which a "waiting" system using any time of loop would be stopped by).