Improves:
* refactor: split CostAdjuster logic in multiple parts - prepare X, prepare cost, increase cost, reduce cost;
* refactor: improved VariableManaCost to support min/max values, playable and AI calculations, test framework;
* refactor: improved EarlyTargetCost to support mana costs too (related to #13023);
* refactor: migrated some cards with CostAdjuster and X to EarlyTargetCost (Knollspine Invocation, etc - related to #13023);
* refactor: added shared code for "As an additional cost to cast this spell, discard X creature cards";
* refactor: added shared code for "X is the converted mana cost of the exiled card";
* tests: added dozens tests with cost adjusters;
Bug fixes:
* game: fixed that some cards with CostAdjuster ignore min/max limits for X (allow to choose any X, example: Scorched Earth, Open The Way);
* game: fixed that some cards ask to announce already defined X values (example: Bargaining Table);
* game: fixed that some cards with CostAdjuster do not support combo with other cost modification effects;
* game, gui: fixed missing game logs about predefined X values;
* game, gui: fixed wrong X icon for predefined X values;
Test framework:
* test framework: added X min/max check for wrong values;
* test framework: added X min/max info in miss X value announce;
* test framework: added check to find duplicated effect bugs (see assertNoDuplicatedEffects);
Cards:
* Open The Way - fixed that it allow to choose any X without limits (close#12810);
* Unbound Flourishing - improved combo support for activated abilities with predefined X mana costs like Bargaining Table;
* Abstract AdventureCard to SingleFaceSplitCard
* Fix AdventureCardSpellImpl
* Finish converting adventure card and adventure spell
* Update Brightcap Badger
change finalize call to adventure card
* Update Darksteel Monolith
being cast from hand condition referencing AdventureCardSpell
* Update Tlincalli Hunter
exiled creature condition referencing AdventureCardSpell
* Update Twice Upon a Time
finalizeAdventure called from Adventure card
* Finish abstracting Adventure
missed some more references to adventure cards
* Implement Omen cards
* Implement Dirgur Island Dragon
* Missed some adventureSpellName references
* OmenCardSpell had wrong comma symbol
* Add tests for Omen Cards
* Rename two part card components
change from SingleFaceSplitCard to CardWithSpellOption
* Update comments and variable name
* refactor: added helper emblems instead rad counter's inherent emblems (use initGameDefaultHelperEmblems to define new card hints or other fake objects);
* refactor: added card hints support for emblems, planes and other command objects;
* GUI: added storm counter as default card hint (use hints tool to see it, closes#12360);
* added support to attack battle permanents (#10246);
* fixed that AI was able to attack multiple targets by single creature (#7434);
* added docs;
* added todos with another bugs or possible problems with AI combat;
* Rework AsThoughEffect
* some cleanup of MageIdentifer
* refactor ActivationStatus
* fix bolas's citadel
* fix a couple of the Alternative Cost being applied too broadly.
* fix Risen Executioneer
* allow cancellation of AsThough choice.
* fix One with the Multiverse
* cleanup cards needing their own MageIdentifier
* last couple of fixes
* apply reviews for cleaner code.
* some more cleanup
* apply regex to change public copy constructors to protected
* cleanup code using now protected constructors
* fix manaBuilder weird casting of Mana into ConditionalMana
- added reminder / helper tokens support (example: Copy, Morph, Day // Night, related to #10139);
- added verify checks for reminder tokens;
- added images download for reminder tokens;
* added WhileControlled duration, removed SourceOnBattlefieldControlUnchangedCondition
* refactored effects which keep things tapped
* a few additional missed cards
* refactored cards which check for being controlled and tapped
* [NEO] Implemented Kyodai, Soul of Kamigawa
* Dev: added card's LKI support of multi part cards (mdf/split/adventure);
* Dev: improved support of adding/removing counters from mdf cards;
* Draugr Necromancer - fixed support of mdf/split/adventure cards (#7620);
* AsThough: added documentation about code usage and restrictions;
* AsThough: added additional checks for correct usage;
* AsThough: simplified some code;
* PlayFromNotOwnHandZoneTargetEffect - added permanents support as targets;
* Release to the Wind - fixed that it can't cast exiled cards (#7415, #7416);
* Test framework: fixed that checkExileCount checking card's owner;
* GUI: fixed typo in Trample card icons;
- Simplified and fixed some problems of the handling of the "Until end of your next turn" duration.
- Fixed that some continous effects changed controller but shouldn't dependant from their duration type. Controller chnage will now done duration type dependant.
(that change fixes#6581 in a more general way undoing the effect specific changes of 2e8ece1dbd).