I would suggest using an array as it allows for push/pop/add so that custom event commands can be added in order linear order and removed in linear order.
I would then add your "events" as string commands( command|varias data relevent to command)
then on executing your turn order stuff
loop array each
commandString = array(loopindex)
commandEvent = tokenate(commandeString, 0, "divider")
commandData = tokenate(commandString, 1, "divider")
then Function.Call(commandEvent, commandData)
here is a capx of what I'm thinking. I'm not saying it's the best. Just the only one I can think of. FYI. This capx sorta works. It moves the green box as a sample of executing a command.