The Sound of Music?
Yes, WAIT_STATE is in the good old DikuMUD Gamma code that my last game was based on (I'll even upload it someday, just so people can see how their grandparents played muds).
The idea that comes to mind for diminishing or removing this piece of arcana is to place commands into a priority queue instead of returning an error if the first command isn't done yet. Some LpMUD's do this.
> cast 'fireball' bozo
You begin muttering and flailing your arms about...
> hug bozo
You continue chanting, placing a small red pea in your palm.
(Your feelings will be shown in 5 seconds)
> kill bozo
You toss the red peat up into the air, and it glows!
(Your feelings will be shown in 2 second)
(Your attack will commence in 4 seconds)
> abort hug bozo
A fireball erupts from your hands, smashing into bozo, and
causing a great deal of confusion to the kids watching.
(hug aborted!)
(Your attack will commence in 1 second)
> smile
You HIT bozo with your empty hand... ok.
You smile in pleasure.
It's really the same idea, but instead of returning an error, you queue the command and get to it as the wait states for that command tick down. If you wanted to reorder your commands, you could do so (if commands to do that were created), and commands like tell/score/quit/etc could bypass the queue.
When the command is done, pull it off the queue and add it to your history buffer, then go do the next command (if any).
Oh, and the differing messages as you prepare and cast could be accomplished by having lists of messages tied to the current wait ticker.... if you wanted that level of detail.
Another idea would be to utilitze the event system and queue all the commands as future callbacks, but that's a bit less efficient in a system that wasn't designed with those concepts in mind.