Commit graph

2800 commits

Author SHA1 Message Date
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
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