Ingmar Goudt
96d026e4af
remove explicit null checks, match(..) checks on null itself by instanceof calls
2021-04-28 20:53:50 +02: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
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
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 7659039670 .
* 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
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
Daniel Bomar
c5dc43630f
Fixed missing variables in copy constructor
2021-01-22 18:34:10 -06:00
Daniel Bomar
c3a862d336
[KHM] Implemented Blood on the Snow ( #7428 )
...
* [KHM] Implemented Blood on the Snow
* [KHM] Blood on the Snow - Changed target text
* [KHM] Blood on the Snow - Fixed rule text
2021-01-22 13:43:33 -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
db239a1055
Refactor: replaced sourceId by source and introduced source param in some methods;
2020-12-12 20:23:19 +04:00
Oleg Agafonov
c325a6d2f0
Removed unused code (optionalCost);
2020-09-13 10:33:13 +04:00
Oleg Agafonov
6e0c7e868c
Additional and alternative costs improved:
...
* Now player must choose additional costs before ability's modes;
* Fixed broken kicker ability from ZNR (see comments from d4ca287f0f );
* Improved compatibility of additional cost with cost modification effects (fixed that optional multi-costs doesn't affected by cost modification);
* Improved compatibility of additional cost with alternative cost (some cards ignores additional cost on alternative usage, e.g. on play free);
2020-09-13 09:57:17 +04:00
LevelX2
c16fb75668
* replaces all [source} by {this}. ATTENTION !!!: Only supporting [this} from now on in rule text.
2020-08-22 12:52:49 +02:00
LevelX2
8105d8b26c
* Improved handling of asThoughtAs approval by abilities that allows a clear and easy assignment of the approving effect.
2020-08-21 14:58:22 +02:00
LevelX2
768f1bec4f
* Fixed available mana calculation for Cryptic Trilobite and Titans' Nest. Added some improvements for available mana calculation of conditional mana.
2020-08-16 01:16:52 +02:00
LevelX2
67dd45c1c7
* Added getProducableManaTypes method for mana effects to handle Squandered Resources or Reflecting Pool like abilities.
...
* Fixes to Soldevi Adnate, Skirge Familiar, Mana Web.
2020-08-02 10:51:22 +02:00
Oleg Agafonov
043785b1d1
* Metalcraft abilities - added card hints about artifacts count, fixed missing ability word;
2020-07-25 05:40:59 +04:00
LevelX2
653a2dd7b2
* Available mana calculation - Fixed a problem with repeatable mana converting abilities (e.g. Farrelite Priest) that were only considered once ( #6698 ).
2020-07-24 12:06:14 +02:00
LevelX2
89249888b5
* Added handling of triggered mana to available mana calculation ( fixes #585 ).
2020-07-11 00:53:47 +02:00
Oleg Agafonov
55f2893fc4
* AI: fixed that computer can cancel "target player or planeswalker" spells on bad effects (can't choose himself);
2020-07-07 06:31:06 +04:00
Oleg Agafonov
69d8fd1898
Battlefield Thaumaturge - fixed that it doesn't allow to cast spells without full available mana ( #6698 );
2020-07-05 01:08:43 +04:00
Oleg Agafonov
da4a44445b
Additional fixes for #6771 (modal spells resolve order)
2020-07-03 01:46:05 +04:00
Oleg Agafonov
6dccaee9a4
Ghostfire Blade - fixed that it can't be played without full available mana ( #6698 );
2020-07-02 20:37:59 +04:00
Oleg Agafonov
09bc2575d8
Cost increasing effects - refactor, removed redundant custom effects (related to #6684 and #6698 );
2020-06-30 08:27:29 +04:00
Oleg Agafonov
50c46e39a3
Improved game logs: added target hints, fixed spaces in target amount;
2020-06-26 10:59:22 +04:00
Oleg Agafonov
6e1da09023
* Morph ability - fixed that card with morph ability marked as playable all the time ( #6680 );
2020-06-23 00:59:17 +04:00
Oleg Agafonov
a75d08283f
* Split cards - added spliced effects support for fused spells, no more double splice pays ( #6493 , #6549 );
2020-06-10 09:58:21 +04:00
Oleg Agafonov
978118148b
Ability refactor: new code to remove abilities from permanent;
2020-05-28 22:31:54 +04:00
emerald000
3465493ccf
Rename, move and comment resolving ability event creation.
...
Should be clearer now.
2020-05-03 18:56:35 -04:00
Samuel Sandeen
d56f6b991b
Fix Sevinne's Reclamation. ( #6275 )
...
This also handles the rather unique case caused by Sevinne's Reclamation where the original spell resolves before the copy of it.
Also fixes a couple typos.
2020-02-10 08:18:12 -05:00
Oleg Agafonov
5adab75324
Revert "format: organize imports"
2020-02-05 02:17:00 +04:00
Leandro Doctors
8a0a9acff7
format: organize imports
2020-02-04 16:21:48 -03:00
Oleg Agafonov
89394ffe0a
Improved ability outcome processing;
2020-01-29 07:33:33 +04:00
LevelX2
8854871c15
* Fixed problems of Yixlid Jailer that removed abilities from cards in graveyard permanently ( fixes #1147 ).
2020-01-03 15:23:52 +01:00
Oleg Agafonov
60781604f3
Merge branch 'master' into fix-tapped-for-mana-event
2019-12-31 12:12:25 +01:00
LevelX2
da9f24e008
Removed deprecated AdjustingSourceCosts interface.
2019-12-14 18:33:11 +01:00
Oleg Agafonov
899cde4d54
Merge pull request #6073 from ssouders412/pronoun-fixes
...
Updated pronouns to reflect current rules and oracle text
2019-12-07 01:07:11 +01:00
ssouders412
2d3247d732
Updated pronouns to reflect current rules and oracle text
...
Replaced all instances of "her or she", "him or her", and "his or her", with "they", "them", and "their", or sometimes "that player". Updated verbs where appropriate.
2019-12-06 14:29:36 -05:00
Oleg Agafonov
a8d707b469
Additional watchers fixes for #6065 , see comments in f21151bca5
2019-12-06 21:02:41 +04:00
Sarah Souders
b208dc332f
Fixed Rankle's triggered ability ( #6064 )
...
* Fixed Rankle's triggered ability
Any number of available modes can now be selected, including zero.
* Update AbilityImpl.java
* getTargets now returns empty Target for null Mode
Reverted null Target check changes in StackAbility.
* Update HumanPlayer.java
2019-12-04 20:59:03 -06:00
Sarah Souders
e437577b5a
K'rrik fixes, payment for triggered abilities ( #6060 )
...
* K'rrik fixes, payment for triggered abilities
K'rrik's Phyrexian ability is now handled separately from actual Phyrexian mana costs. It can now be used to pay for triggered abilities like Extort.
* K'rrik tests added
Tests include:
- only usable by 1 player
- usable with activated/triggered abilities
- usable as an alternative to true Phyrexian mana, getting around Trinisphere
2019-12-04 16:27:41 -06:00
ssouders412
6fd9cab283
Implemented K'rrik, Son of Yawgmoth
...
KNOWN ISSUE: K'rrik's ability allowing the player to pay Phyrexian for black mana remains active after K'rrik leaves the battlefield.
2019-11-11 00:17:57 -05:00
Iain Monro
48fbd30f2d
#5935 Fix and standardise firing of TAPPED_FOR_MANA event
2019-08-16 15:26:40 +01:00
Ingmar Goudt
3163bfa310
move default case down
2019-07-11 15:45:22 +02:00
Oleg Agafonov
6848626c4b
Merge fix
2019-07-04 18:19:46 +04:00
Oleg Agafonov
437861ec20
Improved and fixed X mana cost and pays, mana pool:
...
* Pay X abilities - fixed that it spends all available mana pool instead only needed;
* Pay X abilities - added support of interactions with other X effects like Rosheen Meanderer's mana usage for "pay X to prevent";
* Rosheen Meanderer - fixed that it can't use mana for "you may pay X" like Flameblast Dragon's effect (#5206 );
* Devs: added support to use VariableManaCost to pay X in code (without generic's workaround, use ManaUtil.createManaCost to generate cost to pay);
2019-06-20 21:18:01 +04:00
Oleg Agafonov
92517cc371
Merge fix
2019-06-17 15:29:58 +04:00
Oleg Agafonov
fe28c9c7d9
* Flashback ability -- added support of additional cost like flashback with kicker combo ( #5389 );
2019-06-17 15:03:37 +04:00
Oleg Agafonov
0e2cfb7def
Fixed tests with multiple X values
2019-06-06 21:07:51 +04:00
Oleg Agafonov
12fc854777
[MH1] added Unbound Flourishing
2019-06-06 16:52:06 +04:00
Oleg Agafonov
410fd68996
Fixed that triggered abilities shows cancel button in target definition;
2019-03-18 06:10:08 +04:00