Commit graph

1646 commits

Author SHA1 Message Date
Alexander Novotny
fae63d9d4b
Add additional ability icons (#10549)
* 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
2023-07-04 01:22:07 +04:00
Alex Vasile
6b5d4abb69
Add documentation to Cards and CardsImpl (#9019)
* Added minor documentation and TODO questions

* Fixed typo

* Address one set of comments

* merge fix

* remove commented code

---------

Co-authored-by: xenohedron <xenohedron@users.noreply.github.com>
2023-07-02 18:20:28 -04:00
Oleg Agafonov
6529ead72f refactor: simplified extra turn code, fixed NPE error on usage (Alchemist's Gambit) 2023-06-30 06:39:01 +04:00
Susucre
c92ad45e56
[LTR] Implement Stone of Erech (#10497)
* [LTR] Implement Stone of Erech

Grouped together two other recent cards for that exact same replacement effect.

* refactor some more

This does extend the ReplacementEffect "If ... would die, exile it instead", using a `PermanentFilter`. [[Void Maw]] and [[Lorcan, Warlock Collector]] have thus be refactored to use that instead of a custom replacement effect.

Added a static filter `StaticFilters.FILTER_ANOTHER_CREATURE` for Void Maw that is filtering "another creature".
Found and refactored cards that were declaring that exact filter locally
* [[Flame-Kin War Scout]]
* [[Herd Gnarr]]
* [[Mogg Bombers]]
* [[Timid Drake]]

* fix void maw

* reverse changes on VoidMaw

Void Maw was a linked ability, so not exactly the same replacement effect that was refactored.
2023-06-29 09:17:34 -04:00
xenohedron
231ab77bcd
New common class CopyTargetStackAbilityEffect (#10525)
- Fix superfluous null check in Lithoform Engine
- Remove hardcoding of controlled abilities in TargetTriggeredAbility (used only in Strionic Resonator)
- EnchantmentSourcePredicate analogous to ArtifactSourcePredicate
2023-06-25 22:20:41 -04:00
xenohedron
5722ae27f6 fix text: Silverskin Armor 2023-06-25 15:15:41 -04:00
xenohedron
ec4c2e2170
Cleanup: GainAbilityControlledSpellsEffect (#10446)
* Hide reminder text on Zhulodok

* Use logic from GainAbilitySpellsEffect, fix so that CastFromZonePredicate works

* Text adjustments

* Show cascade ability in hand for Abaddon the Despoiler

* Remove redundant class

* Simplify Cast Through Time

* Don't add additional instances of redundant abilities

* Remove redundant check

* Add option to ignore mana validation when checking playable objects

* Fix null errors

* Fix GainAbilityControlledSpellsEffect to apply ability to playable cards rather than owned cards

* Add unit test

* Revert bad workaround code

This reverts commit 17f5be6a79.
This reverts commit 7ebd2f1815.
This reverts commit 00969d1fe7.

* Remove ownership check on exiled cards

* Another test (currently failing)

* ignore test

* fix test: strict choose mode
2023-06-24 01:15:58 -04:00
xenohedron
7e15ca92c5 simplify implementation and remove redundant class 2023-06-23 20:11:37 -04:00
xenohedron
23a6185f70 Remove unused effect class 2023-06-23 20:11:04 -04:00
xenohedron
380fea6720 fix some return from exile zone 2023-06-23 01:19:17 -04:00
theelk801
0bf70260b8 [LTC] Implement Bilbo, Birthday Celebrant 2023-06-19 08:17:29 -04:00
xenohedron
045bbbf04f
Fix ReturnToHandAttachedEffect with MDFCs (#10452)
* Add tests for ReturnToHandAttachedEffect

* Temporary fix for returning attached MDFC to hand
2023-06-16 22:43:34 -04:00
xenohedron
0ce6df9ef7
Improvements to effects that use ADD_COUNTERS GameEvent (#10474)
* Fix Blightbeetle

* Another adjustment to Laezel

* Fix Vizier of Remedies

* Make extra counters overflow safe

* Inline variable instead of field (Doubling Season)
2023-06-16 02:24:32 -04:00
theelk801
f7baa2a338 [LTR] Implement Gandalf's Sanction 2023-06-14 22:01:10 -04:00
theelk801
018a815eb1 [LTR] Implement Aragorn, Company Leader 2023-06-14 22:00:17 -04:00
xenohedron
2cdfb255cf
cleanup to use ObjectColor.COLORLESS (#10447)
* Replace for BecomesColorSourceEffect

* Replace for BecomesColorTargetEffect

* Remove unused class

* Use common static instance
2023-06-11 23:36:01 -04:00
theelk801
ce46b0c0fc [LTR] Implement Isolation at Orthanc 2023-06-10 12:54:55 -04:00
theelk801
a754fb672a [LTC] Implement Fealty to the Realm 2023-06-10 12:28:29 -04:00
Oleg Agafonov
05826fa8d8 RevealAndSeparatePilesEffect - fixed NPE 2023-06-09 07:03:32 +04:00
Alexander Novotny
80cb439862
Added Saruman of Many Colors (#10434)
* Added Saruman of Many Colors

Borrowed functionality in CastSecondSpellTriggeredAbility from magefree/mage#10433
Added new helper class ExileTargetCardCopyAndCastEffect for common effect

* Updated FlawlessForgery to use new ExileTargetCardCopyAndCastEffect

* Fixed overriden Effect copy functions

* Expanded ExileTargetCardCopyAndCastEffect

Added ability for non-free spells

* Removed filter lock

* De-duplicated exile and cast effects

* Fixed demilich
2023-06-08 17:00:28 -04:00
Alexander Novotny
0b2f582d84
Added Storm of Saruman card (#10433)
* Added Storm of Saruman card

Some classes have been added/adjusted for code reusability:
- CastSecondSpellTriggeredAbility has been modified to set a target pointer to either the caster or the spell (used here to set a target pointer to the spell for the copy effect)
- CopyTargetSpellEffect has been modified to allow specifying a copy applier (used here to apply the legenedary-stripping effect)
- RemoveTypeCopyApplier has been added as a generic copy applier for any cards which read "except it isn't <type>"

* Fixed verify failure - Remove ward hint on Storm of Saruman

* Fixed a typo - ammount -> amount

* Modified Double Major to use new CopyTargetSpellEffect

* Re-added ability text for Double Major
2023-06-08 16:58:28 -04:00
theelk801
a998017ddd [LTR] Implement Elrond, Lord of Rivendell 2023-06-05 23:18:12 -04:00
xenohedron
807a6c95f1
Merge pull request #10369 from xenohedron/refactor-search
Refactor search library effect classes to clean up text generation
2023-06-04 22:18:18 +03:00
xenohedron
4a3ce686bb
Cleanup: ReturnFromExileForSourceEffect (#10371)
* Cleanup ReturnFromExileForSourceEffect

* Fix text
2023-06-04 15:07:49 -04:00
theelk801
27e3010139 [LTR] Implement Fangorn, Tree Shepherd 2023-06-03 21:44:39 -04:00
xenohedron
7531263fb9
Fix text [RAV] [GPT] [DIS] (#10359)
* Fix text: capitalization of regenerate

* Fix text: Circle of Protection Artifacts

* Fix text [RAV] [GPT] [DIS]
2023-06-02 12:36:22 +03:00
xenohedron
5c8b5f23bb
Fix text [CHK] [BOK] [SOK] (#10355)
* Fix text: duplicate ("you control") in Champion ability

* New static filter "artifacts and enchantments"

* Text fixes [CHK] [BOK] [SOK]

* Fix Genju text without breaking the effect this time
2023-06-02 12:33:48 +03:00
xenohedron
a7c3cb9797
Merge pull request #10399 from xenohedron/cleanup-becomescreaturesource
Cleanup: BecomesCreatureSourceEffect
2023-06-02 11:57:19 +03:00
xenohedron
c7994cb3ac Text fixes 2023-06-02 11:34:05 +03:00
theelk801
970bd300c0 [LTR] Implement Display of Power 2023-06-01 21:09:50 -04:00
xenohedron
255c7a9ce7
Remove unused marker interface (#10404) 2023-05-29 19:16:04 -04:00
xenohedron
8a071bd1ad
Fix Fighter Class (#10402) 2023-05-29 19:13:50 -04:00
xenohedron
9c20dd3bfc Change the abilities to layer 7b where they belong 2023-05-22 23:49:12 -04:00
xenohedron
d7fc52daea Fix Haunted Plate Mail 2023-05-22 23:49:12 -04:00
xenohedron
091b6e7c0c Add/revise comments for clarity 2023-05-22 01:07:29 -04:00
xenohedron
aecdde421b Refactor to single constructor with CardType enum 2023-05-21 23:47:43 -04:00
xenohedron
00ca915581 Move loseAbilities out of constructor 2023-05-21 23:47:11 -04:00
xenohedron
9b73c8367f Check CDAs from token, remove explicit parameter 2023-05-21 23:46:46 -04:00
xenohedron
ce5423bbf6 Add CR reference comment 2023-05-21 21:51:01 -04:00
xenohedron
7ffd805f87 Fix text for cards with duration at start 2023-05-21 01:31:00 -04:00
xenohedron
26a95eed51 More sensible parameter ordering 2023-05-21 01:21:42 -04:00
xenohedron
0bc473f4b2 Clean up constructors and add comments 2023-05-21 01:21:42 -04:00
xenohedron
9aaf1ccef7 Update constructors 2023-05-21 01:21:42 -04:00
xenohedron
3a6e84043c prepare to move power/toughness out of constructor 2023-05-21 01:21:42 -04:00
xenohedron
70248cdd2b Fix text generation for default duration rule at end 2023-05-21 01:21:42 -04:00
Evan Kranzler
60e488cf05
rename classes (#10383) 2023-05-17 18:49:30 -04:00
xenohedron
549b3eb6c8 rename parameter 2023-05-14 01:41:52 -04:00
xenohedron
9bdd2dd204 Fix missing space 2023-05-14 01:11:53 -04:00
xenohedron
bb8c59aafd add textThatCard to SearchLibraryPutInPlayEffect, fix string builder 2023-05-14 00:01:15 -04:00
xenohedron
b05e6d5cb1 SearchLibraryPutInPlayEffect: remove forceshuffle parameter, part 3 2023-05-13 23:45:36 -04:00