Quote from: AdamH on 09 January 2017, 01:46:34 PMYou are not going to convince me here.
But, but... it does handle everything. Except for one thing, where you prompt the user instead.
If you are willing to have special-cases that ignore the rules for one situation, then you will be willing to have those for multiple situations. If you have them for multiple situations then you will get weird bugs that you could have trivially avoided by not ever ignoring the rules.
The idea of starting to resolve a card without knowing what phase it is is Bad.
Note that this is not the case with e.g. playing Counterfeit and having isotropic realize "oh you want it to be your Buy phase now." That goes, make it your Buy phase, then play Counterfeit. The Counterfeit is played full-on in your Buy phase.
When you have a game that only has 10 cards set in stone and is never getting any more, you have the freedom to write code that is very specific to how the cards work, that would mess up if they were different. We have a game with lots of cards and the ability of some cards to change what other cards do. Ignoring the rules, trying to spot the problem interactions that result and then special-casing them is awful. Having the philosophy that that's okay sets you up to have a bug-riddled program. I believe this strongly! Argument by authority, many years as a computer programmer.