Of course it depends on the exact design of the game and how it works but for example on start of turn you can predetermine the enemy actions then have the player do theirs and add each action to a row as such :
1. enemy1 > block > target=enemy1
2. player1 > magic > target=enemy1
then you run the actions in turn, popping the top of the array each time so you are always running row 0.
1. run block function on family instance enemy1(updates variable that they are blocking)
2. run magic function on family instance enemy1(apply damage to enemy1, show magic related UI etc)