Commit graph

203 commits

Author SHA1 Message Date
Susucre
7df86e91a0 [CLU] Implement Sludge Titan
Introduced TargetCardAndOrCardInGraveyard, derived from the Library one.
Did not achieved everything I wanted in the tests, as the choice seems to be accepted.
Tested it live, no particular issue, you can't select more than one per category.
2024-01-23 19:51:13 +01:00
xenohedron
9b3ff32a33
Rework sacrifice effects to support "can't be sacrificed" (#11587)
* add TargetSacrifice and canBeSacrificed

* SacrificeTargetCost refactor, now uses TargetSacrifice, constructors simplified, subclasses aligned

* fix text errors introduced by refactor

* refactor SacrificeEffect, SacrificeAllEffect, SacrificeOpponentsEffect

* cleanup keyword abilities involving sacrifice

* fix a bunch of custom effect classes involving sacrifice

* fix test choices

* update Assault Suit implementation

* fix filter check arguments

* add documentation to refactored common classes

* [CLB] Implement Jon Irenicus, Shattered One

* implement "{this} can't be sacrificed"

* add tests for Assault Suit and Jon Irenicus

* refactor out PlayerToRightGainsControlOfSourceEffect

* implement [LTC] Hithlain Rope

* add choose hint to all TargetSacrifice

---------

Co-authored-by: Evan Kranzler <theelk801@gmail.com>
Co-authored-by: PurpleCrowbar <26198472+PurpleCrowbar@users.noreply.github.com>
2023-12-31 14:10:37 -05:00
xenohedron
264b73355a
refactor: improved targets that find a [type1] card and/or a [type2] card (#11497) 2023-12-01 19:26:30 +04:00
theelk801
86389b81d9 [LCI] Implement Tishana's Tidebinder 2023-11-05 13:34:08 -05:00
Evan Kranzler
bc4aa6931f
Ready for review: Implement Craft mechanic (#11352)
* [LCI] Implement Spring-Loaded Sawblades / Bladewheel Chariot

* [LCI] Implement Sunbird Standard / Sunbird Effigy

* card filter needs to have an owner predicate

* [LCI] Implement Throne of the Grim Captain / The Grim Captain

* make default constructor for craft with artifact

* dedupe some code

* refactor constructors for simplicity

* add currently failing test
2023-10-27 22:32:11 -04:00
PurpleCrowbar
7bc5105c1f
Implement Time Travel mechanic (#11299)
Implement [WHO] Wibbly-wobbly, Timey-wimey
2023-10-13 23:28:29 -04:00
xenohedron
e6e241cfcb fix notTarget handling in TargetPermanentAmount 2023-10-11 20:53:09 -04:00
xenohedron
d9ca387fad
another batch of text gen improvements (#11247)
* describe targets: UntapTargetEffect

* describe targets: SetBasePowerToughnessTargetEffect

* cleanup text

* describe targets: RegenerateTargetEffect

* describe targets: PhaseOutTargetEffect

* adjust text

* remove superfluous param

* describe targets: TapAllTargetPlayerControlsEffect

* describe targets: TurnFaceUpTargetEffect

* describe targets: TransformTargetEffect

* describe targets: RemoveFromCombatTargetEffect

* describe targets: DetainTargetEffect

* cleanup DiscardHandTargetEffect

* describe targets: DrawCardTargetEffect

* describe targets: GainLifeTargetEffect

* describe targets: LoseLifeTargetEffect

* describe targets: ExchangeLifeTargetEffect

* describe targets: DamageTargetControllerEffect
2023-10-01 22:51:02 -04:00
Susucre
f4b0b83612
[UNF] Implement Comet, Stellar Pup (#10925) 2023-09-15 17:55:11 -04:00
Oleg Agafonov
4b3a19b4d5 refactor: improved target usage, replaced setNotTarget by withNotTarget 2023-09-07 05:35:54 +04:00
Oleg Agafonov
8a65b0f149 refactor: removed netbeans's auto-generated comments 2023-09-02 16:05:29 +04:00
Susucre
a9870b6ff8
text fixes [WOE] etc. (#11035)
* Fix Callous Sell Sword text

* simple text fixes

* fix some target texts
2023-08-26 19:34:49 -04:00
Susucre
f75b1c9f0a
Code cleanup: protect all copy constructors (#10750)
* apply regex to change public copy constructors to protected
* cleanup code using now protected constructors
* fix manaBuilder weird casting of Mana into ConditionalMana
2023-08-04 19:34:58 -04:00
Susucre
23781ecb37
[LTC] Implement Elrond of the White Council (#10731) 2023-08-03 00:26:19 -04:00
Susucre
a53abeaf40
[CMM] Implement Descendants' Fury (#10700)
* [CMM] Implement Descendants' Fury

* various cleanup

* reset watcher on cleanup, in case of 'end the turn' during combat damage step
2023-07-30 19:25:43 -04:00
Susucre
bc403fd6fe
[LTC] Implement Mirkwood Trapper (#10665) 2023-07-27 00:23:58 -04:00
xenohedron
0fa971514a
code style: eliminate unnecessary static imports (#10585)
* SacrificeTargetCost(StaticFilters)

* remove import static mage.constants.Outcome

* remove import static mage.constants.Duration

* remove other import static

* a few more sacrifice filters

* simpler constructors

* remove import static mage.filter

* remove a few more import static
2023-07-08 13:08:28 -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
Alexander Novotny
b0809c4a7a
Beamtown Bullies now properly targets opponent (#10439)
* Beamtown Bullies now properly targets opponent

Fixes magefree/mage#9975

* Fixed filter initialization
2023-06-07 14:27:59 -04:00
Evan Kranzler
a850e3660b
Change supertype method in constructors (#10361)
* replace addSuperType with supertype.add in card constructors

* more supertype replacements

* update MDFC supertype implementation

* remove unnecessary class

* update test
2023-05-12 20:45:07 -04:00
Oleg Agafonov
aaa92d5e46 Fixed tests 2023-04-29 21:30:34 +04:00
theelk801
46e0af6cc2 fix error 2023-04-29 11:41:52 -04:00
theelk801
dae78e9407 [MOM] fix Quintorius, Loremaster targeting 2023-04-29 11:38:36 -04:00
Oleg Agafonov
5474787641 Refactor: added miss Ability source in some choose methods 2023-04-21 10:08:33 +04:00
Oleg Agafonov
d6506657d6 Fixed NPE 2023-04-15 14:13:51 +04:00
Evan Kranzler
947351932b
Ready for Review: Implementing Battles (#10156)
* 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
2023-04-13 20:03:16 -04:00
Evan Kranzler
23bd6f6919 [J22] Implement Coalborn Entity 2022-11-23 20:14:29 -05:00
Alex W. Jackson
76fcfafc8b Add common effect class for "Its controller searches..." (Path to Exile, etc) Fixes #9654 2022-10-15 21:27:55 -04:00
Alex W. Jackson
cbe610d339 Move PutCards enum to constants package 2022-10-10 21:21:41 -04:00
Alex Vasile
fd16f2a16b
[NCC] Implement several cards (#9328)
Many associated refactors too. See full PR for detail.
2022-09-22 21:38:29 -04:00
Alex W. Jackson
dc33531792 Fix #4368 2022-09-12 06:56:07 -04:00
Alex W. Jackson
c0aeb44e5b [TOR] Implemented Carrion Rats and Carrion Wurm 2022-09-10 03:27:41 -04:00
Alex W. Jackson
e310ede837 Replace many custom effects with ExileUntilSourceLeavesEffect 2022-09-06 06:50:01 -04:00
Alex W. Jackson
b5b4b38cc6 Fix ShuffleIntoLibraryTargetEffect to support multiple target cards with possibly different owners 2022-09-05 19:44:09 -04:00
arketec
56d5ad3dbc
[NCC] Implement The Beamtown Bullies (#9378) 2022-08-17 21:01:49 -04:00
Jeff Wadsworth
e7205391ba - Fixed #9128 2022-06-20 11:53:02 -05:00
Evan Kranzler
1899fa0def [CLB] Implemented Balor 2022-06-06 19:49:42 -04:00
DeepCrimson
853cf591aa
Remove redundant variable controllerOfFirstTarget (#9039) 2022-05-30 07:54:13 -06:00
DeepCrimson
9084180937
Fix 'chosen' spelling (#9021) 2022-05-27 21:45:07 -06:00
Alex Vasile
561a5a3d0e Fixed error I introduced in canTarget() 2022-05-25 23:18:01 -06:00
DeepCrimson
0c8ef41012
Fix spelling of doneChoosing() (#9002) 2022-05-25 22:25:15 -06:00
Alex Vasile
eb63ea1e32 - Improved TargetCardInASingleGraveyard to restrict all targets after the 1st to the same graveyard as the first chosen target
- Added slight documentation to Target and TargetCard
- Minor cleanup to Unlicensedhearse
2022-05-25 10:57:13 -06:00
Evan Kranzler
758f1cb896 [CLB] Implemented Alora, Merry Thief 2022-05-23 21:20:49 -04:00
Evan Kranzler
913f88d573 [SNC] fixed NPE with Rocco, Cabaretti Caterer (fixes #8886) 2022-04-27 08:30:14 -04:00
Alex W. Jackson
d95d8378fb Various text fixes 2022-04-26 07:10:13 -04:00
Evan Kranzler
9ead88bacb [SNC] Implemented Endless Detour 2022-04-19 18:40:45 -04:00
Evan Kranzler
2619333ff5 [SNC] Implemented Psychic Pickpocket 2022-04-11 18:36:38 -04:00
Evan Kranzler
20a577fc5a [SNC] Implemented Incriminate 2022-04-09 10:08:23 -04:00
Alex W. Jackson
081b2f2f39 Replace more custom effects with SavedDamageValue 2022-04-02 02:11:12 -04:00
Evan Kranzler
945b60c8d0 fixed some NPE issues with player target choosing 2022-03-25 21:16:38 -04:00