- fixed that copy effect doesn't restore original image after effect's end;
- removed outdated availableImageSetCodes (all images auto-selected from tokens database now, related to #10139);
- refactor command objects to use CommandObjectImpl;
- refactor planes/emblems/etc objects to use MageObjectImpl, added copyable support;
- refactor another game objects to remove some duplicated fields;
- added tokens support in test render dialog;
- improved PT drawing;
- fixed broken second side switch button (related to #10231);
- fixed miss override in TokenImpl (all override with backFace must be removed, see todo);
* remove incubate skip
* initial implementation of DFC tokens
* separate incubator back face to separate class
* small refactor to token copy function
* token copies now have back faces as well
* effects which modify token copies now correctly apply to both faces
* add skip for exception
* tokens now enter transformed correctly
* [MOC] remove skip for incubate
* fix verify failure
* add types and subtypes
* add startingDefense attribute
* [MOM] Implement Invasion of Ravnica / Guildpact Paragon
* fix two small errors
* refactor various instances of "any target"
* fully implement defense counters
* battles can now be attacked
* [MOM] Implement Invasion of Dominaria / Serra Faithkeeper
* [MOM] Implement Invasion of Innistrad / Deluge of the Dead
* [MOM] Implement Invasion of Kaladesh / Aetherwing, Golden-Scale Flagship
* [MOM] Implement Invasion of Kamigawa / Rooftop Saboteurs
* [MOM] Implement Invasion of Karsus / Refraction Elemental
* [MOM] Implement Invasion of Tolvada / The Broken Sky
* simplify battle info ability
* fix verify failure
* some more fixes for attacking battles
* [MOM] Implement Invasion of Kaldheim / Pyre of the World Tree
* [MOM] Implement Invasion of Lorwyn / Winnowing Forces
* [MOM] Implement Invasion of Moag / Bloomwielder Dryads
* [MOM] Implement Invasion of Shandalar / Leyline Surge
* [MOM] Implement Invasion of Belenon / Belenon War Anthem
* [MOM] Implement Invasion of Pyrulea / Gargantuan Slabhorn
* [MOM] Implement Invasion of Vryn / Overloaded Mage-Ring
* [MOM] Implement Marshal of Zhalfir
* [MOM] Implement Sunfall
* implement protectors for sieges
* partially implement siege defeated trigger
* fix verify failure
* some updates to blocking
* [MOM] Implement Invasion of Mercadia / Kyren Flamewright
* [MOM] Implement Invasion of Theros / Ephara, Ever-Sheltering
* [MOM] Implement Invasion of Ulgrotha / Grandmother Ravi Sengir
* [MOM] Implement Invasion of Xerex / Vertex Paladin
* add initial battle test
* fix verify failure
* [MOM] Implement Invasion of Amonkhet / Lazotep Convert
* [MOM] update spoiler
* update how protectors are chosen
* update text
* battles can't block
* add control change test
* rename battle test for duel
* add multiplayer test
* [MOM] Implement Invasion of Alara / Awaken the Maelstrom
* [MOM] Implement Invasion of Eldraine
* [MOM] Implement Invasion of Ergamon / Truga Cliffhanger
* [MOM] Implement Invasion of Ixalan / Belligerent Regisaur
* battles now cast transformed (this is super hacky but we need to refactor TDFCs anyway)
* add TODO
* add ignore for randomly failing test
* a few small fixes
* add defense to MtgJsonCard (unused like loyalty)
* implement ProtectorIdPredicate
* small fixes
- removed outdated code;
- updated logic to choose a set code for a tokens in different use cases (related to #10150);
- added many tests for client and server token's data (related to #10139);
- prepare for tokens database (related #6955);
- removed outdated token store format (example: BIRD.W.BIRD.CREATURE.1.1.full.jpg)
- removed duplicated cache images code;
- removed duplicated set code fields;
- removed outdated auto-generated thumb files (also all *.thumb.zip files will be deleted on startup);
* [NEO] Implemented Tamiyo, Compleated Sage
* replaced PhyrexianManaCost calls with ManaCostsImpl calls
* updated phyrexian mana implementation
* added phyrexian hybrid symbol support
* updated starting loyalty implementation for planeswalkers
* change compleated to singleton
* implemented Compleated ability
* added some missing loyalty setters
* changed when loyalty is added to a walker to fix bugs
* slight change to some tests to fix them from failing
* fixed token issue
* Now token's zcc uses same logic as card's zcc: enters to battlefield with +1 zcc instead +0 zcc
* It can improve support of copied spells that store zcc related data (bug example: lost kicked status for copied spell/token);
* Kicker abilities - improved support with copied creature spells (example: Verazol, the Split Current, #7431, #7433);
* Refactor: simplified kicker code;
* removed and renamed SubTypeList
* updated subtype test
* refactored Changeling to be an ability that actually does something
* moved isAllCreatureTypes into SubTypes class
* renamed copyTo method to copyFrom
* added removeAllCreatureTypes where usable
* replaced some subtype methods
* replaced some more subtype methods
* replaced subtype mass add/remove methods
* updated more subtype methods
* fixed some errors
* made common shared creature type predicate
* refactored another card involving subtypes
* Added usage of object attribute in subTypes's write operations;
* Refactor: use same param styles in subtype methods
* Refactor: simplified usage of copy appliers;
* Refactor: fixed code usage in CopyApplier
Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
* Now ZCC of copied spells syncs with source card or coping spell (allows to keep ability settings that depends on ZCC);
* Fixed bug that allows to lost kicked status in copied spells after counter the original spell or moves the original card (see #7192);
* Test framework: improved support of targeting copy or non copy spells on stack;
* Added FrameStyle Enum containing a list of styles that cards can be rendered in.
* Added getFrameStyle() getter to Card interface.
* Implemented getFrameStyle() for various concrete implementations of Card.