Letting the user select which phases stop, so a card or ability can be played, is trickier than it seems. Programming phase stops is actually pretty hard because it is easy to get it wrong. I thought I was done with the phase stop code in version 2, but after testing it, the code didn’t quite work correctly. The good news is that I’ve written new code and version 2 has all the phases and the phase stops work.
The original phase stop code comes from a previous attempt at version 2 that I was working on a year ago and it had three buttons: OK, Cancel, and Reset. Each button is supposed to be very simple but they didn’t work correctly. The OK button saves your choices. The Cancel button doesn’t save your choices but it still has to reset graphic checkbox components that show you which checkboxes are selected. And the Reset button stops only during your two Main phases. (The program always lets you declare your attackers and blockers, you cannot accidentally skip those phases.)
So the phase stop code works and hopefully I won’t have to update it for a long awhile. Version 2 just cycles through the phases but this is an important step. This means that the Phase object is correctly going to the next phase, which seems minor but it is very important.
In MTG Forge, the reason that the computer can’t be the first player is because there is a problem with the phase cycle. I accidentally forgot to test if the computer could go first. In conclusion, phases and phase stops are hard to code but very important.
p.s. What are the default phase stops for Magic Online?
This is how the phase stop menu looks in version 2.