I am having trouble figuring out how to step through combat rounds in a turn based combat system. My intention is to take input from each combatant during each combat round before the next round is allowed to begin. I have it waiting for input and everything runs successfully in that regard, but I do not know how to make it wait to advance combat rounds until everyone has taken their turn. The methods I implement are as follows: Code (CSharp): void ExecuteCombatRounds() { if(aiCount > 0) { CombatRound(); } } Of course all that method does is advance through each combat round while there are AI still alive, but that is not exactly what needs to happen. I also need it to wait for all combatants involved to have taken their turn if there are AI still alive. Here is the CombatRound(): Code (CSharp): void CombatRound() { i_combatRound++; Debug.Log("** COMBAT ROUND: " + i_combatRound + " **"); SetActiveCombatant(); SelectTargets(); SortTargetsByDistance(); SetActiveTarget(); ExecuteCombatantTurns(); } And here is the ExecuteCombatTurns(): Code (CSharp): void ExecuteCombatantTurns() { if(_activeCombatant.GetComponent<AI>() != null) { StartCoroutine(EnemyActionSelection()); } if(_activeCombatant.GetComponent<Player>() != null) { StartCoroutine(PlayerActionSelection()); } } As I mentioned, those coroutines execute fine and take either AI or Player input. The problem is that I don't know how to hold the advance of each combat round until after they have all taken their turn. Thanks in advance for the help and advice.