Controlling other player
I have some bad news. There are a few cards that read "you control target player during his next turn" or just give you control over some phases of an opponent:
Mindslaver,
Sorin Markov
There is also Odric, Master Tactician who instucts to assign blockers on behalf of defending player.
In our code we have HumanPlayer and AIPlayer, I have also made lots of changes to have AI methods accept player parameter of type AIPlayer and moved methods to invoke human's spells and abilities from methods into HumanPlayer class.
So with current codebase human cannot control ai player and AI cannot control human's player.
Solution?
Now I think we should eliminate the dirreference between HumanPlayer and AiPlayer classes - there should be an only shared Player class. As player changes controller - its 'controller' member gets replaced for until the end of turn. All the AI and Gui methods should make no difference which type of player they perform actions on.
Mindslaver,
Sorin Markov
There is also Odric, Master Tactician who instucts to assign blockers on behalf of defending player.
In our code we have HumanPlayer and AIPlayer, I have also made lots of changes to have AI methods accept player parameter of type AIPlayer and moved methods to invoke human's spells and abilities from methods into HumanPlayer class.
So with current codebase human cannot control ai player and AI cannot control human's player.
Solution?
Now I think we should eliminate the dirreference between HumanPlayer and AiPlayer classes - there should be an only shared Player class. As player changes controller - its 'controller' member gets replaced for until the end of turn. All the AI and Gui methods should make no difference which type of player they perform actions on.