Oh, turn order is actually pretty easy. It's just kinda repetitive stuff since you have to make sure to check all possibilities. Also it depends on how you want to do it. I use a delay system where each action adds +x delay to the character after they attack. Then it checks whoever has the lowest delay. However, the first thing you'll want to do is make sure no one has the same delay. Well, I usually run an initialize delay portion where it checks to see if participants have the same delay values.
So it goes through, if 2 participants have the same delay value, a RND happens. If 0 or 1, -1 to the winner's delay. However, whenever someone has matching delays, it also triggers a switch, which I call "Conflict Found". As long as the "Conflict Found" switch is on, at the end of calling all the initialize delay common events, it'll go back to the top and repeat (turns off switch at the start) until no conflicts are found.
Then it's just choosing what type of turn system you want to use. You can do the input all actions, then have all actions take place. Or, you can have it so you input action once their turn comes around (thus giving fast characters a chance to take more then one turn before the enemy). The first way, you would just run the initialize delay at the start of every turn. After that, check how many are active in battle (able to take an action for the turn round). Then you would run a check to see who's the fastest.
If a person is slower, then a switch is turned on that they lose the chance at that turn slot. If it's the person being checked to all others, then it jumps to the end of the check event. This is because while they may be slower then one enemy, they could be faster to another. This is to prevent the wrong person from taking the turn slot. I usually use a variable "Turn Flag" and each character/EN gets a unique number.
Then once the fastest person is found, then have a variable "Action 1" == "Turn Flag". After that, turn on a switch "Character/EN X Already has Turn" is turned on. Then rerun the same check events to find the new fastest person for Action 2. Then keep repeating until you have all actions accounted for with the amount of people active in battle. Though to note, a slight alteration should be made to the Check events.
Since I'm not using the input all actions before turn starts type of method, I don't have this in my event. However, you'll want to make sure this check happens. This way, when you recheck for the new fastest character, it will skip the person who took the first action slot so that way they don't get multiple actions. Then once all the turns are figured out, you would just run an event that goes through
If "Action 1" == 1
Call Common Event: "Hero 1's Action Scene" <-- does animation, damage etc)
Else
If "Action 1" == 2
Call Common Event "Hero 2's Action Scene"
Else
Then let's say Action 4 ends up == 0 (since theoretically there were only 3 actions being taken this round) it'll jump to the end, and go back to input phase.
The other way, there is no need for this since once the fastest person is found, you just have them take their action. Then you would adjust everyone's delay and then repeat. However, both ways after every turn/turn cycle, you'll want to keep checking to see if people have matching delays since there is always a chance for that happening mid fight.
I hope that helps. I hope I was able to explain it well enough since half the time it sounds right in my head, then I may of accidentally left something out.