This sounds like something I would do.
There’s probably a lot of ways to do something like this …all of them rather complex …but this is what I’m doing on a mod I’m currently building. You may try using something similar in your setup.
At the beginning of each round, players issue orders for what they want to do in that round. The orders are always resolved in the same order via round phases but the players execute those orders in a random sequence.
For example, players 1, 2, 4 select Move Forces, 1, 3 select Launch Attacks, 2, 3, 4 select Build Forces.
The Move Forces phase is first and a random player from 1, 2, or 4, is told to move their forces. Then each of the others are selected at random. Once all three have moved their forces, the game moves to the Launch Attacks phase and selects a random player among those that issued that order. …and so on.
The Launch Attacks phase can get really complex as the player attacked can move and launch a CounterAttack. The original attacker can then launch a another attack.
As you can see, my phase system can get just about as quirky as what you’re trying to do.
The way I control all this is through Global Property counters and phantom card decks. I’ve found that cards are handy controllers for complex operations as they can trigger anything and you can move them easily around between various decks. You don’t need any fancy graphics for phantom decks, either, as no one is going to see them. I use a simple 10x10 black square.
So, I have a hidden window that no one has access to (except the host who knows the secret hotkey). In this window I create a deck of cards for each of the orders. Each card represents a player in that deck. Each deck is called (Order Name)_Draw …as in MoveForces_Draw.
I also create 2 empty decks for each of the orders called (Order Name)_Ordered and (Order Name)_Play.
When a player selects the Move Forces order, their card is moved from MoveForces_Draw deck into the MoveForces_Ordered deck. When the Move Forces Phase begins, a random card is drawn from the MoveForces_Ordered deck to the MoveForces_Play deck and a trigger is sent to announce who is to begin their phase and have the card activate whatever processes are necessary.
Once that player is finished, their card is moved back to the MoveForces_Draw deck and the next player is drawn from the MoveForces_Ordered deck.
You can use the Global Property counters to keep track of how many orders have been given, how many players have selected each order, etc. to determine when to change phases, complete the round, etc.
I hope you can glean enough wisdom from this to come up with a system of your own. It will probably drive you crazy …it does me, sometimes …but when it works, it really simplifies game play.