Face down changes:
* GUI: added visible face down type and real card name for controller/owner (opponent can see it after game ends);
* GUI: added day/night button to view real card for controller/owner (opponent can see it after game ends);
* game: fixed that faced-down card can render symbols, abilities and other hidden data from a real card;
* images: added image support for normal faced-down cards;
* images: added image support for morph and megamorph faced-down cards;
* images: added image support for foretell faced-down cards;
Other changes:
* images: fixed missing tokens from DDD set;
* images: no more client restart to apply newly downloaded images or render settings;
* images: improved backface image quality (use main menu -> symbols to download it);
* new help window can be opened from a player panel;
* it collect and show all visible game hints from all players and all zones;
* it updates in real time on game update;
* allows to customize visible data;
* allows to open multiple windows (current limit is 5 windows, can be slow to render);
* allows to minimize opened windows;
* workable card popup on mouse move over card name or card id;
* filter modes:
* all - show hints from all players;
* player - show hints from single player;
* group mode:
* by hints - show same hints as one with all used cards;
* by cards - show full cards list with own hints;
* search mode:
* allows to filter card hints by player name, card name, card id or card hint;
* allows to search multiple words (equals to "or")
* current limitation:
* card popup shows a card instead a real object, e.g. miss card hints in it (relelated to game logs problem);
* unsupport of emblems, dungeons and other non card objects from a command zone;
* unsupport of revealed and library's top cards;
GUI - player's panel improves:
* added hints helper button;
* added player hithlight as possible target in choose dialogs;
* improved player name button in small mode;
* fixed wrong height in small mode;
Other fixes:
* game logs: added card popup support for logs with custom object name;
Moved the cardViewEquals method from CardPanelRenderModeMTGO to CardView
Decomposed conditional to increase readability.
Changed the variable/constant names to increase the readability.
* new feature: Emblem Cards
Allows match/tournament creator to specify cards to give each player
emblem versions of (or just the starting player for symmetric effects).
Technical details:
- new UI for specifying emblem cards (.dck files)
- available for all match/tournament types
- new class `EmblemOfCard`
- new method `copyWithZone` on `AbilityImpl` (used to make abilities
work from command zone)
- new fields on `GameOptions` and `MatchOptions` for emblem cards
- emblems are granted after mulligans, before first turn (technically
after Planechase starting plane creation)
* fixes
* defaults for emblem cards in match options (fixes quick game buttons)
* minor fixes
* use DeckCardInfo instead of Card for emblem cards options
* restore accessible parent properties
* fix images for card emblems
* look up cards in a way that preserves which art
* fix typos; make Emblem.sourceObject protected
* add descriptions to planechase and emblem cards
* fixes
* add some unit tests for known working cards
* fix author name
* add explanation comment
* fix up tests
* copyWithZone: no longer modifies zone for singleton abilities
* directly check for MageSingleton
* Clean original values transmitted with CardView.originalObject
* Move RateCard to mage.Common, support cardView as argument.
* Clean PermanentView constructor for TestCardRenderDialog
* extra deck cards not counted in deck size
* extra deck handling in deckbuilder
* move responsibility for extraDeckCard boolean to CardImpl
* remove redundant field copy
* apply regex to change public copy constructors to protected
* cleanup code using now protected constructors
* fix manaBuilder weird casting of Mana into ConditionalMana
* Fix Ring-bearer choosing & add some GUI + logs
* use a ring svg in a separate gold panel
* use a fontawesome svg
* add a couple null checks, group icon with commander
* rework rinbearer logic according to review
* fix typo in game log
* small fixes
* Slightly revamped basic card icons
All icon classes which were just static text have been removed, and instead replaced with a static instance.
A new icon for reach has been added
Some icons have been reused for new abilities (hexproof for shroud and ward, infect for toxic)
When a card would have two icons of the same type, the icons are instead combines into one with a combined hover tooltip.
* Fixed missing capitalization on ward, hexproof
* refactor check supertype methods
* change supertype to list to match card type
* refactor various subtype methods
* implement mageobjectattribute for supertype
* a few fixes
* [BRC] Implement Rootpath Purifier
* a few extra fixes
* more fixes
* add test for purifier
- 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);
* 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 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);
* added images download for melds cards (#9660);
* added switch card side button to view a meld part;
* fixed NPE and other errors on card side switching;
* added meld cards support in test render dialog;
* added transform button to permanents on battlefield to view another card side;
* fixed wrong popup hints in some use cases (example: alternative side view by mouse wheel down, #8433);
* 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
* 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>