Hier ist mein Ansatz für das Ganze wie ich es einmal vor langer Zeit ausgearbeitet hatte:
Jeder Kämpfer besitzt 2 Werte, einen Agilitäts-Wert (Agi) und einen Ready-Wert (Rdy).
Im Kampf gibt es eine konstante Ready-Schranke (RdyMax), welche überschritten werden muss um in Aktion treten zu können.
Um die Figur zu finden, welche in der nächsten Runde am Zug ist wird folgendes getan (Pseudo-Script):
Mit verschiedenen Angriffen / Fähigkeiten / etc kann ein Charakter temporär seine Agilität im Kampf verändern.
Ein normaler Angriff, zum Beispiel, könnte die Agilität für eine Runde verringern. Wenn man sich verteidigt könnte die Agilität für eine Runde gesteigert werden.
Ein paar Anmerkungen dazu:
Ein Charakter mit Agilität == 0 kommt niemals im Kampf zum Zug.
Ein Charakter mit Agilität >= RdyMax kann mehrmals hintereinander zum Zug kommen, ohne, dass ein anderer Charakter vorher zum Zug kommt.
Jeder Charakter mit Aglität > 0 kommt irgendwann zum Zug, keiner wird Außen vor gelassen.
Falls für 2 Charaktere a und b gilt, dass a.Agi / b.Agi == r so gilt, dass nach X Runden die Anzahl der Züge von a geteilt durch die Anzahl der Züge von b ~= r (für ausreichend großes X)