Commit graph

3160 commits

Author SHA1 Message Date
Evan Kranzler
214b688fdb
Update effects and abilities which involve tapping permanents for mana (#7679)
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>
2021-07-22 05:09:07 +04:00
Oleg Agafonov
e330ed6c7b Test framework: improves logs in choices errors; 2021-07-21 20:15:47 +04:00
Oleg Agafonov
7ccb390e4d * GUI: added card icon for announced X value (activate ability); 2021-07-19 14:25:51 +04:00
Oleg Agafonov
76082e1d7a * GUI: added card icon for announced X value (card cast); 2021-07-19 13:40:21 +04:00
Oleg Agafonov
fc0ff6c22d Test framework: added support to test client side data in unit tests (getGameView -> CardView, etc); 2021-07-19 13:07:09 +04:00
Oleg Agafonov
f2ba76ca75 Tests: fixed miss commands, fixed debug info for permanents on battlefield; 2021-07-17 19:43:05 +04:00
jeffwadsworth
29a4fbc27a - Added another complex layer test to LayerTests unit test 2021-07-16 16:46:42 -05:00
jeffwadsworth
d2f2578cc4 - Added test unit for Ranar the Ever-Watchful 2021-07-15 16:15:58 -05:00
Evan Kranzler
b316a32ab7 [AFR] Implemented The Tarrasque 2021-07-14 17:45:58 -04:00
Daniel Bomar
29d3f96340
[MH2] Implemented Carth the Lion (#7848)
* [MH2] Implemented Carth the Lion

* [MH2] Carth the Lion - Fixed loyalty cost modification

* Fix copy constructor and add getters/setters

* Call sourceObject.adjustCosts before checking cost modifications

* Add unit test

* Added additional comments, checks and tests;

Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
2021-07-15 00:12:25 +04:00
Evan Kranzler
5b88484cb6
[AFR] Implementing Class enchantments (ready for review) (#7992)
* [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
2021-07-14 09:17:07 -04:00
Evan Kranzler
572104b8fc
Reworking card types in preparation for implementing Grist, the Hunger Tide (#7899)
Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
2021-07-09 07:28:43 +04:00
Evan Kranzler
e9482376f1 fixed text failures 2021-07-08 08:27:28 -04:00
Oleg Agafonov
07ddad6e48 Game: fixed rare bugs in some cards after rollback or cancel actions:
* 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).
2021-07-07 16:51:53 +04:00
Evan Kranzler
b4355b8f6e
Added treasure mana check (#7979)
* 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
2021-07-06 19:43:32 -04:00
Oleg Agafonov
bb4f36fddf Game: fixed mulligan's copy code (can potentially fix empty hands or loses on game start in rare use cases, e.g. with AI); 2021-07-06 13:58:04 +04:00
Oleg Agafonov
b929b28e43 * AI: fixed game freezes with Karn Liberated in the game (#7922); 2021-07-02 15:03:06 +04:00
Evan Kranzler
6046c4e0d7 [AFR] Implemented Hama Pashar, Ruin Seeker 2021-07-01 18:17:03 -04:00
Oleg Agafonov
62d6675be6 AI: fixed that computer can't play commanders (#7955); 2021-07-01 18:21:15 +04:00
Evan Kranzler
a76d6e8c24 [ARB] fixed Sen Triplets (fixes #7068, fixes #7116) 2021-06-30 22:16:00 -04:00
Evan Kranzler
bb591dd038
[AFR] Implementing dungeon mechanic (ready for review) (#7937)
* 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
2021-06-29 06:57:43 -04:00
Evan Kranzler
f27f59603c [M21] fixed Hooded Blightfang triggered ability (fixes #7935) 2021-06-24 08:33:40 -04:00
Oleg Agafonov
9a4489b47f * Cast an instant or sorcery spell this turn - fixed rollback error when you cast graveyard spell as first in turn (#7918); 2021-06-23 05:05:51 +04:00
Evan Kranzler
91eb324847 updated ManaSpentToCastWatcher to default watcher list, reworked it to be game scope 2021-06-21 20:26:39 -04:00
Evan Kranzler
157de01445 fixed a test failure 2021-06-18 20:04:50 -04:00
Evan Kranzler
6ca7b06ab9 some reworking of sagas, added tests 2021-06-18 18:27:37 -04:00
Evan Kranzler
7c9b8e5a29 [MH2] added booster generation test 2021-06-17 09:37:59 -04:00
Evan Kranzler
ee0f35a2cd [MH2] fixed Chatterfang, Squirrel General applying to opponent's tokens (fixes #7909) 2021-06-14 08:13:48 -04:00
Evan Kranzler
67a5ca5f89 added tests for sagas 2021-06-13 21:38:54 -04:00
Evan Kranzler
a7e57b8352 fixed test failures 2021-06-10 20:48:31 -04:00
Evan Kranzler
7d07c220b0 fixed while on stack effects of copied spells not discarding when copy has left stack 2021-06-10 18:42:47 -04:00
Evan Kranzler
c8154bf018 [MH2] added test for Garth One-Eye 2021-06-10 18:40:56 -04:00
Evan Kranzler
4232b1e789 [MH2] Implemented Zabaz, the Glimmerwasp 2021-06-07 09:42:34 -04:00
Daniel Bomar
df5bf2fa25
[MH2] Implemented Sanctifier en-Vec (#7893)
* [MH2] Implemented Sanctifier en-Vec

* [MH2] Sanctifier en-Vec - Remove unused filter
2021-06-06 18:38:48 -04:00
Evan Kranzler
4fee736a1f [MH2] reworked Academy Manufactor to match ruling 2021-06-04 21:05:36 -04:00
Daniel Bomar
71ea4a51d6
[MH2] Implemented Academy Manufactor (#7864)
* [MH2] Implemented Academy Manufactor

* [MH2] Implemented Chatterfang, Squirrel General
2021-06-02 21:46:51 -04:00
Oleg Agafonov
6ede79aa1f Tests: added additional test for modern format validation (related to 8d0efaabc9) 2021-05-15 20:34:08 +04:00
Oleg Agafonov
fc219f29a4 Tests: fixed Counterspell in modern format test (related to 8d0efaabc9) 2021-05-15 20:18:13 +04:00
Ingmar Goudt
895430b554 remove the SimpleTriggeredAbility class and rewrite old cards using it 2021-05-13 21:48:58 +02:00
Ingmar Goudt
6eef8f9e0c add assertions for winning and losing the game 2021-05-13 13:19:08 +02:00
Ingmar Goudt
3fc28b3c03 add afr tests 2021-05-12 23:52:23 +02:00
Evan Kranzler
d1f51cae2f [ZNR] fixed Ashaya, Soul of the Wild and Volrath's Shapeshifter interaction (fixes #7812) 2021-05-12 09:41:06 -04:00
Evan Kranzler
f68ed68034 [ZNR] added currently failing test for Ashaya, Soul of the Wild and Volrath's Shapeshifter (#7812) 2021-05-12 09:13:05 -04:00
Evan Kranzler
59f02ad17a [KHM] added test for Crippling Fear (#7815) 2021-05-11 09:03:35 -04:00
Evan Kranzler
8d0efaabc9 ignored now failing test (not sure what to replace it with) 2021-05-07 08:45:20 -04:00
Evan Kranzler
7915e74208 [ICE] fixed Zur's Weirding not allowing players to choose not to pay life (fixes #7793) 2021-05-04 09:31:18 -04:00
Evan Kranzler
970427e23f [ULG] reworked Goblin Welder and added currently failing test (#7672) 2021-05-04 07:35:53 -04:00
Evan Kranzler
0eb539e016 [PLC] fixed Wild Pair and 0 toughness creatures (fixes #7798) 2021-05-03 09:26:39 -04:00
Evan Kranzler
77d792bbaf fixed a test failure 2021-04-30 08:32:26 -04:00
Ingmar Goudt
251e141b50 test for issue #7772 2021-04-26 22:49:48 +02:00
Evan Kranzler
d6c3ef33f0 [STX] added booster collation 2021-04-25 22:19:00 -04:00
Ingmar Goudt
45a50d9707 Add Deicide Test 2021-04-26 01:01:50 +02:00
Ingmar Goudt
25ad3705ff add RiteOfPassageTest for #7740 2021-04-26 00:15:16 +02:00
Evan Kranzler
e56264ff74 fixed test failures 2021-04-22 20:45:25 -04:00
Evan Kranzler
054af6afde fixed a test failure 2021-04-21 09:34:45 -04:00
Evan Kranzler
fbbdb2431d moved a misplaced test 2021-04-19 09:33:56 -04:00
Evan Kranzler
e0aad69fe0 fix failing test 2021-04-18 18:44:00 -04:00
Evan Kranzler
40a374b407 un-reverted change, fixed test failure 2021-04-18 08:12:32 -04:00
Evan Kranzler
eda562fcda fixed a test failure 2021-04-18 07:47:42 -04:00
Evan Kranzler
a61d5543fa replaced all instances of converted mana cost with mana value 2021-04-17 17:02:27 -04:00
Evan Kranzler
af0178962d [STX] fixed Plumb the Forbidden ability not triggering (fixes #7755) 2021-04-17 12:44:49 -04:00
Daniel Bomar
600cac6fc7
[READY FOR REVIEW] Implement a "multi-amount" dialog (#7528)
* 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>
2021-04-17 14:28:01 +04:00
Evan Kranzler
29f7555ac3 [STX] fixed Star Pupil not adding counters (fixes #7744) 2021-04-15 09:45:12 -04:00
Evan Kranzler
e4c7b5da53 [STX] Implemented Radiant Scrollwielder 2021-04-13 17:58:47 -04:00
htrajan
10cd439955
[STX] add more cards (#7720)
* implement AcademicProbation
* implement AugmenterPugilist // EchoingEquation
* Implement BalefulMastery
* implement BasicConjuration
* implement ClosingStatement
* Test framework: added custom effect to return card from any zone to hand;

Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
2021-04-09 17:56:34 +04:00
Evan Kranzler
734bd6f118 fixed Blatant Thievery test failure 2021-04-04 13:19:15 -04:00
Evan Kranzler
8f37428518 [ELD] fixed issues with Robber of the Rich 2021-03-30 17:48:46 -04:00
Evan Kranzler
97af948932 simplified and condensed various effects which discard variable amounts of cards 2021-03-29 21:35:27 -04:00
Evan Kranzler
d54e1c6eac [DTK] updated implementation of spells which reveal dragon cards as a cost 2021-03-23 19:44:45 -04:00
Oleg Agafonov
8a06be7e28 Merge fix 2021-03-20 18:40:22 +04:00
Evan Kranzler
1cbbcddcc6
Improving implementation of cards which use voting (WIP) (#7566)
* 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>
2021-03-20 18:32:54 +04:00
Evan Kranzler
991f154cd7 [IKO] small nonfunctional change to Zirda, the Dawnwaker test 2021-03-15 10:17:04 -04:00
Evan Kranzler
5e2738aab9 [IKO] fixed issue with Zirda, the Dawnwaker static ability not working when reanimated 2021-03-14 18:49:32 -04:00
Evan Kranzler
d4792e3665 reworked/simplified/consolidated effects which exchange life totals, added test (fixes #7668) 2021-03-14 15:56:48 -04:00
Evan Kranzler
13ac8f2c01 [IKO] added test for Zirda, the Dawnwaker 2021-03-14 11:40:08 -04:00
Evan Kranzler
9c56a98dc9
Refactor implementation of spell copies for cards like Twinning Staff as well as refactor handling of target changing (WIP) (#7662)
* 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
2021-03-12 12:47:49 -05:00
Oleg Agafonov
53a2021a12 * Caller of the Hunt - fixed rollback error on usage, added AI support for the card; 2021-03-07 23:41:52 +04:00
Oleg Agafonov
2906f86324 Test framework: simplified AI logic and tests, added usage comments. Devs recommendations:
* 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;
2021-03-07 23:38:10 +04:00
Oleg Agafonov
0e916b6e29 Dev: added additional info to some classes for easy debug; 2021-03-07 17:16:54 +04:00
Oleg Agafonov
b36f915d74 * Copy spell - improved support, now all copied spells are independent (bug example: Seasons Past fizzled after copy resolve, see #7634, 10f8022043); 2021-03-06 19:32:17 +04:00
Evan Kranzler
425c1eda26 [TSR] added set 2021-03-05 18:17:01 -05:00
Oleg Agafonov
712cf4576d * Gain abilities - fixed that objects can get only one instance of triggered ability instead multiple (example: 2+ cascades from copies of Imoti, Celebrant of Bounty, f52753ad61); 2021-03-05 16:22:46 +04:00
Oleg Agafonov
4e79c83784 Test framework: fixed missing range info for added cards (some ETB effects were broken on "put to battlefield" command usage); 2021-03-05 15:12:47 +04:00
Evan Kranzler
28c0bd55e8 added test for Muraganda Petroglyphs/Tarmogoyf/Muraganda Petroglyphs 2021-03-03 09:06:39 -05:00
Evan Kranzler
3b5147f6ee updated some methods to support collections of card subclasses 2021-03-02 09:41:39 -05:00
Oleg Agafonov
098796f86e * Commander: fixed that non hand abilities are castable from command zone (example: Escape, Jumpstart, see #7632); 2021-03-01 01:14:00 +04:00
Evan Kranzler
6091c7eae3 fixed trample and deathtouch not working when deathtouch is gained by an outside source (fixes #7633) 2021-02-28 09:34:09 -05:00
Evan Kranzler
2daf1945e7 [RTR] reworked Nivmagus Elemental and added test 2021-02-27 15:35:04 -05:00
Oleg Agafonov
9d72dad674 [ZNE] added images download 2021-02-27 22:16:19 +04:00
Oleg Agafonov
0d885af05e Tests: fixed random fails; 2021-02-27 20:36:06 +04:00
Oleg Agafonov
dda69cd009 * AI: improved support of "as though mana" abilities (now computer can choose correct mana ability to pay, example: Draugr Necromancer);
* 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);
2021-02-27 20:14:12 +04:00
Daniel Bomar
73f594583f
[KHM] Fixed Draugr Necromancer being unable to cast Adventures 2021-02-26 16:10:46 -06:00
Daniel Bomar
27c0f75302
Fixed Archfiend's Vessel not moving to exile (fixes #7622) 2021-02-25 16:39:20 -06:00
Evan Kranzler
c01e1cd133 [LEA] added test for Forcefield 2021-02-24 20:55:22 -05:00
Evan Kranzler
f5f7638216 [KHM] updated Draugr Necromancer, added test (#7620) 2021-02-23 19:11:21 -05:00
Evan Kranzler
bac2585d83 [KHM] fixed Draugr Necromancer not allowing snow mana to be used for exiled cards 2021-02-23 13:47:23 -05:00
Evan Kranzler
683d5e7c25 [KHM] added new test for Maskwood Nexus 2021-02-23 12:25:08 -05:00
Evan Kranzler
0a68507ef0 reenabled/removed/fixed some ignored tests 2021-02-23 10:37:17 -05:00
Evan Kranzler
2ffa719278 fixed issue with Kruphix, God of Horizons and Horizon Stone causing endless replacement effect loop 2021-02-23 08:41:54 -05:00
Evan Kranzler
5390963d38
Fix handling of damage to permanents (WIP) (#7592)
* 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
2021-02-22 17:11:24 -05:00
Oleg Agafonov
39f6b69391
Merge pull request #7584 from weirddan455/cascade
Implemented updated Cascade ruling 702.84a
2021-02-22 23:03:56 +01:00
Oleg Agafonov
91f4d78992 Changes related to Cascade ability (#7583):
* 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;
2021-02-23 02:00:38 +04:00
Evan Kranzler
bd3777997e
updated various cards to improve how they handle exiling with info (#7615) 2021-02-22 15:26:58 -05:00
Daniel Bomar
bb0a995541
Tibalt, Cosmic Impostor - fixed that emblem can't cast not owned cards (#7598)
* Fixed ability.canChooseTarget not using correct playerId

* Fixed Necrotic Plague

* Revert "Fixed Necrotic Plague"

This reverts commit 7659039670293ce1ea428dad042511d9d75f9da6.

* Set target controller on Necrotic Plague and add check in canChooseTarget

* Add test for Tibalt + Ephemerate interaction

* Tests improved

Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
2021-02-22 23:06:43 +04:00
Oleg Agafonov
4050577d6b Tests: added tests for Moritte of the Frost (related to #7546); 2021-02-22 21:55:17 +04:00
Oleg Agafonov
2accab79c5 * Spark Double - fixed duplicated counters on copying of another Spark Double (#7553); 2021-02-22 21:22:31 +04:00
Oleg Agafonov
f6c0f4c712 * Geode Golem - fixed duplicated commander tax on damage trigger (#7593); 2021-02-22 16:11:13 +04:00
Oleg Agafonov
650acf9e1e Test framework: fixed support of chooseAbilityForCast for commanders, added destroy target custom effect (#7593); 2021-02-22 16:05:48 +04:00
Oleg Agafonov
a377999f57 * Desertion - fixed rollback error on fizzled counter spell (#7613); 2021-02-22 08:51:07 +04:00
Oleg Agafonov
b6cb5cef9c Refactor: removed default comment headers 2021-02-21 08:15:16 +04:00
Oleg Agafonov
d343511d73 * Elsha of the Infinite - fixed that it gives flash ability to cards in the hand instead library's top card (closes #7605); 2021-02-21 07:43:29 +04:00
Oleg Agafonov
48e9cc3e07 PlayTheTopCard improves: added correct usage check, fixed outdated rule texts, Bolas's Citadel simplified (related to #7605); 2021-02-21 05:48:09 +04:00
Evan Kranzler
a8bda04daf [GTC] updated implementation of Bane Alley Broker 2021-02-19 14:47:47 -05:00
Evan Kranzler
4db47adc19 [LRW] added back previously failing test for Aquitect's Will 2021-02-19 08:29:38 -05:00
Evan Kranzler
8dde735851 fixed an issue with modular keyword and LKI 2021-02-18 13:35:49 -05:00
Evan Kranzler
440adfa18b fixed The Ozolith test (it wasn't actually failing) 2021-02-18 13:29:06 -05:00
Evan Kranzler
9426da5ad3 [LRW] added test for Aquitect's Will (partially fails) (#7597) 2021-02-18 09:16:30 -05:00
Evan Kranzler
57dfba99b7 added a failing test for planeswalker damage 2021-02-16 10:23:20 -05:00
Evan Kranzler
8a16eda062
Implement new way to generate boosters using box mapping info (WIP) (#7529)
* [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
2021-02-12 17:35:28 -05:00
Oleg Agafonov
10e557b873 * Performance: memory usage optimization for deck editor (part 2 of removed bloated usage of ManaCosts -> ManaColor objects, see #7515); 2021-02-12 22:12:18 +04:00
Evan Kranzler
21ef775700 [ZNR] updated booster generation and added test 2021-02-08 18:22:55 -05:00
Evan Kranzler
a90e9923f5 [KHM] fixed issues with booster collation, added test (fixes #7521) 2021-02-08 14:04:10 -05:00
Oleg Agafonov
cf216c6802 Prepare new release 2021-02-07 22:24:40 +04:00
Oleg Agafonov
9b8df48183 Improved commander support for mdf/split/adventure cards (additional fixes for ac98a3a31a) 2021-02-06 17:07:10 +04:00
Oleg Agafonov
f692a1f097 * Choice of Damnations - improved AI support, fixed rollback error in AI games;
* Pain's Reward - improved AI support, fixed rollback error in AI games;
* Volcano Hellion - improved AI support, fixed rollback error in AI games;
2021-02-06 12:48:53 +04:00
Oleg Agafonov
ac98a3a31a * Commander: fixed duplicated triggers after play (example: Esika, God of the Tree, see #7501, #7503, #7505); 2021-02-06 10:51:41 +04:00
Oleg Agafonov
dc0a29007c Commanders improves:
* [KHM] fixed that some effects can't find mdf commanders on battlefield (example: Fierce Guardianship, #7504);
* Oathbreaker: fixed that some cards that refer to commander can affects signature spells too;
2021-02-05 17:19:30 +04:00
Daniel Bomar
cd9c57fead
[KHM] Dream Devourer - Fixed being unable to cast foretold MDFCs, split cards, and adventure cards (#7498)
* [KHM] Dream Devourer - Fixed being unable to cast foretold MDFCs, split cards, and adventure cards

* [KHM] Dream Devourer - Fixed mana costs and added check for MDFC lands

* [KHM] ForetellAbility - Add text when selecting which half of split card to cast

* Updated test for Dream Devourer
2021-02-04 16:27:51 -06:00
Oleg Agafonov
0de71e0348 * Flashback ability - fixed that split cards shows duplicated abilities in choose dialog (#7500); 2021-02-04 21:55:56 +04:00
Evan Kranzler
bc99de1a48 [KHM] fixed Frostpyre Arcanist being used incorrectly by AI (#7488) 2021-02-04 10:50:10 -05:00
Oleg Agafonov
f38639e1db Token's zone change counter (ZCC) improves:
* 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;
2021-02-04 19:15:54 +04:00
Oleg Agafonov
4b9de96a6b Test framework: added support to put mdf cards on battlefield by cheats or unit tests; 2021-02-03 14:23:50 +04:00
Oleg Agafonov
c03279d835 * Repeated Reverberation - fixed rollback error on creatures cast (#7474); 2021-02-03 10:27:23 +04:00
Evan Kranzler
a70e50419b fixed a random test failure 2021-02-02 17:10:17 -05:00
Oleg Agafonov
31d134843a * Modal double faces cards - fixed that color identity doesn't contains second side colors; 2021-02-02 20:22:12 +04:00
Oleg Agafonov
2393485320 * Mana increase effects - fixed that some infinite mana combos gives 0 mana on too much permanents/effects (example: Nyxbloom Ancient); 2021-02-02 19:26:49 +04:00
Oleg Agafonov
4aeb94b41c Tests: added test for Spreading Plague from #6984 2021-02-02 07:33:31 +04:00
Oleg Agafonov
50e5809a79 New commander types support:
* [KHM] fixed legendary status of mdf cards (closes #7370, #7404, #7465, #7481);
* Game: added support of split cards as commander (signature spell);
* Game: added support of adventure cards as commander;
* Game: added support of modal double faces cards as commander;
2021-02-02 06:40:49 +04:00
Evan Kranzler
14f7c02b1f [KHM] fixed Codespell Cleric not triggering correctly 2021-01-31 21:26:27 -05:00
Evan Kranzler
df38d7213e [KHC] text fixes 2021-01-31 15:01:02 -05:00
smartinsempere
68613672b1
Fire discard cards event when discarding as a cost (#7436)
Fire discard cards event when discarding as a cost, fixes #7368
2021-01-31 23:03:30 +04:00
Oleg Agafonov
2d96d36ec8 AsThough effects improves and fixes:
* 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;
2021-01-31 22:32:23 +04:00
Evan Kranzler
3a4b0159a9
Add a limit to how many tokens are made (#7469)
* added a simple token limit

* updated implementation of token limit

* added token limit test
2021-01-31 12:55:30 -05:00
Evan Kranzler
bcdaebf3ee fixed some more text 2021-01-30 11:08:35 -05:00
Oleg Agafonov
a1da5ef437 * GUI: new reworked GUI and card render engine, card icons and dozens of other fixes (see full list in related PR); 2021-01-30 16:38:55 +04:00
Oleg Agafonov
df98cc3e62 [KHM] foretell improves (related to bc25c3d60a):
* reverted code format of AsThoughEffectType;
 * fixed disabled test;
 * added test for Dream Devourer;
 * simplified some code;
2021-01-30 11:21:51 +04:00
jeffwadsworth
bc25c3d60a - [KHM] Added Cosmos Charger and Dream Devourer. Refactored ForetellAbility to work with Dream Devourer. Text fixes are required in some cases. Ignored a test for foretell. 2021-01-29 20:35:35 -06:00
Oleg Agafonov
91bac931b7 [KHM] fixed Vorinclex, Monstrous Raider - can't double counters on planeswalkers (#7463); 2021-01-29 17:41:49 +04:00
Oleg Agafonov
6f2ce47885 Tests: added verify test for wrong mdash usage and fixed related cards (#7457), added tests for (#7460); 2021-01-29 11:35:13 +04:00
Oleg Agafonov
e3db50f111 * Double faces and adventure cards: improved support with some "exile and cast" effects like Hostage Taker (#7446); 2021-01-27 10:13:10 +04:00
Evan Kranzler
a535cb5adc
Refactoring methods which add counters to track which player adds the counters (ready for review) (#7448)
* added parameter for player adding counters to players

* added parameter for player adding counters to cards/permanents

* updated methods to use new parameter

* fixed a few initial errors

* refactored instances of cards that add counters by a player other than the controller

* fixed some instances of incorrect arguments

* refactored abilities that trigger off of a particular player adding counters

* a few more cards that were missed

* [KHM] Implemented Vorinclex, Monstrous Raider

* added test for Vorinclex, Monstrous Raider

* fixed a test failure
2021-01-26 19:06:13 -05:00
Evan Kranzler
13ce938fd0 [KHM] added test for Giant Ox 2021-01-26 15:51:35 -05:00
Evan Kranzler
dacf30f4b9
Refactoring subtypes to make Maskwood Nexus work (ready for review) (#7432)
* 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>
2021-01-26 08:52:35 -05:00
Jeff
dbf0789238 - Fixed test 2021-01-25 19:13:46 -06:00
Evan Kranzler
83c103f17f [KHM] Implemented Karfell Harbinger 2021-01-24 15:44:03 -05:00
Oleg Agafonov
c3b391b42f Fixed verify tests config 2021-01-23 09:45:25 +04:00
Evan Kranzler
e5344b7a96
Refactoring snow mana to allow tracking how much is spent (Ready for Review) (#7406)
* refactored mana methods to WUBRG order

* more WUBRG refactoring

* added new mana tracking object

* fixed code error

* fixed missing mana count

* fixed null pointer exception in tests

* fixed issue with equality

* more equality fixes

* some cosmetic changes to ManaTest

* added copy method to setToMana

* fixed some initialization issues

* fixed serialization issue

* [KHM] Implemented Search for Glory

* updated mana handling to track snow

* added tests for snow mana tracking

* updated implementation of setter methods

* updated paramater to use copy methods

* fixed snow mana test to ensure proper mana tapping

* replaced instances of getPayment with getUsedManaToPay

* updated tracking of snow mana

* reverted snow mana tracking removal

* finished reverting change
2021-01-21 18:13:51 -05:00
Oleg Agafonov
286cc63342 Test framework: improves 2021-01-19 08:30:01 +04:00
Oleg Agafonov
639c68cd76 Additional tests and fix for God-Eternal Kefnet (#7397); 2021-01-18 04:23:46 +04:00
Evan Kranzler
5d7fc394fd [KHM] Implemented Rune of Flight 2021-01-14 17:14:07 -05:00
LevelX2
9fc0e2f25a * Added some trace output for continous effects and triggered abilities. Changed duration of AffinityEffect to WhileOnStack to prevent wrong handling for removement of the effect. 2021-01-13 09:14:29 +01:00
Oleg Agafonov
6dcbcbe962 Tyvar Kell and gain ability fixes:
* GainAbilityTargetEffect - reworked to support static/dynamic targets, added support of spells (card + related permanent);
* SpellCastControllerTriggeredAbility - now it can setup the target to a card instead a spell;
* Added checks/errors on wrong ability adding code (example: if you add permanent's ability by game state instead permanent's method);
* Tyvar Kell Emblem now use a standard code;
* Test framework: added additional logs for some errors;
2021-01-12 04:41:35 +04:00
LevelX2
c67ce93ec4 * Fixed some problems with color changes of cards and spells - e.g. Painter's Servant (fixes #7325 fixes #6487). 2021-01-08 11:03:39 +01:00
Evan Kranzler
06b0e4f247 fixed a test failure 2021-01-07 19:40:45 -05:00
LevelX2
8098dd690c * Fixed that effects with custom duration are not automatically removed from the game if source permanents leaves the game (fixes #6997). 2020-12-28 18:36:05 +01:00
Oleg Agafonov
aa7226a1af * Archive Trap - fixed that it doesn't apply alternative cost after searched library (#7274); 2020-12-28 07:10:15 +04:00
Oleg Agafonov
767644f1c8 GUI: fixed that user can target/click on second side of mdf card instead the main side (related to #7297); 2020-12-27 01:39:18 +04:00
Ingmar Goudt
34e9c2fdfb Merge branch 'master' of https://github.com/magefree/mage 2020-12-26 15:26:17 +01:00
Oleg Agafonov
81e0cc6403
Merge pull request #7158 from fburato/app-wiring-refactor
Application wiring refactor and externalise configuration path for server
2020-12-26 07:42:46 +01:00
Oleg Agafonov
a307e5934f Improved some source related filters in effects:
* Fixed that some cards ignore range of influence or source related filters;
* Improved ChosenSubtypePredicate to work with gain abilities;
2020-12-25 19:06:36 +04:00
Oleg Agafonov
6f34d514f9 * Archelos, Lagoon Mystic - fixed broken ETB effect (#7283); 2020-12-24 20:24:42 +04:00
Oleg Agafonov
64e948e4b3 * AI: improved game performance by x10 for cards with target amount;
AI: added targeting name and amount info to simulation logs;
AI: removed duplicated target variations from target amount simulations;
2020-12-24 15:02:28 +04:00
Ingmar Goudt
f0dea44773 small Negan fix 2020-12-23 21:38:42 +01:00
LevelX2
2ce90b1e0a * Fixed that the dies trigger of Ashen Rider also triggers if Ashen Rider is copied by other creatures (e.g. Volrath the Shapestealer) (fixes #7107). 2020-12-23 18:02:00 +01:00
Oleg Agafonov
10cf9c4a4e * Genesis Ultimatum - fixed rollback error on usage with modal double faces cards (#7275); 2020-12-23 09:15:04 +04:00
Oleg Agafonov
796c8fb22e Tests: added Inferno Titan AI tests, related to #6330; 2020-12-23 02:51:52 +04:00
Oleg Agafonov
255c292104 * Deals damage divided as you choose - fixed that some cards can't choose planeswalkers (example: Arc Lightning, see #7276);
Refactor: simplified FilterCreaturePlayerOrPlaneswalker to use single permanent filter;
2020-12-23 02:31:41 +04:00
Oleg Agafonov
347a3b1e1a * Jeweled Lotus - fixed that mana can't be used to cast commanders without normal mana (#7272); 2020-12-22 23:22:41 +04:00
LevelX2
29184316f2 * Cumulative Upkeep - Fixed that a permanent with CU was wrongly sacrificed if the control of the permanent has changed since CU begin of upkeep trigger was put on the stack. Added tests for CU. 2020-12-21 14:36:22 +01:00
Oleg Agafonov
cc5fce4256 Prepare new release 2020-12-19 23:59:44 +04:00
Oleg Agafonov
a1ed8e01b3 [CMR] fixed Eligeth, Crossroads Augur - wrong event type for replacement effect (#7234); 2020-12-19 18:45:49 +04:00
Oleg Agafonov
a50f3c5416 Tests: added Hans Eriksson's play tests, related to #7234; 2020-12-19 18:35:02 +04:00
Oleg Agafonov
9f67765e2d [CMR] fixed Armix, Filigree Thrasher - not working card, missing target (#7234); 2020-12-19 18:18:47 +04:00
Oleg Agafonov
1b830032ac * Militant Angel - fixed rollback error on usage (#7239); 2020-12-19 04:48:55 +04:00
Oleg Agafonov
3cccad2138 Test framework: added dynamic code support in unit tests (command: runCode - use it same way as real time checks); 2020-12-19 04:46:19 +04:00
Oleg Agafonov
384ff2e7ac * Gain cost modification abilities - fixed that commanders can't be played without full mana (example: gained Affinity by Mycosynth Golem, gained Convoke by Chief Engineer, see #7249 #7171, #6698); 2020-12-18 18:33:44 +04:00
Oleg Agafonov
53c5abea14 Added additional test for #7251;
Added last error info in too many errors game message;
2020-12-18 16:46:05 +04:00
Oleg Agafonov
c13d07b73d [CMR] fixed Rakshasa Debaser - class cast exception in filter on usage; 2020-12-18 15:54:59 +04:00
LevelX2
d39575c24e * Fixed bug in DamagedBatchEvent (fixes #7241). Fixed some spelling in test classes. 2020-12-17 17:39:17 +01:00
Oleg Agafonov
3f44d9eef3 * Exile card and return it from exile - fixed rollback error on commander creature exile (#7250);
[CMR] fixed PromiseOfTomorrow - not working ability;
2020-12-17 10:07:15 +04:00
Oleg Agafonov
926f5f0621 * Copy spell for each other permanents that it could target - fixed that AI can freeze the game, fixed wrong highlighting; 2020-12-17 06:37:41 +04:00
Oleg Agafonov
f8206df3ba [CMR] fixed Sphinx of the Second Sun - wrong extra phase and server freeze on usage; 2020-12-16 04:17:03 +04:00
Oleg Agafonov
ac7910159e Tests: added game stats table after load testing finished; 2020-12-16 01:32:24 +04:00
Oleg Agafonov
0c2c33e940 * Kicker abilities - fixed that some cards don't see kicked status of multikicker spells (example: Hallar, the Firefletcher, #4895); 2020-12-15 21:23:09 +04:00
Oleg Agafonov
4d362d7edc * Copy spells - improved combo support with other abilities like Kicker or Entwine (#7192):
* 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;
2020-12-15 20:06:53 +04:00
Oleg Agafonov
936be75a66 Tests: added test for Krark, the Thumbless (#7198) 2020-12-14 22:40:12 +04:00
Oleg Agafonov
c1dfbbda63 Test framework: added support for flip coin tests (command: setFlipCoinResult); 2020-12-14 03:00:38 +04:00
Oleg Agafonov
fde24f349f * Modal Double Faces cards - fixed that it can be returned to battlefield as second side instead the main side only (#7212); 2020-12-14 00:57:30 +04:00
Oleg Agafonov
35f5a8257b Refactor: replaced sourceId by source and introduced source param in some methods (part 2); 2020-12-13 02:01:49 +04:00
Oleg Agafonov
db239a1055 Refactor: replaced sourceId by source and introduced source param in some methods; 2020-12-12 20:23:19 +04:00