Alright, this might need fixes since the code is just off the top of my head, but this is a basic way i'd have done it with UpdateBlocking.
In Header:
int m_combatCharacterId = -1;
In UpdateBlocking():
// Only try and show a dialog if there's none showing
if ( D.Current == null )
{
// Can add more characters here if necessary
ICharacter[] characters = new ICharacter[]{C.Jonah, C.Goliath, C.Eddy, C.NurseJan};
// Increment which character we're trying to show this update
m_combatCharacterId++;
if ( m_combatCharacterId >= characters.Length )
m_combatCharacterId = 0;
// Grab the character, and start their dialog tree if its time
ICharacter character = characters[m_combatCharacterId];
if(character.IsDead() == false && character.JoinedParty == true && character.TurnOrder == Character.TurnOrderMode.None)
{
Display: Showing {character.ScriptName} combat menu
E.GetDialogTree(character.ScriptName+"CombatMenu").Start();
}
}
End