Two tests are failing and ignored because this is only a partial fix, as we will still need to process actions between the last mana being paid and the spell being cast.
* added DebugUtil.AI_ENABLE_DEBUG_MODE for better IDE's debugging AI code;
* it's a target amount optimizations;
* it's use a grouping of possible targets due same static and dynamic stats (name, abilities, rules, damage, etc);
* instead of going through all possible combinations, AI uses only meaningful targets from particular groups;
* now computer will use simplified 1 vs 1 combat damage simulations to choose better blockers (due better game score after combat);
* it's not a full combat simulation, but support many things like non-stack abilities, damage replacement effects and SBA -- much better than older PT compare (related to #13290);
* now AI correctly use a blockers with deathtouth, indestructible, first/double strike and other abilities;
* chump blocks also supported (chump logic implemented before in 92b7ed8efc, related to #4485);
* fixed game freezes for no-possible block configurations like Menace (#13290);
* fixed computer cheating to ignore block requirements like Menace (now AI will choose all required blockers instead 1);
* improved computer logic for blockers selection (try to sacrifice a creature instead game loose, simple use cases only);
* added freeze protection for bad or unsupported attacker-block configuration;
* refactor: deleted outdated AI code;
* added additional hint to the optional pay dialog, so user can split it and remember for auto-answer (see withChooseHint);
* Mana Vault - improved UX, now user can hide an untap cost dialog for already untapped permanent (use right click on buttons, #2656);
- game: fixed game freezes when computer try to take control over another computer or human (added game logs, related to #12878);
- cheats: improved take and give control commands, now you can give control under yourself to another player;
- cheats: improved take and give control commands, now you can return control to computer in the same priority;
- cheats: deleted useless and unused command to activate opponent's ability;
- game: added support when a human is take control over a computer player (related to #12878);
- game: fixed game freezes while controlling player leaves/disconnect on active priority/choose of another player;
* [DSK] implemented Nowhere to Run
* [DSK] implemented Nowhere to Run
* NowhereToRun - fixed typo in static test
* NowhereToRun - fixed hexproof effect
- game: added support for human games (cards like Emrakul, the Promised End, #12878);
- game: added support of 720.1. to reset control in the turn beginning instead cleanup step (related to #12115);
- game: added game logs for priorities in cleanup step;
- game: fixed game freezes and wrong skip settings usages (related to #12878);
- gui: added playable and choose-able marks for controlling player's cards and permanents, including switched hands;
- gui: added controlling player name in all choice dialogs;
- info: control of computer players is it not yet supported;
* [refactor/bugfix] use rule 802.2a where appropriate.
Many effects which relied on getDefendingPlayerId would fail if the attacking creature had been removed from combat before they resolved, in which case the defending player ID would be null. This fixes these issues.
* Add test for removing attacking creature with Defending Player triggered ability.
Change allowFormer to be true by default, reduce falses to only necessary cases.
* Add minimum and maximum target counts as parameters for TargetAmount and its subclasses; update/add several rules comments (and one actual text) for clarity; remove unused imports
* Get amount+description from target instead of parameters for DistributeCountersEffect and DamageMultiEffect; additions to TargetImpl.getDescription to accommodate
* Create separate method to check if "any number" phrasing should be used, override it in TargetAmount
* Check instanceof TargetAmount before casting
* Add new constructors to chain off of for TargetCreaturePermanentAmount & TargetCreatureOrPlaneswalkerAmount
* Fix text for Storm the Seedcore
* Use Integer.MAX_VALUE instead of 0 to represent no maximum targets
* Add comment about getUseAnyNumber()
* Use amount-only constructors in some TargetAmount subclasses, add clarifying documentation
* Fix a few calls
* Require more specific filters