* Don't purge cards-by-rarity cache between tournaments
* Move DOM and WAR specific checks out of base ExpansionSet class
* Move Battlebond specific methods out of base ExpansionSet class
* Refactor ExpansionSet and subclasses
* Zendikar boosters also only have full-art basic lands
* Fix Eldritch Moon (#8171)
* AI: fixed that AI was able to targeting an invalid player targets in some use cases (#5630);
* AI: fixed that AI was able to ignore targeted triggers in some use cases;
* AI: improved player targeting for not own chooses (if it's make a choice for another player);
* ConditionalAsThoughEffect - improved support with target effects (see comments from e6e802033b);
* TargetCardInLibrary - added additional checks on wrong usage (must be used inside effects only, not as ability's target);
* PlayFromNotOwnHandZone - fixed wrong playable mark on battlefield's permanents (AI related too);
* [AFR] Implemented DiceRolledTriggeredAbility
* [AFR] Implemented Brazen Dwarf
* [AFR] Implemented Feywild Trickster
* [AFC] Implemented Reckless Endeavor
* [AFR] Implemented Pixie Guide
* [AFR] Implemented Critical Hit
* [AFR] Implemented Netherese Puzzle Ward
* [AFC] Implemented Neverwinter Hydra
* [AFR] Implemented Farideh, Devil's Chosen
* [AFR] Implemented Barbarian Class
* [AFC] Implemented Vrondiss, Rage of Ancients
* [AFC] Implemented Arcane Endeavor
* Test framework: added planar die rolls support
* Test framework: added random results set up support in AI simulated games;
* AI: improved roll die results chooses in computer games;
* Roll die: improved combo support for planar die and roll die effects;
Co-authored-by: Daniel Bomar <dbdaniel42@gmail.com>
Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
the sacrifice target cost was optional, but SacrificeCost.canPay first checks if there are valid targets. In this scenario there were none, but the spell should still be playable
* added real time command to check card's counters (example: suspended cards with Time counters, see checkCardCounters);
* added target type support: TargetPermanentOrSuspendedCard;
* improves error logs for miss modes and unsupported target types;
Abilities which use trigger from or replace tapping for mana now save the permanent in case it leaves the battlefield.
fixes#7671, fixes#7770
* Merge fix and additional comments, Winter's Night fixed
Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
* [AFR] Implemented Druid Class
* [AFR] Implemented Wizard Class
* [AFR] Implemented Cleric Class
* [AFR] Implemented Fighter Class
* reworked class ability implementation
* fixed an error with setting class level
* small reworking of class triggers
* added class level hint
* added tests
* small change
* added common class for reminder text
* Cumulative upkeep cost - fixed that it can lost payed state (cards: Aboroth, Karplusan Minotaur, Psychic Vortex, Sheltering Ancient);
* Effects - fixed that it can lost selected targets or other settings (cards: Citadel of Pain, Crimson Honor Guard, Curfew, Leveler, Mana Cache, Monsoon, Paradigm Shift, Saprazzan Bailiff);
* Exile all cards from graveyard ability - fixed that it can lost targets (example: Agent of Erebos);
* Melee ability - fixed that it can lost targets (example: Adriana, Captain of the Guard).
* add treasure mana support to mana code
* [AFR] Implemented Hired Hexblade
* [AFR] Implemented Jaded Sell-Sword
* [AFR] Implemented Forsword Paladin
* added test
* fixed test failure
* another test fix
* completely reworked tracking mana sources
* added dungeon and dungeon room class
* [AFR] Implemented Tomb of Annihilation
* [AFR] Implemented Shortcut Seeker
* [AFR] Implemented Gloom Stalker
* [AFR] Implemented Nadaar, Selfless Paladin
* added room triggers
* added more venturing code, currently untested
* fixed error
* moved venture into dungeon from player class to game class
* removed unnecessary sourceobject from dungeon
* fixed npe error
* added dungeon completion
* fixed concurrent modification exception
* added logging
* added proper copy methods
* added views
* updated room text generation
* added some missing code
* finished implementing CompletedDungeonCondition
* [AFR] Implemented Ellywick Tumblestrum
* [AFR] Implemented Lost Mine of Phandelver
* added choice dialog for dungeons
* [AFR] Implemented Dungeon of the Mad Mage
* small text fix
* added initial dungeon test
* [AFR] Implemented Cloister Gargoyle
* [AFR] Implemented Dungeon Crawler
* small text change for dungeon rooms
* added more tests
* some simplification to dungeon props
* updated testing helper functions
* added currently failing test for venturing on separate steps and turns
* added tests for dungeon completion
* fixed missing trigger visual and dungeons not persisting through turns
* some text updates
* added rollback test
* added a test for multiple dungeons at once
* added one more condition test
* Implemented chooseTargetAmount and new GUI dialog (distribute damage, distribute mana)
* Added tests and AI support;
* Test framework: added aliases support in TargetAmount dialogs;
Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
* created interface for handling voting
* created class for two choice votes, refactored a card to use it
* refactored all cards which use two choice votes
* updated VoteHandler to an abstract class to encapsulate more of its functions
* refactored cards which vote for more than two things
* [CNS] Implemented Brago's Representative
* [CN2] Implemented Ballot Broker
* [CN2] Implemented Illusion of Choice
* [CNS] Implemented Grudge Keeper
* added vote outcomes
* updated implementation of Illusion of Choice to work correctly in multiples
* added test for voting
* updated implementation of extra votes
* simplified vote message handling
* Improved names, additional comments
* Votes: fixed not working getMostVoted
* Votes: added final vote results to game logs;
* Votes: added additional info for the vote choices;
* Votes: added vote step info in choose dialogs, added AI support example for Tyrant's Choice;
Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
* refactored createCopyOnStack to be void
* added new interface for modifying copied spellsspells
* update implementation of Fork to use new applier
* reworked epic effect
* add applier to spell copy code
* updated implementation of Beamsplitter Mage
* updated cards which copy for each possible target
* added support for additional copies having targets changed
* fixed/ignored failing tests
* updated target changing to prevent unnecessary choosing
* added test for Twinning Staff
* updated implementation of spell copy applier
* added new method for choosing order of copies on stack
* fixed test failures
* [TSR] various text fixes
* fixed a test failure
* [SLD] fixed Rick, Steadfast Leader only counting Human creatures
* updated test framework to handle skips without affecting starting player choice
* fixed another test failure
* updated copy messaging for consistency
* added copy messaging to stack abilities
* in card's code use player.isComputer instead player.isHuman (it help to split Human/AI logic and test both by unit tests);
* usage example: AI hint to skip or auto-calculate choices instead call of real choose dialogs;
* unit tests for Human logic: call normal commands;
* unit tests for AI logic: call aiXXX commands;
* 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);
* initial refactor of damage events
* cleaned up some instances of classes that need to be removed
* removed old damage event classes
* removed outdated imports
* temporarily refactor Everlasting Torment (this will need to be changed more)
* updated damage handling to use new changes
* some reworking of lethal/excess damage plus a test
* updated damage marking to handle planeswalkers
* updated implementation of Phyrexian Unlife
* updated implementation of Everlasting Torment
* added some more excess damage tests
* small change to wither check
* Cascade: added correct spell ability choose for forced cast of mdf and adventure cards (can contains one or both sides);
* Cascade: added tests from latest oracle changes;
* AI: improved spell ability choose for forced cast (example: cast target card without mana cost);
* GUI: improved spell ability choose for forced cast (now you can see only castable spells to choose);
* Other: fixed wrong PlayFromNotOwnHandZone in some cards, fixed NPE;
* [THB] added initial common/uncommon collation mechanism
* [THB] added rare/mythic and lands to pack generation
* fixed some card names
* broke out collation into its own separate classes
* built collation into ExpansionSet
* added note about collation information
* [KHM] added collation info
* updated collation to use collector number rather than name
* added shuffle to set constructor
* added some notes on collation methods