diff --git a/Mage.Sets/src/mage/cards/a/AbunaAcolyte.java b/Mage.Sets/src/mage/cards/a/AbunaAcolyte.java index 2b4699f8d01..f072fd4e51a 100644 --- a/Mage.Sets/src/mage/cards/a/AbunaAcolyte.java +++ b/Mage.Sets/src/mage/cards/a/AbunaAcolyte.java @@ -14,6 +14,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetAnyTarget; import mage.target.common.TargetCreaturePermanent; @@ -39,7 +40,7 @@ public final class AbunaAcolyte extends CardImpl { Ability ability1 = new SimpleActivatedAbility(new PreventDamageToTargetEffect(Duration.EndOfTurn, 1), new TapSourceCost()); ability1.addTarget(new TargetAnyTarget()); Ability ability2 = new SimpleActivatedAbility(new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new TapSourceCost()); - ability2.addTarget(new TargetCreaturePermanent(filter)); + ability2.addTarget(new TargetPermanent(filter)); this.addAbility(ability1); this.addAbility(ability2); } diff --git a/Mage.Sets/src/mage/cards/a/AbzanCharm.java b/Mage.Sets/src/mage/cards/a/AbzanCharm.java index 288f3e1c380..64e1e67de45 100644 --- a/Mage.Sets/src/mage/cards/a/AbzanCharm.java +++ b/Mage.Sets/src/mage/cards/a/AbzanCharm.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanentAmount; @@ -33,7 +34,7 @@ public final class AbzanCharm extends CardImpl { // Choose one - // *Exile target creature with power 3 or greater - this.getSpellAbility().addTarget(new TargetCreaturePermanent(FILTER)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER)); this.getSpellAbility().addEffect(new ExileTargetEffect()); // *You draw two cards and you lose 2 life diff --git a/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java b/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java index a3b3893e1ba..dd12271e5c0 100644 --- a/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java +++ b/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java @@ -16,10 +16,13 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.filter.common.FilterControlledPermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author JRHerlehy */ @@ -47,7 +50,7 @@ public final class AcademyJourneymage extends CardImpl { // When Academy Journeymage enters the battlefield, return target creature an opponent controls to its owner's hand. ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/ActOfAggression.java b/Mage.Sets/src/mage/cards/a/ActOfAggression.java index 468e53e5f16..8787eaedb16 100644 --- a/Mage.Sets/src/mage/cards/a/ActOfAggression.java +++ b/Mage.Sets/src/mage/cards/a/ActOfAggression.java @@ -11,8 +11,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author North @@ -21,7 +24,7 @@ public final class ActOfAggression extends CardImpl { public ActOfAggression(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{R/P}{R/P}"); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn)); this.getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap that creature")); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("It gains haste until end of turn.")); diff --git a/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java b/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java index a72aa079675..1b3220379d8 100644 --- a/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java +++ b/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java @@ -14,6 +14,7 @@ import mage.constants.TargetController; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class AdvocateOfTheBeast extends CardImpl { // At the beginning of your end step, put a +1/+1 counter on target Beast creature you control. Ability ability = new BeginningOfEndStepTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AegisOfTheMeek.java b/Mage.Sets/src/mage/cards/a/AegisOfTheMeek.java index 96bbbbfc9c8..b7ae289da89 100644 --- a/Mage.Sets/src/mage/cards/a/AegisOfTheMeek.java +++ b/Mage.Sets/src/mage/cards/a/AegisOfTheMeek.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class AegisOfTheMeek extends CardImpl { // {1}, {T}: Target 1/1 creature gets +1/+2 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 2, Duration.EndOfTurn), new ManaCostsImpl<>("{1}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AerialPredation.java b/Mage.Sets/src/mage/cards/a/AerialPredation.java index e0abfba71bd..e3e9164983e 100644 --- a/Mage.Sets/src/mage/cards/a/AerialPredation.java +++ b/Mage.Sets/src/mage/cards/a/AerialPredation.java @@ -12,6 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -31,7 +32,7 @@ public final class AerialPredation extends CardImpl { // Destroy target creature with flying. You gain 2 life. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new GainLifeEffect(2)); } diff --git a/Mage.Sets/src/mage/cards/a/AerieOuphes.java b/Mage.Sets/src/mage/cards/a/AerieOuphes.java index cbe0fccb147..588d018cefd 100644 --- a/Mage.Sets/src/mage/cards/a/AerieOuphes.java +++ b/Mage.Sets/src/mage/cards/a/AerieOuphes.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -42,7 +43,7 @@ public final class AerieOuphes extends CardImpl { // Sacrifice Aerie Ouphes: Aerie Ouphes deals damage equal to its power to target creature with flying. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power to target creature with flying"), new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Persist diff --git a/Mage.Sets/src/mage/cards/a/Aethertow.java b/Mage.Sets/src/mage/cards/a/Aethertow.java index 7db15f9b34d..834eff2e808 100644 --- a/Mage.Sets/src/mage/cards/a/Aethertow.java +++ b/Mage.Sets/src/mage/cards/a/Aethertow.java @@ -13,6 +13,7 @@ import mage.filter.common.FilterAttackingOrBlockingCreature; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class Aethertow extends CardImpl { // Put target attacking or blocking creature on top of its owner's library. this.getSpellAbility().addEffect(new AethertowEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Conspire this.addAbility(new ConspireAbility(ConspireAbility.ConspireTargets.ONE)); diff --git a/Mage.Sets/src/mage/cards/a/AffectionateIndrik.java b/Mage.Sets/src/mage/cards/a/AffectionateIndrik.java index 3e469e6ebb1..644bb7447eb 100644 --- a/Mage.Sets/src/mage/cards/a/AffectionateIndrik.java +++ b/Mage.Sets/src/mage/cards/a/AffectionateIndrik.java @@ -9,10 +9,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -32,7 +35,7 @@ public final class AffectionateIndrik extends CardImpl { "(Each deals damage equal to its power to the other.)"), true ); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AggressiveInstinct.java b/Mage.Sets/src/mage/cards/a/AggressiveInstinct.java index 5b7bad83ffd..b2b09bf3928 100644 --- a/Mage.Sets/src/mage/cards/a/AggressiveInstinct.java +++ b/Mage.Sets/src/mage/cards/a/AggressiveInstinct.java @@ -5,11 +5,14 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -21,7 +24,7 @@ public final class AggressiveInstinct extends CardImpl { // Target creature you control deals damage equal to its power to target creature you don't control. this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private AggressiveInstinct(final AggressiveInstinct card) { diff --git a/Mage.Sets/src/mage/cards/a/AgonizingDemise.java b/Mage.Sets/src/mage/cards/a/AgonizingDemise.java index 35bca60480d..d55c3c7a4ad 100644 --- a/Mage.Sets/src/mage/cards/a/AgonizingDemise.java +++ b/Mage.Sets/src/mage/cards/a/AgonizingDemise.java @@ -10,10 +10,13 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * @author FenrisulfrX */ @@ -27,7 +30,7 @@ public final class AgonizingDemise extends CardImpl { // Destroy target nonblack creature. It can't be regenerated. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); // If Agonizing Demise was kicked, it deals damage equal to that creature's power to the creature's controller. this.getSpellAbility().addEffect(new ConditionalOneShotEffect( diff --git a/Mage.Sets/src/mage/cards/a/AirServant.java b/Mage.Sets/src/mage/cards/a/AirServant.java index 59d071fe21f..da105691266 100644 --- a/Mage.Sets/src/mage/cards/a/AirServant.java +++ b/Mage.Sets/src/mage/cards/a/AirServant.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class AirServant extends CardImpl { this.toughness = new MageInt(3); this.addAbility(FlyingAbility.getInstance()); Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{2}{U}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AjaniFellsTheGodsire.java b/Mage.Sets/src/mage/cards/a/AjaniFellsTheGodsire.java index 96391abd3e0..aaa321844a5 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniFellsTheGodsire.java +++ b/Mage.Sets/src/mage/cards/a/AjaniFellsTheGodsire.java @@ -23,6 +23,8 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.constants.SagaChapter.CHAPTER_I; + /** * @author Susucr */ @@ -45,8 +47,8 @@ public final class AjaniFellsTheGodsire extends CardImpl { // I -- Exile target creature an opponent controls with power 3 or greater. sagaAbility.addChapterEffect( - this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_I, - new ExileTargetEffect(), new TargetCreaturePermanent(filter) + this, CHAPTER_I, CHAPTER_I, + new ExileTargetEffect(), new TargetPermanent(filter) ); // II -- Create a 2/1 white Cat Warrior creature token, then put a vigilance counter on a creature you control. @@ -104,4 +106,4 @@ class AjaniFellsTheGodsireCounterEffect extends OneShotEffect { Permanent permanent = game.getPermanent(target.getFirstTarget()); return permanent != null && permanent.addCounters(CounterType.VIGILANCE.createInstance(), source, game); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/a/AkroanConscriptor.java b/Mage.Sets/src/mage/cards/a/AkroanConscriptor.java index 519e4086dff..1911476f4a3 100644 --- a/Mage.Sets/src/mage/cards/a/AkroanConscriptor.java +++ b/Mage.Sets/src/mage/cards/a/AkroanConscriptor.java @@ -16,8 +16,11 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author LevelX2 @@ -40,7 +43,7 @@ public final class AkroanConscriptor extends CardImpl { effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn); effect.setText("It gains haste until end of turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/Alarum.java b/Mage.Sets/src/mage/cards/a/Alarum.java index 5c00fd4bc74..42489867e0f 100644 --- a/Mage.Sets/src/mage/cards/a/Alarum.java +++ b/Mage.Sets/src/mage/cards/a/Alarum.java @@ -12,6 +12,7 @@ import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class Alarum extends CardImpl { Effect effect = new BoostTargetEffect(1, 3, Duration.EndOfTurn); effect.setText("It gets +1/+3 until end of turn"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Alarum(final Alarum card) { diff --git a/Mage.Sets/src/mage/cards/a/AlibansTower.java b/Mage.Sets/src/mage/cards/a/AlibansTower.java index 5f05ea33259..7eb354c3f1e 100644 --- a/Mage.Sets/src/mage/cards/a/AlibansTower.java +++ b/Mage.Sets/src/mage/cards/a/AlibansTower.java @@ -8,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -21,7 +22,7 @@ public final class AlibansTower extends CardImpl { // Target blocking creature gets +3/+1 until end of turn. this.getSpellAbility().addEffect(new BoostTargetEffect(3, 1, Duration.EndOfTurn)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterBlockingCreature())); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterBlockingCreature())); } private AlibansTower(final AlibansTower card) { diff --git a/Mage.Sets/src/mage/cards/a/AlluringSiren.java b/Mage.Sets/src/mage/cards/a/AlluringSiren.java index 14dc35dbfae..389bae04d87 100644 --- a/Mage.Sets/src/mage/cards/a/AlluringSiren.java +++ b/Mage.Sets/src/mage/cards/a/AlluringSiren.java @@ -12,8 +12,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author BetaSteward_at_googlemail.com @@ -29,7 +32,7 @@ public final class AlluringSiren extends CardImpl { // {T}: Target creature an opponent controls attacks you this turn if able. Ability ability = new SimpleActivatedAbility(new AttacksIfAbleTargetEffect(Duration.EndOfTurn, TargetController.YOU), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AlphaBrawl.java b/Mage.Sets/src/mage/cards/a/AlphaBrawl.java index 096cb3bbe81..f22422b10bf 100644 --- a/Mage.Sets/src/mage/cards/a/AlphaBrawl.java +++ b/Mage.Sets/src/mage/cards/a/AlphaBrawl.java @@ -14,8 +14,11 @@ import mage.filter.predicate.permanent.PermanentIdPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author BetaSteward @@ -27,7 +30,7 @@ public final class AlphaBrawl extends CardImpl { // Target creature an opponent controls deals damage equal to its power to each other creature that player controls, then each of those creatures deals damage equal to its power to that creature. this.getSpellAbility().addEffect(new AlphaBrawlEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); } diff --git a/Mage.Sets/src/mage/cards/a/AlphaKavu.java b/Mage.Sets/src/mage/cards/a/AlphaKavu.java index 15dd7d09277..c26d92e0eea 100644 --- a/Mage.Sets/src/mage/cards/a/AlphaKavu.java +++ b/Mage.Sets/src/mage/cards/a/AlphaKavu.java @@ -14,6 +14,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class AlphaKavu extends CardImpl { // {1}{G}: Target Kavu creature gets -1/+1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(-1, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{G}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AnaBattlemage.java b/Mage.Sets/src/mage/cards/a/AnaBattlemage.java index 00ab7cc91b6..1def7d10026 100644 --- a/Mage.Sets/src/mage/cards/a/AnaBattlemage.java +++ b/Mage.Sets/src/mage/cards/a/AnaBattlemage.java @@ -19,6 +19,7 @@ import mage.filter.predicate.permanent.TappedPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; @@ -58,7 +59,7 @@ public final class AnaBattlemage extends CardImpl { // When Ana Battlemage enters the battlefield, if it was kicked with its {1}{B} kicker, tap target untapped creature and that creature deals damage equal to its power to its controller. ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect()).withInterveningIf(condition2); ability.addEffect(new AnaBattlemageEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AnabaAncestor.java b/Mage.Sets/src/mage/cards/a/AnabaAncestor.java index 3510bc6d5c9..0604bd824fb 100644 --- a/Mage.Sets/src/mage/cards/a/AnabaAncestor.java +++ b/Mage.Sets/src/mage/cards/a/AnabaAncestor.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class AnabaAncestor extends CardImpl { // {T}: Another target Minotaur creature gets +1/+1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AngelOfCondemnation.java b/Mage.Sets/src/mage/cards/a/AngelOfCondemnation.java index acfc126d0b0..91f9e12bf74 100644 --- a/Mage.Sets/src/mage/cards/a/AngelOfCondemnation.java +++ b/Mage.Sets/src/mage/cards/a/AngelOfCondemnation.java @@ -15,10 +15,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author emerald000 */ @@ -42,14 +45,14 @@ public final class AngelOfCondemnation extends CardImpl { new ExileReturnBattlefieldNextEndStepTargetEffect(), new ManaCostsImpl<>("{2}{W}") ); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); // {2}{W}, {T}, Exert Angel of Condemnation: Exile another target creature until Angel of Condemnation leaves the battlefield. ability = new SimpleActivatedAbility(new ExileUntilSourceLeavesEffect(), new ManaCostsImpl<>("{2}{W}")); ability.addCost(new TapSourceCost()); ability.addCost(new ExertSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AngelicPage.java b/Mage.Sets/src/mage/cards/a/AngelicPage.java index c7a1124a229..4fc2c89dbc9 100644 --- a/Mage.Sets/src/mage/cards/a/AngelicPage.java +++ b/Mage.Sets/src/mage/cards/a/AngelicPage.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -35,7 +36,7 @@ public final class AngelicPage extends CardImpl { //{T}: Target attacking or blocking creature gets +1/+1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AnimateWall.java b/Mage.Sets/src/mage/cards/a/AnimateWall.java index 7b852039321..a9ee511d475 100644 --- a/Mage.Sets/src/mage/cards/a/AnimateWall.java +++ b/Mage.Sets/src/mage/cards/a/AnimateWall.java @@ -34,7 +34,7 @@ public final class AnimateWall extends CardImpl { // Enchant Wall - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); Ability ability = new EnchantAbility(auraTarget); diff --git a/Mage.Sets/src/mage/cards/a/Annihilate.java b/Mage.Sets/src/mage/cards/a/Annihilate.java index 20a4d080bb5..e12a50d9ffe 100644 --- a/Mage.Sets/src/mage/cards/a/Annihilate.java +++ b/Mage.Sets/src/mage/cards/a/Annihilate.java @@ -7,8 +7,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LevelX2 @@ -20,7 +23,7 @@ public final class Annihilate extends CardImpl { // Destroy target nonblack creature. It can't be regenerated. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); } diff --git a/Mage.Sets/src/mage/cards/a/AnointedDeacon.java b/Mage.Sets/src/mage/cards/a/AnointedDeacon.java index 139850bd6ad..cc5f6f5b894 100644 --- a/Mage.Sets/src/mage/cards/a/AnointedDeacon.java +++ b/Mage.Sets/src/mage/cards/a/AnointedDeacon.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -36,7 +37,7 @@ public final class AnointedDeacon extends CardImpl { // At the beginning of combat on your turn, you may have target Vampire get +2/+0 until end of turn. Ability ability = new BeginningOfCombatTriggeredAbility( new BoostTargetEffect(2, 0, Duration.EndOfTurn), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AntlerSkulkin.java b/Mage.Sets/src/mage/cards/a/AntlerSkulkin.java index 924656efdb4..0970db0a0c5 100644 --- a/Mage.Sets/src/mage/cards/a/AntlerSkulkin.java +++ b/Mage.Sets/src/mage/cards/a/AntlerSkulkin.java @@ -17,6 +17,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class AntlerSkulkin extends CardImpl { // {2}: Target white creature gains persist until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(new PersistAbility(), Duration.EndOfTurn), new ManaCostsImpl<>("{2}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AquastrandSpider.java b/Mage.Sets/src/mage/cards/a/AquastrandSpider.java index c7baca16d32..061d37ceb52 100644 --- a/Mage.Sets/src/mage/cards/a/AquastrandSpider.java +++ b/Mage.Sets/src/mage/cards/a/AquastrandSpider.java @@ -16,8 +16,11 @@ import mage.constants.Outcome; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_P1P1; + /** * * @author JotaPeRL @@ -38,7 +41,7 @@ public final class AquastrandSpider extends CardImpl { Ability ability = new SimpleActivatedAbility( new GainAbilityTargetEffect(ReachAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{G}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_P1P1)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_P1P1)); this.addAbility(ability.addCustomOutcome(Outcome.Benefit)); } diff --git a/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java b/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java index 34f18a49990..257d810031d 100644 --- a/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java +++ b/Mage.Sets/src/mage/cards/a/ArahboRoarOfTheWorld.java @@ -20,6 +20,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -56,7 +57,7 @@ public final class ArahboRoarOfTheWorld extends CardImpl { TargetController.YOU, new BoostTargetEffect(3, 3, Duration.EndOfTurn), false).withInterveningIf( SourceOnBattlefieldOrCommandZoneCondition.instance); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.setAbilityWord(AbilityWord.EMINENCE); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/a/ArborColossus.java b/Mage.Sets/src/mage/cards/a/ArborColossus.java index 81ebd250b90..82edb9fc531 100644 --- a/Mage.Sets/src/mage/cards/a/ArborColossus.java +++ b/Mage.Sets/src/mage/cards/a/ArborColossus.java @@ -17,6 +17,7 @@ import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -44,7 +45,7 @@ public final class ArborColossus extends CardImpl { this.addAbility(new MonstrosityAbility("{3}{G}{G}{G}", 3)); // When Arbor Colossus becomes monstrous, destroy target creature with flying an opponent controls. Ability ability = new BecomesMonstrousSourceTriggeredAbility(new DestroyTargetEffect()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/ArchdruidsCharm.java b/Mage.Sets/src/mage/cards/a/ArchdruidsCharm.java index 7f9b0caa593..5dd587a2e5e 100644 --- a/Mage.Sets/src/mage/cards/a/ArchdruidsCharm.java +++ b/Mage.Sets/src/mage/cards/a/ArchdruidsCharm.java @@ -25,6 +25,8 @@ import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * * @author jimga150 @@ -50,7 +52,7 @@ public final class ArchdruidsCharm extends CardImpl { Mode mode2 = new Mode(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); mode2.addTarget(new TargetControlledCreaturePermanent()); mode2.addEffect(new DamageWithPowerFromOneToAnotherTargetEffect("it")); - mode2.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + mode2.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().addMode(mode2); // * Exile target artifact or enchantment. diff --git a/Mage.Sets/src/mage/cards/a/ArenaAthlete.java b/Mage.Sets/src/mage/cards/a/ArenaAthlete.java index 2e79284fd8b..5372fa8fddf 100644 --- a/Mage.Sets/src/mage/cards/a/ArenaAthlete.java +++ b/Mage.Sets/src/mage/cards/a/ArenaAthlete.java @@ -1,7 +1,5 @@ - package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.effects.common.combat.CantBlockTargetEffect; @@ -11,17 +9,17 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; -import mage.filter.StaticFilters; -import mage.target.common.TargetCreaturePermanent; +import mage.target.common.TargetOpponentsCreaturePermanent; + +import java.util.UUID; /** - * * @author Plopman */ public final class ArenaAthlete extends CardImpl { - + public ArenaAthlete(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); this.subtype.add(SubType.HUMAN); this.power = new MageInt(2); @@ -29,8 +27,7 @@ public final class ArenaAthlete extends CardImpl { // Heroic Whenever you cast a spell that targets Arena Athlete, target creature an opponent controls can't block this turn. Ability ability = new HeroicAbility(new CantBlockTargetEffect(Duration.EndOfTurn)); - TargetCreaturePermanent target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); - ability.addTarget(target); + ability.addTarget(new TargetOpponentsCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/ArmedProtocolDroid.java b/Mage.Sets/src/mage/cards/a/ArmedProtocolDroid.java index 861c904c6ec..45928233f06 100644 --- a/Mage.Sets/src/mage/cards/a/ArmedProtocolDroid.java +++ b/Mage.Sets/src/mage/cards/a/ArmedProtocolDroid.java @@ -14,6 +14,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class ArmedProtocolDroid extends CardImpl { // When {this} enters, target nonartifact creature gets -2/-0 until end of turn. Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(-2, 0, Duration.EndOfTurn), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Repair 3 diff --git a/Mage.Sets/src/mage/cards/a/ArmorOfThorns.java b/Mage.Sets/src/mage/cards/a/ArmorOfThorns.java index 6f2740c6efd..9017a215ad3 100644 --- a/Mage.Sets/src/mage/cards/a/ArmorOfThorns.java +++ b/Mage.Sets/src/mage/cards/a/ArmorOfThorns.java @@ -15,6 +15,8 @@ import mage.filter.StaticFilters; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LoneFox @@ -29,7 +31,7 @@ public final class ArmorOfThorns extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.ALL, new CastAsThoughItHadFlashSourceEffect(Duration.EndOfGame))); this.addAbility(new SacrificeIfCastAtInstantTimeTriggeredAbility()); // Enchant nonblack creature - TargetPermanent auraTarget = new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK); + TargetPermanent auraTarget = new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); Ability ability = new EnchantAbility(auraTarget); diff --git a/Mage.Sets/src/mage/cards/a/ArtfulTakedown.java b/Mage.Sets/src/mage/cards/a/ArtfulTakedown.java index 0cd8dd68646..e661ab5ce18 100644 --- a/Mage.Sets/src/mage/cards/a/ArtfulTakedown.java +++ b/Mage.Sets/src/mage/cards/a/ArtfulTakedown.java @@ -8,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -33,14 +34,14 @@ public final class ArtfulTakedown extends CardImpl { this.getSpellAbility().addEffect( new TapTargetEffect("tap target creature") ); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter1).withChooseHint("tap")); + this.getSpellAbility().addTarget(new TargetPermanent(filter1).withChooseHint("tap")); // • Target creature gets -2/-4 until end of turn. Mode mode = new Mode( new BoostTargetEffect(-2, -4, Duration.EndOfTurn) .setText("target creature gets -2/-4 until end of turn") ); - mode.addTarget(new TargetCreaturePermanent(filter2).withChooseHint("gets -2/-4 until end of turn")); + mode.addTarget(new TargetPermanent(filter2).withChooseHint("gets -2/-4 until end of turn")); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/a/ArtilleryBlast.java b/Mage.Sets/src/mage/cards/a/ArtilleryBlast.java index 10172041867..8688ff875fc 100644 --- a/Mage.Sets/src/mage/cards/a/ArtilleryBlast.java +++ b/Mage.Sets/src/mage/cards/a/ArtilleryBlast.java @@ -12,6 +12,7 @@ import mage.constants.AbilityWord; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class ArtilleryBlast extends CardImpl { // Domain--Artillery Blast deals X damage to target tapped creature, where X is 1 plus the number of basic land types among lands you control. this.getSpellAbility().addEffect(new DamageTargetEffect(new IntPlusDynamicValue(1, DomainValue.REGULAR)) .setText("{this} deals X damage to target tapped creature, where X is 1 plus the number of basic land types among lands you control")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); this.getSpellAbility().addHint(DomainHint.instance); } diff --git a/Mage.Sets/src/mage/cards/a/AshnodsTransmogrant.java b/Mage.Sets/src/mage/cards/a/AshnodsTransmogrant.java index d0a58762aa3..ad1872df42b 100644 --- a/Mage.Sets/src/mage/cards/a/AshnodsTransmogrant.java +++ b/Mage.Sets/src/mage/cards/a/AshnodsTransmogrant.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class AshnodsTransmogrant extends CardImpl { Effect effect = new AddCardTypeTargetEffect(Duration.WhileOnBattlefield, CardType.ARTIFACT); effect.setText("That creature becomes an artifact in addition to its other types"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/Asphyxiate.java b/Mage.Sets/src/mage/cards/a/Asphyxiate.java index adf83884a2a..794f196ea4b 100644 --- a/Mage.Sets/src/mage/cards/a/Asphyxiate.java +++ b/Mage.Sets/src/mage/cards/a/Asphyxiate.java @@ -8,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class Asphyxiate extends CardImpl { // Destroy target untapped creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Asphyxiate(final Asphyxiate card) { diff --git a/Mage.Sets/src/mage/cards/a/Assassinate.java b/Mage.Sets/src/mage/cards/a/Assassinate.java index 63c1d2eca44..8c8ae1ea963 100644 --- a/Mage.Sets/src/mage/cards/a/Assassinate.java +++ b/Mage.Sets/src/mage/cards/a/Assassinate.java @@ -9,6 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -26,7 +27,7 @@ public final class Assassinate extends CardImpl { public Assassinate(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}"); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/a/AssassinsBlade.java b/Mage.Sets/src/mage/cards/a/AssassinsBlade.java index 9db8d9510d6..501b3e06b28 100644 --- a/Mage.Sets/src/mage/cards/a/AssassinsBlade.java +++ b/Mage.Sets/src/mage/cards/a/AssassinsBlade.java @@ -16,6 +16,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.PlayerAttackedStepWatcher; @@ -45,7 +46,7 @@ public final class AssassinsBlade extends CardImpl { // Destroy target nonblack attacking creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private AssassinsBlade(final AssassinsBlade card) { diff --git a/Mage.Sets/src/mage/cards/a/AssaultFormation.java b/Mage.Sets/src/mage/cards/a/AssaultFormation.java index 5b4e7179c4c..9f546d6edd0 100644 --- a/Mage.Sets/src/mage/cards/a/AssaultFormation.java +++ b/Mage.Sets/src/mage/cards/a/AssaultFormation.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -38,7 +39,7 @@ public final class AssaultFormation extends CardImpl { // {G}: Target creature with defender can attack this turn as though it didn't have defender. Ability ability = new SimpleActivatedAbility(new CanAttackAsThoughItDidntHaveDefenderTargetEffect(Duration.EndOfTurn), new ManaCostsImpl<>("{G}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // {2}{G}: Creatures you control get +0/+1 until end of turn. diff --git a/Mage.Sets/src/mage/cards/a/AstromechDroid.java b/Mage.Sets/src/mage/cards/a/AstromechDroid.java index b856816dbb0..02ead94b018 100644 --- a/Mage.Sets/src/mage/cards/a/AstromechDroid.java +++ b/Mage.Sets/src/mage/cards/a/AstromechDroid.java @@ -16,6 +16,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -44,7 +45,7 @@ public final class AstromechDroid extends CardImpl { new TapSourceCost()); ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn) .setText("and gains vigilance until end of turn")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Repair 4 diff --git a/Mage.Sets/src/mage/cards/a/Attrition.java b/Mage.Sets/src/mage/cards/a/Attrition.java index c662c24a2ef..bda95864562 100644 --- a/Mage.Sets/src/mage/cards/a/Attrition.java +++ b/Mage.Sets/src/mage/cards/a/Attrition.java @@ -10,9 +10,12 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.ColoredManaSymbol; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author Backfir3 @@ -25,7 +28,7 @@ public final class Attrition extends CardImpl { //{B}, Sacrifice a creature: Destroy target nonblack creature. SimpleActivatedAbility ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ColoredManaCost(ColoredManaSymbol.B)); ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK).withChooseHint("to destroy")); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK).withChooseHint("to destroy")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AtzocanArcher.java b/Mage.Sets/src/mage/cards/a/AtzocanArcher.java index 4e7ca252211..dda10676363 100644 --- a/Mage.Sets/src/mage/cards/a/AtzocanArcher.java +++ b/Mage.Sets/src/mage/cards/a/AtzocanArcher.java @@ -13,8 +13,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author TheElk801 @@ -37,7 +40,7 @@ public final class AtzocanArcher extends CardImpl { effect.setText("you may have it fight another target creature. " + "(Each deals damage equal to its power to the other.)"); Ability ability = new EntersBattlefieldTriggeredAbility(effect, true); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AuriokSiegeSled.java b/Mage.Sets/src/mage/cards/a/AuriokSiegeSled.java index bb360508011..46e06b9eefb 100644 --- a/Mage.Sets/src/mage/cards/a/AuriokSiegeSled.java +++ b/Mage.Sets/src/mage/cards/a/AuriokSiegeSled.java @@ -13,8 +13,11 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE; + /** * * @author Galatolol @@ -31,7 +34,7 @@ public final class AuriokSiegeSled extends CardImpl { MustBeBlockedByTargetSourceEffect effect = new MustBeBlockedByTargetSourceEffect(Duration.EndOfTurn); effect.setText("target artifact creature blocks {this} this turn if able"); Ability ability1 = new SimpleActivatedAbility(effect, new GenericManaCost(1)); - ability1.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE)); + ability1.addTarget(new TargetPermanent(FILTER_PERMANENT_ARTIFACT_CREATURE)); this.addAbility(ability1); // {1}: Target artifact creature can't block Auriok Siege Sled this turn. @@ -39,7 +42,7 @@ public final class AuriokSiegeSled extends CardImpl { new CantBeBlockedByTargetSourceEffect(Duration.EndOfTurn), new GenericManaCost(1) ); - ability2.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE)); + ability2.addTarget(new TargetPermanent(FILTER_PERMANENT_ARTIFACT_CREATURE)); this.addAbility(ability2); } diff --git a/Mage.Sets/src/mage/cards/a/AvacynGuardianAngel.java b/Mage.Sets/src/mage/cards/a/AvacynGuardianAngel.java index 9ab15663f99..f29f15689ee 100644 --- a/Mage.Sets/src/mage/cards/a/AvacynGuardianAngel.java +++ b/Mage.Sets/src/mage/cards/a/AvacynGuardianAngel.java @@ -18,11 +18,14 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetPlayerOrPlaneswalker; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author LevelX2 */ @@ -44,7 +47,7 @@ public final class AvacynGuardianAngel extends CardImpl { Ability ability = new SimpleActivatedAbility( new AvacynGuardianAngelPreventToCreatureEffect(), new ManaCostsImpl<>("{1}{W}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); // {5}{W}{W}: Prevent all damage that would be dealt to target player this turn by sources of the color of your choice. diff --git a/Mage.Sets/src/mage/cards/a/AvacynianPriest.java b/Mage.Sets/src/mage/cards/a/AvacynianPriest.java index 889728f9d37..de66425a2af 100644 --- a/Mage.Sets/src/mage/cards/a/AvacynianPriest.java +++ b/Mage.Sets/src/mage/cards/a/AvacynianPriest.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class AvacynianPriest extends CardImpl { // {1}, {T}: Tap target non-Human creature. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AvenSoulgazer.java b/Mage.Sets/src/mage/cards/a/AvenSoulgazer.java index b2838c20677..2587e2e60b5 100644 --- a/Mage.Sets/src/mage/cards/a/AvenSoulgazer.java +++ b/Mage.Sets/src/mage/cards/a/AvenSoulgazer.java @@ -19,6 +19,7 @@ import mage.filter.predicate.card.FaceDownPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -47,7 +48,7 @@ public final class AvenSoulgazer extends CardImpl { // {2}{W}: Look at target face-down creature. Ability ability = new SimpleActivatedAbility(new AvenSoulgazerLookFaceDownEffect(), new ManaCostsImpl<>("{2}{W}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AysenBureaucrats.java b/Mage.Sets/src/mage/cards/a/AysenBureaucrats.java index 4c6b5280596..f29dbe22230 100644 --- a/Mage.Sets/src/mage/cards/a/AysenBureaucrats.java +++ b/Mage.Sets/src/mage/cards/a/AysenBureaucrats.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class AysenBureaucrats extends CardImpl { // {tap}: Tap target creature with power 2 or less. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new TapSourceCost()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AzoriusArrester.java b/Mage.Sets/src/mage/cards/a/AzoriusArrester.java index 689a8c32388..92cdbdd1731 100644 --- a/Mage.Sets/src/mage/cards/a/AzoriusArrester.java +++ b/Mage.Sets/src/mage/cards/a/AzoriusArrester.java @@ -1,7 +1,5 @@ - package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -10,17 +8,17 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.StaticFilters; -import mage.target.common.TargetCreaturePermanent; +import mage.target.common.TargetOpponentsCreaturePermanent; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class AzoriusArrester extends CardImpl { - + public AzoriusArrester(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.SOLDIER); @@ -29,8 +27,7 @@ public final class AzoriusArrester extends CardImpl { // When Azorius Arrester enters the battlefield, detain target creature an opponent controls. Ability ability = new EntersBattlefieldTriggeredAbility(new DetainTargetEffect(), false); - TargetCreaturePermanent target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); - ability.addTarget(target); + ability.addTarget(new TargetOpponentsCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AzoriusPloy.java b/Mage.Sets/src/mage/cards/a/AzoriusPloy.java index b2b1517383a..cc6ce3218e1 100644 --- a/Mage.Sets/src/mage/cards/a/AzoriusPloy.java +++ b/Mage.Sets/src/mage/cards/a/AzoriusPloy.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.SecondTargetPointer; @@ -28,7 +29,7 @@ public final class AzoriusPloy extends CardImpl { Effect effect = new PreventDamageByTargetEffect( Duration.EndOfTurn, true); effect.setText("Prevent all combat damage target creature would deal this turn."); this.getSpellAbility().addEffect(effect); - Target target = new TargetCreaturePermanent(new FilterCreaturePermanent("first creature")); + Target target = new TargetPermanent(new FilterCreaturePermanent("first creature")); this.getSpellAbility().addTarget(target); // Prevent all combat damage that would be dealt to target creature this turn. @@ -36,7 +37,7 @@ public final class AzoriusPloy extends CardImpl { effect2.setText("

Prevent all combat damage that would be dealt to target creature this turn."); effect2.setTargetPointer(new SecondTargetPointer()); this.getSpellAbility().addEffect(effect2); - target = new TargetCreaturePermanent(new FilterCreaturePermanent("second creature (can be the same as the first)")); + target = new TargetPermanent(new FilterCreaturePermanent("second creature (can be the same as the first)")); this.getSpellAbility().addTarget(target); } @@ -49,4 +50,4 @@ public final class AzoriusPloy extends CardImpl { public AzoriusPloy copy() { return new AzoriusPloy(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/b/Backlash.java b/Mage.Sets/src/mage/cards/b/Backlash.java index 526ad3e8ede..194f482c527 100644 --- a/Mage.Sets/src/mage/cards/b/Backlash.java +++ b/Mage.Sets/src/mage/cards/b/Backlash.java @@ -11,6 +11,7 @@ import mage.filter.predicate.permanent.TappedPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -30,7 +31,7 @@ public final class Backlash extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}{R}"); // Tap target untapped creature. That creature deals damage equal to its power to its controller. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new BacklashEffect()); } diff --git a/Mage.Sets/src/mage/cards/b/Backslide.java b/Mage.Sets/src/mage/cards/b/Backslide.java index 55244f2a08e..ad4b9c58451 100644 --- a/Mage.Sets/src/mage/cards/b/Backslide.java +++ b/Mage.Sets/src/mage/cards/b/Backslide.java @@ -19,6 +19,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.permanent.PermanentIdPredicate; import mage.game.Game; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class Backslide extends CardImpl { // Turn target creature with a morph ability face down. this.getSpellAbility().addEffect(new BackslideEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Cycling {U} this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{U}"))); diff --git a/Mage.Sets/src/mage/cards/b/BalaGedScorpion.java b/Mage.Sets/src/mage/cards/b/BalaGedScorpion.java index 715f714f211..3f9017502b7 100644 --- a/Mage.Sets/src/mage/cards/b/BalaGedScorpion.java +++ b/Mage.Sets/src/mage/cards/b/BalaGedScorpion.java @@ -12,6 +12,7 @@ import mage.constants.ComparisonType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class BalaGedScorpion extends CardImpl { this.toughness = new MageInt(3); EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BalduvianRage.java b/Mage.Sets/src/mage/cards/b/BalduvianRage.java index 8adf853365b..bca99675940 100644 --- a/Mage.Sets/src/mage/cards/b/BalduvianRage.java +++ b/Mage.Sets/src/mage/cards/b/BalduvianRage.java @@ -13,6 +13,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterAttackingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -26,7 +27,7 @@ public final class BalduvianRage extends CardImpl { // Target attacking creature gets +X/+0 until end of turn. this.getSpellAbility().addEffect(new BoostTargetEffect(GetXValue.instance, StaticValue.get(0), Duration.EndOfTurn)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterAttackingCreature())); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterAttackingCreature())); // Draw a card at the beginning of the next turn's upkeep. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect( diff --git a/Mage.Sets/src/mage/cards/b/BaronSengir.java b/Mage.Sets/src/mage/cards/b/BaronSengir.java index 3ee91c88308..65dab278ccc 100644 --- a/Mage.Sets/src/mage/cards/b/BaronSengir.java +++ b/Mage.Sets/src/mage/cards/b/BaronSengir.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -48,7 +49,7 @@ public final class BaronSengir extends CardImpl { // {tap}: Regenerate another target Vampire. Ability ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BeaconBehemoth.java b/Mage.Sets/src/mage/cards/b/BeaconBehemoth.java index 800b4d308b5..83fc438b83a 100644 --- a/Mage.Sets/src/mage/cards/b/BeaconBehemoth.java +++ b/Mage.Sets/src/mage/cards/b/BeaconBehemoth.java @@ -14,6 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class BeaconBehemoth extends CardImpl { this.toughness = new MageInt(3); Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{1}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BenalishMissionary.java b/Mage.Sets/src/mage/cards/b/BenalishMissionary.java index e98cd1183e2..6b86c406e3e 100644 --- a/Mage.Sets/src/mage/cards/b/BenalishMissionary.java +++ b/Mage.Sets/src/mage/cards/b/BenalishMissionary.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.BlockedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class BenalishMissionary extends CardImpl { // {1}{W}, {tap}: Prevent all combat damage that would be dealt by target blocked creature this turn. Ability ability = new SimpleActivatedAbility(new PreventDamageByTargetEffect(Duration.EndOfTurn, true), new ManaCostsImpl<>("{1}{W}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BessieTheDoctorsRoadster.java b/Mage.Sets/src/mage/cards/b/BessieTheDoctorsRoadster.java index e4d53e394d4..54742663dde 100644 --- a/Mage.Sets/src/mage/cards/b/BessieTheDoctorsRoadster.java +++ b/Mage.Sets/src/mage/cards/b/BessieTheDoctorsRoadster.java @@ -13,6 +13,7 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -42,7 +43,7 @@ public final class BessieTheDoctorsRoadster extends CardImpl { // Whenever Bessie attacks, another target legendary creature can't be blocked this turn. Ability ability = new AttacksTriggeredAbility(new CantBeBlockedTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Crew 2 diff --git a/Mage.Sets/src/mage/cards/b/Betrayal.java b/Mage.Sets/src/mage/cards/b/Betrayal.java index 7ad39a0f421..3daefdac019 100644 --- a/Mage.Sets/src/mage/cards/b/Betrayal.java +++ b/Mage.Sets/src/mage/cards/b/Betrayal.java @@ -16,6 +16,8 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author LoneFox */ @@ -26,7 +28,7 @@ public final class Betrayal extends CardImpl { this.subtype.add(SubType.AURA); // Enchant creature an opponent controls - TargetPermanent auraTarget = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); + TargetPermanent auraTarget = new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); Ability ability = new EnchantAbility(auraTarget); diff --git a/Mage.Sets/src/mage/cards/b/Bifurcate.java b/Mage.Sets/src/mage/cards/b/Bifurcate.java index da513140c6e..51c2b09685b 100644 --- a/Mage.Sets/src/mage/cards/b/Bifurcate.java +++ b/Mage.Sets/src/mage/cards/b/Bifurcate.java @@ -15,6 +15,7 @@ import mage.filter.predicate.mageobject.NamePredicate; import mage.filter.predicate.permanent.TokenPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCreaturePermanent; @@ -35,7 +36,7 @@ public final class Bifurcate extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}"); // Search your library for a permanent card with the same name as target nontoken creature and put that card onto the battlefield. Then shuffle your library. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new BifurcateEffect()); } diff --git a/Mage.Sets/src/mage/cards/b/BigGameHunter.java b/Mage.Sets/src/mage/cards/b/BigGameHunter.java index 8967f907e69..26544e30cc1 100644 --- a/Mage.Sets/src/mage/cards/b/BigGameHunter.java +++ b/Mage.Sets/src/mage/cards/b/BigGameHunter.java @@ -15,6 +15,7 @@ import mage.constants.ComparisonType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class BigGameHunter extends CardImpl { // When Big Game Hunter enters the battlefield, destroy target creature with power 4 or greater. It can't be regenerated. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(true)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Madness {B} this.addAbility(new MadnessAbility(new ManaCostsImpl<>("{B}"))); diff --git a/Mage.Sets/src/mage/cards/b/Bioshift.java b/Mage.Sets/src/mage/cards/b/Bioshift.java index b9946b01b63..6a0b81e28c0 100644 --- a/Mage.Sets/src/mage/cards/b/Bioshift.java +++ b/Mage.Sets/src/mage/cards/b/Bioshift.java @@ -1,7 +1,5 @@ - package mage.cards.b; -import java.util.UUID; import mage.MageItem; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; @@ -10,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.counters.CounterType; +import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.ObjectSourcePlayer; import mage.filter.predicate.ObjectSourcePlayerPredicate; @@ -18,34 +17,33 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.stack.StackObject; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class Bioshift extends CardImpl { - public Bioshift(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G/U}"); + private static final FilterPermanent filter = new FilterCreaturePermanent("another target creature with the same controller"); - // Move any number of +1/+1 counters from target creature onto another target creature with the same controller. - getSpellAbility().addEffect(new MoveCounterFromTargetToTargetEffect()); - - TargetCreaturePermanent target = new TargetCreaturePermanent( - new FilterCreaturePermanent("creature (you take counters from)")); - target.setTargetTag(1); - this.getSpellAbility().addTarget(target); - - FilterCreaturePermanent filter = new FilterCreaturePermanent( - "another target creature with the same controller (counters go to)"); + static { filter.add(new AnotherTargetPredicate(2)); filter.add(new SameControllerPredicate()); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); } - + + public Bioshift(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G/U}"); + + // Move any number of +1/+1 counters from target creature onto another target creature with the same controller. + this.getSpellAbility().addEffect(new MoveCounterFromTargetToTargetEffect()); + + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("to take counters from").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(filter).withChooseHint("to put counter on").setTargetTag(2)); + } + private Bioshift(final Bioshift card) { super(card); @@ -107,7 +105,7 @@ class SameControllerPredicate implements ObjectSourcePlayerPredicate { StackObject source = game.getStack().getStackObject(input.getSourceId()); if (source != null) { if (source.getStackAbility().getTargets().isEmpty() - || source.getStackAbility().getTargets().get(0).getTargets().isEmpty()) { + || source.getStackAbility().getTargets().get(0).getTargets().isEmpty()) { return true; } Permanent firstTarget = game.getPermanent( @@ -124,5 +122,5 @@ class SameControllerPredicate implements ObjectSourcePlayerPredicate { public String toString() { return "Target with the same controller"; } - + } diff --git a/Mage.Sets/src/mage/cards/b/BishopOfBinding.java b/Mage.Sets/src/mage/cards/b/BishopOfBinding.java index 3d7086c4845..cdfe4492213 100644 --- a/Mage.Sets/src/mage/cards/b/BishopOfBinding.java +++ b/Mage.Sets/src/mage/cards/b/BishopOfBinding.java @@ -23,9 +23,12 @@ import mage.filter.common.FilterCreaturePermanent; import mage.game.ExileZone; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -42,12 +45,12 @@ public final class BishopOfBinding extends CardImpl { // When Bishop of Binding enters the battlefield, exile target creature an opponent controls until Bishop of Binding leaves the battlefield. Ability ability = new EntersBattlefieldTriggeredAbility(new BishopOfBindingExileEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); // Whenever Bishop of Binding attacks, target Vampire gets +X/+X until end of turn, where X is the power of the exiled card. ability = new AttacksTriggeredAbility(new BoostTargetEffect(BishopOfBindingValue.instance, BishopOfBindingValue.instance, Duration.EndOfTurn)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BiteDownOnCrime.java b/Mage.Sets/src/mage/cards/b/BiteDownOnCrime.java index b705cba0318..067cabe2f2a 100644 --- a/Mage.Sets/src/mage/cards/b/BiteDownOnCrime.java +++ b/Mage.Sets/src/mage/cards/b/BiteDownOnCrime.java @@ -14,12 +14,15 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; import mage.game.Game; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * * @author notgreat @@ -40,7 +43,7 @@ public final class BiteDownOnCrime extends CardImpl { // It deals damage equal to its power to target creature you don't control. this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect("It")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private BiteDownOnCrime(final BiteDownOnCrime card) { diff --git a/Mage.Sets/src/mage/cards/b/BlacklanceParagon.java b/Mage.Sets/src/mage/cards/b/BlacklanceParagon.java index 9f488f29c39..cbf3d169236 100644 --- a/Mage.Sets/src/mage/cards/b/BlacklanceParagon.java +++ b/Mage.Sets/src/mage/cards/b/BlacklanceParagon.java @@ -16,6 +16,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -45,7 +46,7 @@ public final class BlacklanceParagon extends CardImpl { effect = new GainAbilityTargetEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn); effect.setText("and lifelink until end of turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BlazeOfGlory.java b/Mage.Sets/src/mage/cards/b/BlazeOfGlory.java index b77aee8c7f5..ea41cf87049 100644 --- a/Mage.Sets/src/mage/cards/b/BlazeOfGlory.java +++ b/Mage.Sets/src/mage/cards/b/BlazeOfGlory.java @@ -14,6 +14,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsNoSourcePredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -36,7 +37,7 @@ public final class BlazeOfGlory extends CardImpl { this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(TurnPhase.COMBAT, BeforeBlockersAreDeclaredCondition.instance)); // Target creature defending player controls can block any number of creatures this turn. It blocks each attacking creature this turn if able. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new CanBlockAdditionalCreatureTargetEffect(Duration.EndOfTurn, 0) .setText("target creature defending player controls can block any number of creatures this turn")); this.getSpellAbility().addEffect(new BlazeOfGloryRequirementEffect()); diff --git a/Mage.Sets/src/mage/cards/b/BlazingHope.java b/Mage.Sets/src/mage/cards/b/BlazingHope.java index da94b2584e6..4fc35abe721 100644 --- a/Mage.Sets/src/mage/cards/b/BlazingHope.java +++ b/Mage.Sets/src/mage/cards/b/BlazingHope.java @@ -11,7 +11,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; import java.util.UUID; @@ -38,7 +38,7 @@ public final class BlazingHope extends CardImpl { } } -class BlazingHopeTarget extends TargetCreaturePermanent { +class BlazingHopeTarget extends TargetPermanent { public BlazingHopeTarget() { super(new FilterCreaturePermanent("creature with power greater than or equal to your life total")); diff --git a/Mage.Sets/src/mage/cards/b/BlessedReincarnation.java b/Mage.Sets/src/mage/cards/b/BlessedReincarnation.java index de3561bb8c2..ae6a744003b 100644 --- a/Mage.Sets/src/mage/cards/b/BlessedReincarnation.java +++ b/Mage.Sets/src/mage/cards/b/BlessedReincarnation.java @@ -14,8 +14,11 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Library; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author fireshoes @@ -29,7 +32,7 @@ public final class BlessedReincarnation extends CardImpl { // That player reveals cards from the top of their library until a creature card is revealed. // The player puts that card onto the battlefield, then shuffles the rest into their library. this.getSpellAbility().addEffect(new BlessedReincarnationEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); // Rebound this.addAbility(new ReboundAbility()); diff --git a/Mage.Sets/src/mage/cards/b/BlindWithAnger.java b/Mage.Sets/src/mage/cards/b/BlindWithAnger.java index d9df645c333..59372af554c 100644 --- a/Mage.Sets/src/mage/cards/b/BlindWithAnger.java +++ b/Mage.Sets/src/mage/cards/b/BlindWithAnger.java @@ -14,6 +14,7 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class BlindWithAnger extends CardImpl { this.getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap target nonlegendary creature")); this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn).setText("and gain control of it until end of turn")); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("It gains haste until end of turn.")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private BlindWithAnger(final BlindWithAnger card) { diff --git a/Mage.Sets/src/mage/cards/b/BloodFeud.java b/Mage.Sets/src/mage/cards/b/BloodFeud.java index d111a6aca6e..6f22087df5b 100644 --- a/Mage.Sets/src/mage/cards/b/BloodFeud.java +++ b/Mage.Sets/src/mage/cards/b/BloodFeud.java @@ -4,11 +4,13 @@ import mage.abilities.effects.common.FightTargetsEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2; + /** * @author intimidatingant */ @@ -19,13 +21,8 @@ public final class BloodFeud extends CardImpl { // Target creature fights another target creature. this.getSpellAbility().addEffect(new FightTargetsEffect()); - TargetCreaturePermanent target = new TargetCreaturePermanent(); - target.setTargetTag(1); - this.getSpellAbility().addTarget(target); - - TargetCreaturePermanent target2 = new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2)); } private BloodFeud(final BloodFeud card) { diff --git a/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java b/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java index c896e90e4b0..efa1b0069e5 100644 --- a/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java +++ b/Mage.Sets/src/mage/cards/b/BloodcrazedHoplite.java @@ -17,8 +17,11 @@ import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -37,7 +40,7 @@ public final class BloodcrazedHoplite extends CardImpl { .withRuleTextReplacement(true)); // Whenever a +1/+1 counter is put on Bloodcrazed Hoplite, remove a +1/+1 counter from target creature an opponent controls. Ability ability = new BloodcrazedHopliteTriggeredAbility(); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BloodthornTaunter.java b/Mage.Sets/src/mage/cards/b/BloodthornTaunter.java index 72f4f37bf0f..2ca642a082d 100644 --- a/Mage.Sets/src/mage/cards/b/BloodthornTaunter.java +++ b/Mage.Sets/src/mage/cards/b/BloodthornTaunter.java @@ -12,6 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class BloodthornTaunter extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/Blustersquall.java b/Mage.Sets/src/mage/cards/b/Blustersquall.java index 36edbe06932..0bfe1d44ba7 100644 --- a/Mage.Sets/src/mage/cards/b/Blustersquall.java +++ b/Mage.Sets/src/mage/cards/b/Blustersquall.java @@ -13,10 +13,13 @@ import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -26,7 +29,7 @@ public final class Blustersquall extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}"); // Tap target creature you don't control. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().addEffect(new TapTargetEffect()); // Overload {3}{U} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") diff --git a/Mage.Sets/src/mage/cards/b/BoneShredder.java b/Mage.Sets/src/mage/cards/b/BoneShredder.java index ddd06ccdaaa..e752b07ffa0 100644 --- a/Mage.Sets/src/mage/cards/b/BoneShredder.java +++ b/Mage.Sets/src/mage/cards/b/BoneShredder.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class BoneShredder extends CardImpl { //When Bone Shredder enters the battlefield, destroy target nonartifact, nonblack creature. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(false)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BorosFuryShield.java b/Mage.Sets/src/mage/cards/b/BorosFuryShield.java index 80bc35cb960..2e90adce7d9 100644 --- a/Mage.Sets/src/mage/cards/b/BorosFuryShield.java +++ b/Mage.Sets/src/mage/cards/b/BorosFuryShield.java @@ -15,6 +15,7 @@ import mage.filter.common.FilterAttackingOrBlockingCreature; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class BorosFuryShield extends CardImpl { // Prevent all combat damage that would be dealt by target attacking or blocking creature this turn. this.getSpellAbility().addEffect(new PreventDamageByTargetEffect(Duration.EndOfTurn, true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // If {R} was spent to cast Boros Fury-Shield, it deals damage to that creature's controller equal to the creature's power. this.getSpellAbility().addEffect(new ConditionalOneShotEffect( diff --git a/Mage.Sets/src/mage/cards/b/BorrowedHostility.java b/Mage.Sets/src/mage/cards/b/BorrowedHostility.java index 780b8319a26..03cb05fcedb 100644 --- a/Mage.Sets/src/mage/cards/b/BorrowedHostility.java +++ b/Mage.Sets/src/mage/cards/b/BorrowedHostility.java @@ -12,6 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -38,13 +39,13 @@ public final class BorrowedHostility extends CardImpl { Effect effect = new BoostTargetEffect(3, 0, Duration.EndOfTurn); effect.setText("Target creature gets +3/+0 until end of turn"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterBoost).withChooseHint("gets +3/+0 until end of turn")); + this.getSpellAbility().addTarget(new TargetPermanent(filterBoost).withChooseHint("gets +3/+0 until end of turn")); // Target creature gains first strike until end of turn. effect = new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn); effect.setText("Target creature gains first strike until end of turn"); Mode mode = new Mode(effect); - mode.addTarget(new TargetCreaturePermanent(filterFirstStrike).withChooseHint("gains first strike until end of turn")); + mode.addTarget(new TargetPermanent(filterFirstStrike).withChooseHint("gains first strike until end of turn")); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/b/BorrowedMalevolence.java b/Mage.Sets/src/mage/cards/b/BorrowedMalevolence.java index f427b1c6db0..4b1d3d46e1d 100644 --- a/Mage.Sets/src/mage/cards/b/BorrowedMalevolence.java +++ b/Mage.Sets/src/mage/cards/b/BorrowedMalevolence.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -36,13 +37,13 @@ public final class BorrowedMalevolence extends CardImpl { Effect effect = new BoostTargetEffect(1, 1, Duration.EndOfTurn); effect.setText("Target creature gets +1/+1 until end of turn"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterCreaturePlus).withChooseHint("gets +1/+1 until end of turn")); + this.getSpellAbility().addTarget(new TargetPermanent(filterCreaturePlus).withChooseHint("gets +1/+1 until end of turn")); // Target creature gets -1/-1 until end of turn. effect = new BoostTargetEffect(-1, -1, Duration.EndOfTurn); effect.setText("Target creature gets -1/-1 until end of turn"); Mode mode = new Mode(effect); - mode.addTarget(new TargetCreaturePermanent(filterCreatureMinus).withChooseHint("gets -1/-1 until end of turn")); + mode.addTarget(new TargetPermanent(filterCreatureMinus).withChooseHint("gets -1/-1 until end of turn")); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/b/BountyHunter.java b/Mage.Sets/src/mage/cards/b/BountyHunter.java index 365dc646545..09d3c48adec 100644 --- a/Mage.Sets/src/mage/cards/b/BountyHunter.java +++ b/Mage.Sets/src/mage/cards/b/BountyHunter.java @@ -14,10 +14,13 @@ import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LoneFox @@ -38,11 +41,11 @@ public final class BountyHunter extends CardImpl { // {tap}: Put a bounty counter on target nonblack creature. Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.BOUNTY.createInstance()), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); // {tap}: Destroy target creature with a bounty counter on it. ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BowOfNylea.java b/Mage.Sets/src/mage/cards/b/BowOfNylea.java index 2cccbf04f28..967859d2bb2 100644 --- a/Mage.Sets/src/mage/cards/b/BowOfNylea.java +++ b/Mage.Sets/src/mage/cards/b/BowOfNylea.java @@ -20,6 +20,7 @@ import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCreaturePermanent; @@ -49,7 +50,7 @@ public final class BowOfNylea extends CardImpl { ability.addCost(new TapSourceCost()); // or Bow of Nylea deals 2 damage to target creature with flying; Mode mode = new Mode(new DamageTargetEffect(2)); - mode.addTarget(new TargetCreaturePermanent(filterFlying)); + mode.addTarget(new TargetPermanent(filterFlying)); ability.addMode(mode); // or you gain 3 life; mode = new Mode(new GainLifeEffect(3)); diff --git a/Mage.Sets/src/mage/cards/b/BraceForImpact.java b/Mage.Sets/src/mage/cards/b/BraceForImpact.java index f98d54ec04a..68e94370dd2 100644 --- a/Mage.Sets/src/mage/cards/b/BraceForImpact.java +++ b/Mage.Sets/src/mage/cards/b/BraceForImpact.java @@ -15,6 +15,7 @@ import mage.game.events.GameEvent; import mage.game.events.PreventDamageEvent; import mage.game.events.PreventedDamageEvent; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -35,7 +36,7 @@ public final class BraceForImpact extends CardImpl { // Prevent all damage that would be dealt to target multicolored creature this turn. For each 1 damage prevented this way, put a +1/+1 counter on that creature. this.getSpellAbility().addEffect(new BraceForImpactPreventDamageTargetEffect(Duration.EndOfTurn)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private BraceForImpact(final BraceForImpact card) { diff --git a/Mage.Sets/src/mage/cards/b/Brainspoil.java b/Mage.Sets/src/mage/cards/b/Brainspoil.java index b0185041d08..5d016a67639 100644 --- a/Mage.Sets/src/mage/cards/b/Brainspoil.java +++ b/Mage.Sets/src/mage/cards/b/Brainspoil.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.EnchantedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class Brainspoil extends CardImpl { // Destroy target creature that isn't enchanted. It can't be regenerated. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Transmute {1}{B}{B} this.addAbility(new TransmuteAbility("{1}{B}{B}")); diff --git a/Mage.Sets/src/mage/cards/b/BranchingBolt.java b/Mage.Sets/src/mage/cards/b/BranchingBolt.java index b5fca894864..f9da1d99e24 100644 --- a/Mage.Sets/src/mage/cards/b/BranchingBolt.java +++ b/Mage.Sets/src/mage/cards/b/BranchingBolt.java @@ -14,6 +14,7 @@ import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -39,10 +40,10 @@ public final class BranchingBolt extends CardImpl { this.getSpellAbility().getModes().setMaxModes(2); // Branching Bolt deals 3 damage to target creature with flying; this.getSpellAbility().addEffect(new DamageTargetEffect(3)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterFlying).withChooseHint("deals 3 damage, without flying")); + this.getSpellAbility().addTarget(new TargetPermanent(filterFlying).withChooseHint("deals 3 damage, without flying")); // or Branching Bolt deals 3 damage to target creature without flying. Mode mode = new Mode(new DamageTargetEffect(3)); - mode.addTarget(new TargetCreaturePermanent(filterNotFlying).withChooseHint("deals 3 damage, without flying")); + mode.addTarget(new TargetPermanent(filterNotFlying).withChooseHint("deals 3 damage, without flying")); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java index 232469aaf02..42ef018d9cf 100644 --- a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java +++ b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -44,7 +45,7 @@ public final class BrassTalonChimera extends CardImpl { Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost()); ability.addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield) .setText("It gains first strike. (This effect lasts indefinitely.)")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BreakOpen.java b/Mage.Sets/src/mage/cards/b/BreakOpen.java index ae00e8d7762..32b1d9317aa 100644 --- a/Mage.Sets/src/mage/cards/b/BreakOpen.java +++ b/Mage.Sets/src/mage/cards/b/BreakOpen.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.card.FaceDownPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class BreakOpen extends CardImpl { // Turn target face-down creature an opponent controls face up. this.getSpellAbility().addEffect(new TurnFaceUpTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private BreakOpen(final BreakOpen card) { diff --git a/Mage.Sets/src/mage/cards/b/BreakThroughTheLine.java b/Mage.Sets/src/mage/cards/b/BreakThroughTheLine.java index 197a4e6b965..a9d1dd390fa 100644 --- a/Mage.Sets/src/mage/cards/b/BreakThroughTheLine.java +++ b/Mage.Sets/src/mage/cards/b/BreakThroughTheLine.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class BreakThroughTheLine extends CardImpl { Effect effect = new CantBeBlockedTargetEffect(Duration.EndOfTurn); effect.setText("and can't be blocked this turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BringToTrial.java b/Mage.Sets/src/mage/cards/b/BringToTrial.java index c1bbac58820..a1d5b8a3d46 100644 --- a/Mage.Sets/src/mage/cards/b/BringToTrial.java +++ b/Mage.Sets/src/mage/cards/b/BringToTrial.java @@ -7,6 +7,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -28,7 +29,7 @@ public final class BringToTrial extends CardImpl { // Exile target creature with power 4 or greater. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private BringToTrial(final BringToTrial card) { diff --git a/Mage.Sets/src/mage/cards/b/BrokenVisage.java b/Mage.Sets/src/mage/cards/b/BrokenVisage.java index cee7109e816..923988b0ae5 100644 --- a/Mage.Sets/src/mage/cards/b/BrokenVisage.java +++ b/Mage.Sets/src/mage/cards/b/BrokenVisage.java @@ -18,6 +18,7 @@ import mage.filter.predicate.permanent.AttackingPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.BrokenVisageSpiritToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -38,7 +39,7 @@ public final class BrokenVisage extends CardImpl { // Destroy target nonartifact attacking creature. It can't be regenerated. Create a black Spirit creature token. Its power is equal to that creature's power and its toughness is equal to that creature's toughness. Sacrifice the token at the beginning of the next end step. this.getSpellAbility().addEffect(new BrokenVisageEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private BrokenVisage(final BrokenVisage card) { diff --git a/Mage.Sets/src/mage/cards/b/BurningPalmEfreet.java b/Mage.Sets/src/mage/cards/b/BurningPalmEfreet.java index e0e1bd4963a..99f881cc6ac 100644 --- a/Mage.Sets/src/mage/cards/b/BurningPalmEfreet.java +++ b/Mage.Sets/src/mage/cards/b/BurningPalmEfreet.java @@ -16,6 +16,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -42,7 +43,7 @@ public final class BurningPalmEfreet extends CardImpl { ability.addEffect(new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn) .setText("and that creature loses flying until end of turn") ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/ButchDeLoriaTunnelSnake.java b/Mage.Sets/src/mage/cards/b/ButchDeLoriaTunnelSnake.java index 8d6545ff0fa..9c660714aba 100644 --- a/Mage.Sets/src/mage/cards/b/ButchDeLoriaTunnelSnake.java +++ b/Mage.Sets/src/mage/cards/b/ButchDeLoriaTunnelSnake.java @@ -25,10 +25,13 @@ import mage.filter.StaticFilters; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author Susucr */ @@ -67,7 +70,7 @@ public final class ButchDeLoriaTunnelSnake extends CardImpl { new AddCountersTargetEffect(CounterType.MENACE.createInstance()), new ManaCostsImpl<>("{1}{B}") ); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); ability.addEffect(new BecomesCreatureTypeTargetEffect(Duration.EndOfGame, SubType.ROGUE, false) .setText("It becomes a Rogue in addition to its other types")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/CallToServe.java b/Mage.Sets/src/mage/cards/c/CallToServe.java index 79343503e67..686b14ec6c4 100644 --- a/Mage.Sets/src/mage/cards/c/CallToServe.java +++ b/Mage.Sets/src/mage/cards/c/CallToServe.java @@ -17,6 +17,8 @@ import mage.filter.StaticFilters; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author Loki @@ -28,7 +30,7 @@ public final class CallToServe extends CardImpl { this.subtype.add(SubType.AURA); // Enchant nonblack creature - TargetPermanent auraTarget = new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK); + TargetPermanent auraTarget = new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); Ability ability = new EnchantAbility(auraTarget); diff --git a/Mage.Sets/src/mage/cards/c/CallousOppressor.java b/Mage.Sets/src/mage/cards/c/CallousOppressor.java index 4b762b2cca9..15f3237b97c 100644 --- a/Mage.Sets/src/mage/cards/c/CallousOppressor.java +++ b/Mage.Sets/src/mage/cards/c/CallousOppressor.java @@ -21,6 +21,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetOpponent; import mage.util.CardUtil; @@ -50,7 +51,7 @@ public final class CallousOppressor extends CardImpl { SourceTappedCondition.TAPPED, "Gain control of target creature that isn't of the chosen type for as long as {this} remains tapped"); Ability ability = new SimpleActivatedAbility(effect, new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new CallousOppressorFilter())); + ability.addTarget(new TargetPermanent(new CallousOppressorFilter())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CankerousThirst.java b/Mage.Sets/src/mage/cards/c/CankerousThirst.java index dc1ecd5327c..9762cc3e68f 100644 --- a/Mage.Sets/src/mage/cards/c/CankerousThirst.java +++ b/Mage.Sets/src/mage/cards/c/CankerousThirst.java @@ -19,6 +19,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -34,8 +35,8 @@ public final class CankerousThirst extends CardImpl { // If {B} was spent to cast Cankerous Thirst, you may have target creature get -3/-3 until end of turn. If {G} was spent to cast Cankerous Thirst, you may have target creature get +3/+3 until end of turn. this.getSpellAbility().addEffect(new CankerousThirstEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature (1th effect -3/-3)"))); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature (2nd effect +3/+3)"))); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterCreaturePermanent("creature (1th effect -3/-3)"))); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterCreaturePermanent("creature (2nd effect +3/+3)"))); this.getSpellAbility().addEffect(new InfoEffect("(Do both if {B}{G} was spent.)")); } diff --git a/Mage.Sets/src/mage/cards/c/CantinaBand.java b/Mage.Sets/src/mage/cards/c/CantinaBand.java index 36d2de81d0a..71088199aa6 100644 --- a/Mage.Sets/src/mage/cards/c/CantinaBand.java +++ b/Mage.Sets/src/mage/cards/c/CantinaBand.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class CantinaBand extends CardImpl { // {T}, {1}: Tap target nonartifact creature. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CaptivatingCrew.java b/Mage.Sets/src/mage/cards/c/CaptivatingCrew.java index ec304038f23..6c4450048d7 100644 --- a/Mage.Sets/src/mage/cards/c/CaptivatingCrew.java +++ b/Mage.Sets/src/mage/cards/c/CaptivatingCrew.java @@ -18,8 +18,11 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author TheElk801 @@ -42,7 +45,7 @@ public final class CaptivatingCrew extends CardImpl { effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn); effect.setText("It gains haste until end of turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java b/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java index 7e4ed9447fe..7754c03bd08 100644 --- a/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java +++ b/Mage.Sets/src/mage/cards/c/CapturedByTheConsulate.java @@ -26,6 +26,8 @@ import mage.target.targetpointer.FixedTarget; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -36,7 +38,7 @@ public final class CapturedByTheConsulate extends CardImpl { this.subtype.add(SubType.AURA); // Enchant creature you don't control - TargetPermanent auraTarget = new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL); + TargetPermanent auraTarget = new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.UnboostCreature)); Ability ability = new EnchantAbility(auraTarget); diff --git a/Mage.Sets/src/mage/cards/c/Carom.java b/Mage.Sets/src/mage/cards/c/Carom.java index 42724fb9131..9cebd978664 100644 --- a/Mage.Sets/src/mage/cards/c/Carom.java +++ b/Mage.Sets/src/mage/cards/c/Carom.java @@ -1,7 +1,5 @@ - package mage.cards.c; -import java.util.UUID; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.effects.RedirectionEffect; @@ -10,14 +8,15 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author Skyler Sell */ public final class Carom extends CardImpl { @@ -28,16 +27,8 @@ public final class Carom extends CardImpl { // The next 1 damage that would be dealt to target creature this turn is dealt to another target creature instead. // Draw a card. this.getSpellAbility().addEffect(new CaromEffect(Duration.EndOfTurn, 1)); - - TargetCreaturePermanent target = new TargetCreaturePermanent(); - target.setTargetTag(1); - this.getSpellAbility().addTarget(target); - - FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature (damage is redirected to)"); - filter.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("to redirect from").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).withChooseHint("to redirect to").setTargetTag(2)); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); } diff --git a/Mage.Sets/src/mage/cards/c/CastDown.java b/Mage.Sets/src/mage/cards/c/CastDown.java index ce9bb242d86..a9b95cf29fd 100644 --- a/Mage.Sets/src/mage/cards/c/CastDown.java +++ b/Mage.Sets/src/mage/cards/c/CastDown.java @@ -7,6 +7,7 @@ import mage.constants.CardType; import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -23,7 +24,7 @@ public final class CastDown extends CardImpl { // Destroy target nonlegendary creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private CastDown(final CastDown card){ @@ -33,4 +34,4 @@ public final class CastDown extends CardImpl { public CastDown copy(){ return new CastDown(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/c/CatapultSquad.java b/Mage.Sets/src/mage/cards/c/CatapultSquad.java index ab28ba6efdd..b9cb309fed3 100644 --- a/Mage.Sets/src/mage/cards/c/CatapultSquad.java +++ b/Mage.Sets/src/mage/cards/c/CatapultSquad.java @@ -15,6 +15,7 @@ import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -40,7 +41,7 @@ public final class CatapultSquad extends CardImpl { // Tap two untapped Soldiers you control: Catapult Squad deals 2 damage to target attacking or blocking creature. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2), new TapTargetCost(new TargetControlledPermanent(2, 2, filter, false))); - ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CattiBrieOfMithralHall.java b/Mage.Sets/src/mage/cards/c/CattiBrieOfMithralHall.java index f0fe906e2ba..dc8c128822f 100644 --- a/Mage.Sets/src/mage/cards/c/CattiBrieOfMithralHall.java +++ b/Mage.Sets/src/mage/cards/c/CattiBrieOfMithralHall.java @@ -20,6 +20,7 @@ import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterAttackingOrBlockingCreature; import mage.game.Game; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -59,7 +60,7 @@ public final class CattiBrieOfMithralHall extends CardImpl { // {1}, Remove all +1/+1 counters from Catti-brie: It deals X damage to target attacking or blocking creature an opponent controls, where X is the number of counters removed this way. Ability damageAbility = new SimpleActivatedAbility( new DamageTargetEffect(CattiBrieRemovedCounterValue.instance).setText("it deals X damage to target attacking or blocking creature an opponent controls, where X is the number of counters removed this way"), new ManaCostsImpl<>("{1}")); - damageAbility.addTarget(new TargetCreaturePermanent(filter)); + damageAbility.addTarget(new TargetPermanent(filter)); damageAbility.addCost(new RemoveAllCountersSourceCost(CounterType.P1P1)); this.addAbility(damageAbility); diff --git a/Mage.Sets/src/mage/cards/c/CelestialRegulator.java b/Mage.Sets/src/mage/cards/c/CelestialRegulator.java index f499ded4111..305d2c93a43 100644 --- a/Mage.Sets/src/mage/cards/c/CelestialRegulator.java +++ b/Mage.Sets/src/mage/cards/c/CelestialRegulator.java @@ -17,8 +17,11 @@ import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.permanent.CounterAnyPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * * @author weirddan455 @@ -39,7 +42,7 @@ public final class CelestialRegulator extends CardImpl { // When Celestial Regulator enters the battlefield, choose target creature you don't control and tap it. // If you control a creature with a counter on it, the chosen creature doesn't untap during its controller's next untap step. Ability ability = new EntersBattlefieldTriggeredAbility(new CelestialRegulatorEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CennsTactician.java b/Mage.Sets/src/mage/cards/c/CennsTactician.java index 2bc13f43866..5b9596af83c 100644 --- a/Mage.Sets/src/mage/cards/c/CennsTactician.java +++ b/Mage.Sets/src/mage/cards/c/CennsTactician.java @@ -16,6 +16,7 @@ import mage.constants.*; import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class CennsTactician extends CardImpl { // {W}, {tap}: Put a +1/+1 counter on target Soldier creature. Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new ColoredManaCost(ColoredManaSymbol.W)); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filterSoldier)); + ability.addTarget(new TargetPermanent(filterSoldier)); this.addAbility(ability); // Each creature you control with a +1/+1 counter on it can block an additional creature each combat. diff --git a/Mage.Sets/src/mage/cards/c/CentaurArcher.java b/Mage.Sets/src/mage/cards/c/CentaurArcher.java index b848646cc85..5eda6670a21 100644 --- a/Mage.Sets/src/mage/cards/c/CentaurArcher.java +++ b/Mage.Sets/src/mage/cards/c/CentaurArcher.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class CentaurArcher extends CardImpl { // {tap}: Centaur Archer deals 1 damage to target creature with flying. Ability activatedAbility = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost()); - activatedAbility.addTarget(new TargetCreaturePermanent(filter)); + activatedAbility.addTarget(new TargetPermanent(filter)); this.addAbility(activatedAbility); } diff --git a/Mage.Sets/src/mage/cards/c/CephalidRetainer.java b/Mage.Sets/src/mage/cards/c/CephalidRetainer.java index 03935c83147..04e5316d61b 100644 --- a/Mage.Sets/src/mage/cards/c/CephalidRetainer.java +++ b/Mage.Sets/src/mage/cards/c/CephalidRetainer.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class CephalidRetainer extends CardImpl { // {U}{U}: Tap target creature without flying. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{U}{U}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/Chandler.java b/Mage.Sets/src/mage/cards/c/Chandler.java index 9a87640b874..8da8844cfe1 100644 --- a/Mage.Sets/src/mage/cards/c/Chandler.java +++ b/Mage.Sets/src/mage/cards/c/Chandler.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class Chandler extends CardImpl { // {R}{R}{R}, {tap}: Destroy target artifact creature. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{R}{R}{R}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/ChemistersTrick.java b/Mage.Sets/src/mage/cards/c/ChemistersTrick.java index 7aeeb029592..0b350b5185a 100644 --- a/Mage.Sets/src/mage/cards/c/ChemistersTrick.java +++ b/Mage.Sets/src/mage/cards/c/ChemistersTrick.java @@ -15,11 +15,14 @@ import mage.constants.Outcome; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 @@ -30,7 +33,7 @@ public final class ChemistersTrick extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{R}"); // Target creature you don't control gets -2/-0 until end of turn and attacks this turn if able. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().addEffect(new BoostTargetEffect(-2, 0, Duration.EndOfTurn)); this.getSpellAbility().addEffect(new AttacksIfAbleTargetEffect(Duration.EndOfTurn).setText("and attacks this turn if able")); diff --git a/Mage.Sets/src/mage/cards/c/CherishedHatchling.java b/Mage.Sets/src/mage/cards/c/CherishedHatchling.java index aa93168f1b2..c346568cdc8 100644 --- a/Mage.Sets/src/mage/cards/c/CherishedHatchling.java +++ b/Mage.Sets/src/mage/cards/c/CherishedHatchling.java @@ -20,11 +20,14 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.stack.Spell; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author LevelX2 */ @@ -68,7 +71,7 @@ class CherishedHatchlingTriggeredAbility extends DelayedTriggeredAbility { private static Effect getEffectToAdd() { Ability abilityToAdd = new EntersBattlefieldTriggeredAbility(new FightTargetSourceEffect().setText("you may have it fight another target creature"), true); - abilityToAdd.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + abilityToAdd.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); return new GainAbilityTargetEffect(abilityToAdd, Duration.EndOfTurn, "it gains \"When this creature enters, you may have it fight another target creature.\"", true); } diff --git a/Mage.Sets/src/mage/cards/c/ChewbaccaTheBeast.java b/Mage.Sets/src/mage/cards/c/ChewbaccaTheBeast.java index 905238824fc..2f3a8aeb15c 100644 --- a/Mage.Sets/src/mage/cards/c/ChewbaccaTheBeast.java +++ b/Mage.Sets/src/mage/cards/c/ChewbaccaTheBeast.java @@ -13,6 +13,7 @@ import mage.cards.CardSetInfo; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class ChewbaccaTheBeast extends CardImpl { // Whenever Chewbacca, the Beast attacks, another target attacking creature you control gains indestructible until end of turn. Ability ability = new AttacksTriggeredAbility(new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/ChillToTheBone.java b/Mage.Sets/src/mage/cards/c/ChillToTheBone.java index a0ee9f882e8..576d903ecb3 100644 --- a/Mage.Sets/src/mage/cards/c/ChillToTheBone.java +++ b/Mage.Sets/src/mage/cards/c/ChillToTheBone.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class ChillToTheBone extends CardImpl { // Destroy target nonsnow creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private ChillToTheBone(final ChillToTheBone card) { diff --git a/Mage.Sets/src/mage/cards/c/ChokingVines.java b/Mage.Sets/src/mage/cards/c/ChokingVines.java index d07731b13f5..adf075894df 100644 --- a/Mage.Sets/src/mage/cards/c/ChokingVines.java +++ b/Mage.Sets/src/mage/cards/c/ChokingVines.java @@ -8,11 +8,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.PhaseStep; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.XTargetsCountAdjuster; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ATTACKING_CREATURES; + /** * @author arcox */ @@ -30,7 +33,7 @@ public final class ChokingVines extends CardImpl { .setText("X target attacking creatures become blocked.")); this.getSpellAbility().addEffect(new DamageTargetEffect(1) .setText("{this} deals 1 damage to each of those creatures")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ATTACKING_CREATURES)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_ATTACKING_CREATURES)); this.getSpellAbility().setTargetAdjuster(new XTargetsCountAdjuster()); } diff --git a/Mage.Sets/src/mage/cards/c/ChromeshellCrab.java b/Mage.Sets/src/mage/cards/c/ChromeshellCrab.java index 582981243d5..48b4574519e 100644 --- a/Mage.Sets/src/mage/cards/c/ChromeshellCrab.java +++ b/Mage.Sets/src/mage/cards/c/ChromeshellCrab.java @@ -15,9 +15,12 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author fireshoes @@ -41,7 +44,7 @@ public final class ChromeshellCrab extends CardImpl { effect.setText("exchange control of target creature you control and target creature an opponent controls"); Ability ability = new TurnedFaceUpSourceTriggeredAbility(effect, false, true); ability.addTarget(new TargetControlledCreaturePermanent()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CitadelSiege.java b/Mage.Sets/src/mage/cards/c/CitadelSiege.java index edbafe2556e..4399e931bc8 100644 --- a/Mage.Sets/src/mage/cards/c/CitadelSiege.java +++ b/Mage.Sets/src/mage/cards/c/CitadelSiege.java @@ -15,6 +15,7 @@ import mage.constants.ModeChoice; import mage.constants.TargetController; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -46,7 +47,7 @@ public final class CitadelSiege extends CardImpl { ability = new BeginningOfCombatTriggeredAbility( TargetController.OPPONENT, new TapTargetEffect("tap target creature that player controls"), false ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(new SimpleStaticAbility(new GainAnchorWordAbilitySourceEffect(ability, ModeChoice.DRAGONS))); } diff --git a/Mage.Sets/src/mage/cards/c/ClanDefiance.java b/Mage.Sets/src/mage/cards/c/ClanDefiance.java index 14e388c5e43..a3d04ea8ba7 100644 --- a/Mage.Sets/src/mage/cards/c/ClanDefiance.java +++ b/Mage.Sets/src/mage/cards/c/ClanDefiance.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetPlayerOrPlaneswalker; @@ -36,10 +37,10 @@ public final class ClanDefiance extends CardImpl { this.getSpellAbility().getModes().setMaxModes(3); // Clan Defiance deals X damage to target creature with flying; this.getSpellAbility().addEffect(new DamageTargetEffect(GetXValue.instance)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterFlying).withChooseHint("deals X damage, with flying")); + this.getSpellAbility().addTarget(new TargetPermanent(filterFlying).withChooseHint("deals X damage, with flying")); // Clan Defiance deals X damage to target creature without flying; Mode mode1 = new Mode(new DamageTargetEffect(GetXValue.instance)); - mode1.addTarget(new TargetCreaturePermanent(filterWithoutFlying).withChooseHint("deals X damage, without flying")); + mode1.addTarget(new TargetPermanent(filterWithoutFlying).withChooseHint("deals X damage, without flying")); this.getSpellAbility().addMode(mode1); // and/or Clan Defiance deals X damage to target player. Mode mode2 = new Mode(new DamageTargetEffect(GetXValue.instance)); diff --git a/Mage.Sets/src/mage/cards/c/ClashOfRealities.java b/Mage.Sets/src/mage/cards/c/ClashOfRealities.java index 6d8f13d6c8e..3f732d9af3a 100644 --- a/Mage.Sets/src/mage/cards/c/ClashOfRealities.java +++ b/Mage.Sets/src/mage/cards/c/ClashOfRealities.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,12 +39,12 @@ public final class ClashOfRealities extends CardImpl { // All Spirits have "When this permanent enters the battlefield, you may have it deal 3 damage to target non-Spirit creature." Ability ability1 = new ClashOfRealitiesTriggeredAbility(new DamageTargetEffect(3), "When this permanent enters, "); - ability1.addTarget(new TargetCreaturePermanent(filterNotSpirit)); + ability1.addTarget(new TargetPermanent(filterNotSpirit)); this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(ability1, Duration.WhileOnBattlefield, filterSpirit, "All Spirits have \"When this permanent enters the battlefield, you may have it deal 3 damage to target non-Spirit creature.\""))); // Non-Spirit creatures have "When this creature enters the battlefield, you may have it deal 3 damage to target Spirit creature." Ability ability2 = new ClashOfRealitiesTriggeredAbility(new DamageTargetEffect(3), "When this creature enters, "); - ability2.addTarget(new TargetCreaturePermanent(filterSpirit)); + ability2.addTarget(new TargetPermanent(filterSpirit)); this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(ability2, Duration.WhileOnBattlefield, filterNotSpirit, "Non-Spirit creatures have \"When this creature enters the battlefield, you may have it deal 3 damage to target Spirit creature.\""))); } diff --git a/Mage.Sets/src/mage/cards/c/ClashOfTitans.java b/Mage.Sets/src/mage/cards/c/ClashOfTitans.java index c9405028f82..561f6abc70d 100644 --- a/Mage.Sets/src/mage/cards/c/ClashOfTitans.java +++ b/Mage.Sets/src/mage/cards/c/ClashOfTitans.java @@ -6,10 +6,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2; + /** * @author TheElk801 */ @@ -24,7 +27,7 @@ public final class ClashOfTitans extends CardImpl { target.setTargetTag(1); this.getSpellAbility().addTarget(target); - target = new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2); + target = new TargetPermanent(FILTER_ANOTHER_CREATURE_TARGET_2); target.setTargetTag(2); this.getSpellAbility().addTarget(target); } diff --git a/Mage.Sets/src/mage/cards/c/ClearAPath.java b/Mage.Sets/src/mage/cards/c/ClearAPath.java index db45f3a0420..fda21aea8eb 100644 --- a/Mage.Sets/src/mage/cards/c/ClearAPath.java +++ b/Mage.Sets/src/mage/cards/c/ClearAPath.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class ClearAPath extends CardImpl { // Destroy target creature with defender. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); this.getSpellAbility().addTarget(target); } diff --git a/Mage.Sets/src/mage/cards/c/ClearShot.java b/Mage.Sets/src/mage/cards/c/ClearShot.java index 3cd13c1c01a..d3ee7cadc1f 100644 --- a/Mage.Sets/src/mage/cards/c/ClearShot.java +++ b/Mage.Sets/src/mage/cards/c/ClearShot.java @@ -8,11 +8,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -28,7 +31,7 @@ public final class ClearShot extends CardImpl { // It deals damage equal to its power to target creature you don't control. this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect("It")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); // second target + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); // second target } diff --git a/Mage.Sets/src/mage/cards/c/ClockworkGnomes.java b/Mage.Sets/src/mage/cards/c/ClockworkGnomes.java index 810b2d41523..8587ac39d4d 100644 --- a/Mage.Sets/src/mage/cards/c/ClockworkGnomes.java +++ b/Mage.Sets/src/mage/cards/c/ClockworkGnomes.java @@ -14,6 +14,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class ClockworkGnomes extends CardImpl { // {3}, {tap}: Regenerate target artifact creature. Ability ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new ManaCostsImpl<>("{3}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CoastalDrake.java b/Mage.Sets/src/mage/cards/c/CoastalDrake.java index 2e37b3766fc..d679c6aa728 100644 --- a/Mage.Sets/src/mage/cards/c/CoastalDrake.java +++ b/Mage.Sets/src/mage/cards/c/CoastalDrake.java @@ -15,8 +15,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.constants.SubType.KAVU; + /** * * @author Loki @@ -35,7 +38,7 @@ public final class CoastalDrake extends CardImpl { // {1}{U}, {T} : Return target Kavu to its owner's hand. Ability ability = new SimpleActivatedAbility(new ReturnToHandTargetEffect(), new ManaCostsImpl<>("{1}{U}")); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent(SubType.KAVU, "Kavu"))); + ability.addTarget(new TargetPermanent(new FilterCreaturePermanent(KAVU, "Kavu"))); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CollarTheCulprit.java b/Mage.Sets/src/mage/cards/c/CollarTheCulprit.java index a5a1e96eea0..ca360a0db11 100644 --- a/Mage.Sets/src/mage/cards/c/CollarTheCulprit.java +++ b/Mage.Sets/src/mage/cards/c/CollarTheCulprit.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class CollarTheCulprit extends CardImpl { // Destroy target creature with toughness 4 or greater. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private CollarTheCulprit(final CollarTheCulprit card) { @@ -39,4 +40,4 @@ public final class CollarTheCulprit extends CardImpl { public CollarTheCulprit copy() { return new CollarTheCulprit(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/c/CollectiveDefiance.java b/Mage.Sets/src/mage/cards/c/CollectiveDefiance.java index b38e425645d..e9b252575d2 100644 --- a/Mage.Sets/src/mage/cards/c/CollectiveDefiance.java +++ b/Mage.Sets/src/mage/cards/c/CollectiveDefiance.java @@ -15,6 +15,7 @@ import mage.filter.FilterPlayer; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetOpponentOrPlaneswalker; @@ -47,7 +48,7 @@ public final class CollectiveDefiance extends CardImpl { Effect effect = new DamageTargetEffect(4); effect.setText("{this} deals 4 damage to target creature"); Mode mode = new Mode(effect); - mode.addTarget(new TargetCreaturePermanent(filterCreature).withChooseHint("deals 4 damage to")); + mode.addTarget(new TargetPermanent(filterCreature).withChooseHint("deals 4 damage to")); this.getSpellAbility().addMode(mode); // Collective Defiance deals 3 damage to target opponent or planeswalker. diff --git a/Mage.Sets/src/mage/cards/c/CollectiveEffort.java b/Mage.Sets/src/mage/cards/c/CollectiveEffort.java index c8fff3117b6..9ba56cd19d1 100644 --- a/Mage.Sets/src/mage/cards/c/CollectiveEffort.java +++ b/Mage.Sets/src/mage/cards/c/CollectiveEffort.java @@ -20,6 +20,7 @@ import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetEnchantmentPermanent; @@ -50,7 +51,7 @@ public final class CollectiveEffort extends CardImpl { // Destroy target creature with power 4 or greater.; this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterDestroyCreature).withChooseHint("destroy")); + this.getSpellAbility().addTarget(new TargetPermanent(filterDestroyCreature).withChooseHint("destroy")); // Destroy target enchantment.; Effect effect = new DestroyTargetEffect(); diff --git a/Mage.Sets/src/mage/cards/c/Combust.java b/Mage.Sets/src/mage/cards/c/Combust.java index b625cd51b69..7e0703f4087 100644 --- a/Mage.Sets/src/mage/cards/c/Combust.java +++ b/Mage.Sets/src/mage/cards/c/Combust.java @@ -15,6 +15,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class Combust extends CardImpl { // Combust deals 5 damage to target white or blue creature. The damage can't be prevented. this.getSpellAbility().addEffect(new DamageTargetEffect(5, false)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Combust can't be countered. Ability ability = new SimpleStaticAbility(Zone.STACK, new CantBeCounteredSourceEffect()); @@ -53,4 +54,4 @@ public final class Combust extends CardImpl { return new Combust(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/c/CompleteDisregard.java b/Mage.Sets/src/mage/cards/c/CompleteDisregard.java index f6569b7c01c..fa48129824d 100644 --- a/Mage.Sets/src/mage/cards/c/CompleteDisregard.java +++ b/Mage.Sets/src/mage/cards/c/CompleteDisregard.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class CompleteDisregard extends CardImpl { // Exile target creature with power 3 or less. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private CompleteDisregard(final CompleteDisregard card) { diff --git a/Mage.Sets/src/mage/cards/c/ConniveConcoct.java b/Mage.Sets/src/mage/cards/c/ConniveConcoct.java index c28f608578e..9e4ce30d66c 100644 --- a/Mage.Sets/src/mage/cards/c/ConniveConcoct.java +++ b/Mage.Sets/src/mage/cards/c/ConniveConcoct.java @@ -20,6 +20,7 @@ import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.Game; import mage.players.Player; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -46,7 +47,7 @@ public final class ConniveConcoct extends SplitCard { new GainControlTargetEffect(Duration.Custom) ); this.getLeftHalfCard().getSpellAbility().addTarget( - new TargetCreaturePermanent(filter) + new TargetPermanent(filter) ); // Concoct diff --git a/Mage.Sets/src/mage/cards/c/ConqueringManticore.java b/Mage.Sets/src/mage/cards/c/ConqueringManticore.java index 439e6048dcb..e1819ed50ef 100644 --- a/Mage.Sets/src/mage/cards/c/ConqueringManticore.java +++ b/Mage.Sets/src/mage/cards/c/ConqueringManticore.java @@ -16,8 +16,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author North @@ -36,7 +39,7 @@ public final class ConqueringManticore extends CardImpl { Ability ability = new EntersBattlefieldTriggeredAbility(new GainControlTargetEffect(Duration.EndOfTurn), false); ability.addEffect(new UntapTargetEffect().setText("Untap that creature")); ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("It gains haste until end of turn.")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/Conscription.java b/Mage.Sets/src/mage/cards/c/Conscription.java index a54564c5d5c..656068c2d62 100644 --- a/Mage.Sets/src/mage/cards/c/Conscription.java +++ b/Mage.Sets/src/mage/cards/c/Conscription.java @@ -12,6 +12,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class Conscription extends CardImpl { this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfGame)); this.getSpellAbility().addEffect(new BecomesCreatureTypeTargetEffect(Duration.EndOfGame, SubType.TROOPER, false) .setText("It becomes a Trooper in addition to its other types")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Conscription(final Conscription card) { diff --git a/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java b/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java index 2efb58dae72..dfbe4a9d47d 100644 --- a/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java +++ b/Mage.Sets/src/mage/cards/c/ConsulsShieldguard.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -43,7 +44,7 @@ public final class ConsulsShieldguard extends CardImpl { // Whenever Consul's Shieldguard attacks, you may pay {E}. If you do, another target attacking creature gains indestructible until end of turn. Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new PayEnergyCost(1))); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/ConsumeStrength.java b/Mage.Sets/src/mage/cards/c/ConsumeStrength.java index 4c2ad90b846..1cb173ebf76 100644 --- a/Mage.Sets/src/mage/cards/c/ConsumeStrength.java +++ b/Mage.Sets/src/mage/cards/c/ConsumeStrength.java @@ -1,23 +1,17 @@ - package mage.cards.c; -import java.util.UUID; -import mage.abilities.Ability; -import mage.abilities.effects.ContinuousEffect; -import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; -import mage.game.Game; -import mage.game.permanent.Permanent; +import mage.constants.CardType; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; -import mage.target.targetpointer.FixedTarget; +import mage.target.targetpointer.SecondTargetPointer; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class ConsumeStrength extends CardImpl { @@ -26,18 +20,11 @@ public final class ConsumeStrength extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}{G}"); // Target creature gets +2/+2 until end of turn. Another target creature gets -2/-2 until end of turn. - this.getSpellAbility().addEffect(new ConsumeStrengthEffect()); - - FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature to get +2/+2"); - TargetCreaturePermanent target1 = new TargetCreaturePermanent(filter1); - target1.setTargetTag(1); - this.getSpellAbility().addTarget(target1); - - FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another creature to get -2/-2"); - filter2.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter2); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addEffect(new BoostTargetEffect(2, 2)); + this.getSpellAbility().addEffect(new BoostTargetEffect(-2, -2) + .setText("another target creature gets -2/-2 until end of turn").setTargetPointer(new SecondTargetPointer())); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("+2/+2").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).withChooseHint("-2/-2").setTargetTag(2)); } private ConsumeStrength(final ConsumeStrength card) { @@ -49,37 +36,3 @@ public final class ConsumeStrength extends CardImpl { return new ConsumeStrength(this); } } - -class ConsumeStrengthEffect extends OneShotEffect { - - ConsumeStrengthEffect() { - super(Outcome.BoostCreature); - this.staticText = "Target creature gets +2/+2 until end of turn. Another target creature gets -2/-2 until end of turn"; - } - - private ConsumeStrengthEffect(final ConsumeStrengthEffect effect) { - super(effect); - } - - @Override - public ConsumeStrengthEffect copy() { - return new ConsumeStrengthEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(source.getFirstTarget()); - if (permanent != null) { - ContinuousEffect effect = new BoostTargetEffect(2, 2, Duration.EndOfTurn); - effect.setTargetPointer(new FixedTarget(permanent, game)); - game.addEffect(effect, source); - } - permanent = game.getPermanent(source.getTargets().get(1).getFirstTarget()); - if (permanent != null) { - ContinuousEffect effect = new BoostTargetEffect(-2, -2, Duration.EndOfTurn); - effect.setTargetPointer(new FixedTarget(permanent, game)); - game.addEffect(effect, source); - } - return true; - } -} diff --git a/Mage.Sets/src/mage/cards/c/ConsumingSinkhole.java b/Mage.Sets/src/mage/cards/c/ConsumingSinkhole.java index 5b1c94faafc..c91f9e2ebf6 100644 --- a/Mage.Sets/src/mage/cards/c/ConsumingSinkhole.java +++ b/Mage.Sets/src/mage/cards/c/ConsumingSinkhole.java @@ -11,6 +11,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetPlayerOrPlaneswalker; @@ -36,7 +37,7 @@ public final class ConsumingSinkhole extends CardImpl { Effect effect = new ExileTargetEffect(); effect.setText("Exile target land creature"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Consuming Sinkhole deals 4 damage to target player. Mode mode = new Mode(new DamageTargetEffect(4)); diff --git a/Mage.Sets/src/mage/cards/c/ContestOfClaws.java b/Mage.Sets/src/mage/cards/c/ContestOfClaws.java index 71ddea06b8c..530b4a9847e 100644 --- a/Mage.Sets/src/mage/cards/c/ContestOfClaws.java +++ b/Mage.Sets/src/mage/cards/c/ContestOfClaws.java @@ -14,9 +14,12 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2; + /** * * @author jimga150 @@ -32,7 +35,7 @@ public final class ContestOfClaws extends CardImpl { Target target = new TargetControlledCreaturePermanent().setTargetTag(1); this.getSpellAbility().addTarget(target); - Target target2 = new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2); + Target target2 = new TargetPermanent(FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2); this.getSpellAbility().addTarget(target2); } diff --git a/Mage.Sets/src/mage/cards/c/ContestedCliffs.java b/Mage.Sets/src/mage/cards/c/ContestedCliffs.java index eece6e5d555..32d59b7b26f 100644 --- a/Mage.Sets/src/mage/cards/c/ContestedCliffs.java +++ b/Mage.Sets/src/mage/cards/c/ContestedCliffs.java @@ -18,8 +18,11 @@ import mage.constants.Zone; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -42,9 +45,9 @@ public final class ContestedCliffs extends CardImpl { Effect effect = new FightTargetsEffect(); Ability ability = new SimpleActivatedAbility(effect, new ManaCostsImpl<>("{R}{G}")); ability.addCost(new TapSourceCost()); - Target target1 = new TargetCreaturePermanent(filter1); + Target target1 = new TargetPermanent(filter1); ability.addTarget(target1); - Target target2 = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); + Target target2 = new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE); ability.addTarget(target2); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/ControlledInstincts.java b/Mage.Sets/src/mage/cards/c/ControlledInstincts.java index cd8e447f483..80801916ad4 100644 --- a/Mage.Sets/src/mage/cards/c/ControlledInstincts.java +++ b/Mage.Sets/src/mage/cards/c/ControlledInstincts.java @@ -39,7 +39,7 @@ public final class ControlledInstincts extends CardImpl { // Enchant red or green creature - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); this.addAbility(new EnchantAbility(auraTarget)); diff --git a/Mage.Sets/src/mage/cards/c/CoralNet.java b/Mage.Sets/src/mage/cards/c/CoralNet.java index 2fccfb646fd..8526fadae55 100644 --- a/Mage.Sets/src/mage/cards/c/CoralNet.java +++ b/Mage.Sets/src/mage/cards/c/CoralNet.java @@ -41,7 +41,7 @@ public final class CoralNet extends CardImpl { this.subtype.add(SubType.AURA); // Enchant green or white creature - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); this.addAbility(new EnchantAbility(auraTarget)); diff --git a/Mage.Sets/src/mage/cards/c/Corpsehatch.java b/Mage.Sets/src/mage/cards/c/Corpsehatch.java index 254bb590334..2a039f0f94c 100644 --- a/Mage.Sets/src/mage/cards/c/Corpsehatch.java +++ b/Mage.Sets/src/mage/cards/c/Corpsehatch.java @@ -8,8 +8,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; import mage.game.permanent.token.EldraziSpawnToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author North @@ -19,7 +22,7 @@ public final class Corpsehatch extends CardImpl { public Corpsehatch(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}"); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new CreateTokenEffect(new EldraziSpawnToken(), 2).withTextOptions(true)); } diff --git a/Mage.Sets/src/mage/cards/c/CourtStreetDenizen.java b/Mage.Sets/src/mage/cards/c/CourtStreetDenizen.java index d2d133e22f1..14846759d64 100644 --- a/Mage.Sets/src/mage/cards/c/CourtStreetDenizen.java +++ b/Mage.Sets/src/mage/cards/c/CourtStreetDenizen.java @@ -15,8 +15,11 @@ import mage.filter.StaticFilters; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -38,7 +41,7 @@ public final class CourtStreetDenizen extends CardImpl { // Whenever another white creature you control enters, tap target creature an opponent controls. Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new TapTargetEffect(), filter, false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CrackInTime.java b/Mage.Sets/src/mage/cards/c/CrackInTime.java index 3213303b327..afe8a24b114 100644 --- a/Mage.Sets/src/mage/cards/c/CrackInTime.java +++ b/Mage.Sets/src/mage/cards/c/CrackInTime.java @@ -11,10 +11,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author Susucr */ @@ -32,7 +35,7 @@ public final class CrackInTime extends CardImpl { new EntersBattlefieldTriggeredAbility(null), new BeginningOfFirstMainTriggeredAbility(null) ); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CradleToGrave.java b/Mage.Sets/src/mage/cards/c/CradleToGrave.java index 891f2598985..54195e27d7e 100644 --- a/Mage.Sets/src/mage/cards/c/CradleToGrave.java +++ b/Mage.Sets/src/mage/cards/c/CradleToGrave.java @@ -11,6 +11,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.permanent.EnteredThisTurnPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -30,7 +31,7 @@ public final class CradleToGrave extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}"); // Destroy target nonblack creature that entered the battlefield this turn. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/c/CraftyPathmage.java b/Mage.Sets/src/mage/cards/c/CraftyPathmage.java index 0da1201b615..85a23d16eea 100644 --- a/Mage.Sets/src/mage/cards/c/CraftyPathmage.java +++ b/Mage.Sets/src/mage/cards/c/CraftyPathmage.java @@ -15,6 +15,7 @@ import mage.constants.ComparisonType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class CraftyPathmage extends CardImpl { // {tap}: Target creature with power 2 or less can't be blocked this turn. Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CrashLanding.java b/Mage.Sets/src/mage/cards/c/CrashLanding.java index bd667657fd5..c075f6df546 100644 --- a/Mage.Sets/src/mage/cards/c/CrashLanding.java +++ b/Mage.Sets/src/mage/cards/c/CrashLanding.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class CrashLanding extends CardImpl { this.getSpellAbility().addEffect(new LoseAbilityTargetEffect( FlyingAbility.getInstance(), Duration.EndOfTurn)); this.getSpellAbility().addEffect(new DamageTargetEffect(amount).setText("{this} deals damage to that creature equal to the number of Forests you control")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter2)); + this.getSpellAbility().addTarget(new TargetPermanent(filter2)); } private CrashLanding(final CrashLanding card) { diff --git a/Mage.Sets/src/mage/cards/c/CroakingCounterpart.java b/Mage.Sets/src/mage/cards/c/CroakingCounterpart.java index a7172e58211..419dc393dde 100644 --- a/Mage.Sets/src/mage/cards/c/CroakingCounterpart.java +++ b/Mage.Sets/src/mage/cards/c/CroakingCounterpart.java @@ -13,6 +13,7 @@ import mage.constants.SubType; import mage.constants.TimingRule; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class CroakingCounterpart extends CardImpl { effect.setOnlySubType(SubType.FROG); effect.setText("Create a token that's a copy of target non-Frog creature, except it's a 1/1 green Frog"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Flashback {3}{G}{U} this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{3}{G}{U}"))); diff --git a/Mage.Sets/src/mage/cards/c/CrosissCharm.java b/Mage.Sets/src/mage/cards/c/CrosissCharm.java index 6b1f220a260..96a79f17cc4 100644 --- a/Mage.Sets/src/mage/cards/c/CrosissCharm.java +++ b/Mage.Sets/src/mage/cards/c/CrosissCharm.java @@ -13,6 +13,8 @@ import mage.target.TargetPermanent; import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LevelX2 @@ -27,7 +29,7 @@ public final class CrosissCharm extends CardImpl { this.getSpellAbility().addTarget(new TargetPermanent()); // or destroy target nonblack creature, and it can't be regenerated; Mode mode = new Mode(new DestroyTargetEffect(true)); - mode.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + mode.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addMode(mode); // or destroy target artifact. mode = new Mode(new DestroyTargetEffect()); diff --git a/Mage.Sets/src/mage/cards/c/CruelCut.java b/Mage.Sets/src/mage/cards/c/CruelCut.java index 075e67261a9..e22e130756b 100644 --- a/Mage.Sets/src/mage/cards/c/CruelCut.java +++ b/Mage.Sets/src/mage/cards/c/CruelCut.java @@ -7,6 +7,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -28,7 +29,7 @@ public final class CruelCut extends CardImpl { // Destroy target creature with power 2 or less. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private CruelCut(final CruelCut card) { diff --git a/Mage.Sets/src/mage/cards/c/CrumblingAshes.java b/Mage.Sets/src/mage/cards/c/CrumblingAshes.java index eba3857a9a1..907864f6625 100644 --- a/Mage.Sets/src/mage/cards/c/CrumblingAshes.java +++ b/Mage.Sets/src/mage/cards/c/CrumblingAshes.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -31,7 +32,7 @@ public final class CrumblingAshes extends CardImpl { // At the beginning of your upkeep, destroy target creature with a -1/-1 counter on it. Ability ability = new BeginningOfUpkeepTriggeredAbility(new DestroyTargetEffect()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/CrushingCanopy.java b/Mage.Sets/src/mage/cards/c/CrushingCanopy.java index e55610d8772..7ca22a17ec1 100644 --- a/Mage.Sets/src/mage/cards/c/CrushingCanopy.java +++ b/Mage.Sets/src/mage/cards/c/CrushingCanopy.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetEnchantmentPermanent; @@ -30,7 +31,7 @@ public final class CrushingCanopy extends CardImpl { // Choose one -- // * Destroy target creature with flying. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); // * Destroy target enchantment. Mode mode = new Mode(new DestroyTargetEffect()); diff --git a/Mage.Sets/src/mage/cards/c/CrushingVines.java b/Mage.Sets/src/mage/cards/c/CrushingVines.java index 4492a1c88cb..43cc576d3d8 100644 --- a/Mage.Sets/src/mage/cards/c/CrushingVines.java +++ b/Mage.Sets/src/mage/cards/c/CrushingVines.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetCreaturePermanent; @@ -30,7 +31,7 @@ public final class CrushingVines extends CardImpl { // Choose one - Destroy target creature with flying; or destroy target artifact. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); Mode mode = new Mode(new DestroyTargetEffect()); mode.addTarget(new TargetArtifactPermanent()); diff --git a/Mage.Sets/src/mage/cards/c/Cryptoplasm.java b/Mage.Sets/src/mage/cards/c/Cryptoplasm.java index cf026f39adf..992c3065349 100644 --- a/Mage.Sets/src/mage/cards/c/Cryptoplasm.java +++ b/Mage.Sets/src/mage/cards/c/Cryptoplasm.java @@ -15,6 +15,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.functions.CopyApplier; @@ -40,7 +41,7 @@ public final class Cryptoplasm extends CardImpl { // At the beginning of your upkeep, you may have Cryptoplasm become a copy of another target creature. If you do, Cryptoplasm gains this ability. Ability ability = new BeginningOfUpkeepTriggeredAbility(new CryptoplasmEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CurtainOfLight.java b/Mage.Sets/src/mage/cards/c/CurtainOfLight.java index 16632d142da..934755dad62 100644 --- a/Mage.Sets/src/mage/cards/c/CurtainOfLight.java +++ b/Mage.Sets/src/mage/cards/c/CurtainOfLight.java @@ -12,6 +12,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.AttackingPredicate; import mage.filter.predicate.permanent.BlockedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -39,7 +40,7 @@ public final class CurtainOfLight extends CardImpl { // Target unblocked attacking creature becomes blocked. this.getSpellAbility().addEffect(new BecomeBlockedTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/c/CurtainsCall.java b/Mage.Sets/src/mage/cards/c/CurtainsCall.java index 8b9c310c7b4..92beebc118e 100644 --- a/Mage.Sets/src/mage/cards/c/CurtainsCall.java +++ b/Mage.Sets/src/mage/cards/c/CurtainsCall.java @@ -1,7 +1,5 @@ - package mage.cards.c; -import java.util.UUID; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.UndauntedAbility; import mage.cards.CardImpl; @@ -9,8 +7,9 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class CurtainsCall extends CardImpl { @@ -20,6 +19,7 @@ public final class CurtainsCall extends CardImpl { // Undaunted this.addAbility(new UndauntedAbility()); + // Destroy two target creatures. this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addTarget(new TargetCreaturePermanent(2)); diff --git a/Mage.Sets/src/mage/cards/c/CyclopsGladiator.java b/Mage.Sets/src/mage/cards/c/CyclopsGladiator.java index d9ffd2ac569..50dc1e41a60 100644 --- a/Mage.Sets/src/mage/cards/c/CyclopsGladiator.java +++ b/Mage.Sets/src/mage/cards/c/CyclopsGladiator.java @@ -2,7 +2,6 @@ package mage.cards.c; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; @@ -10,23 +9,24 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author BetaSteward_at_googlemail.com */ public final class CyclopsGladiator extends CardImpl { public CyclopsGladiator(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}{R}"); this.subtype.add(SubType.CYCLOPS); this.subtype.add(SubType.WARRIOR); @@ -67,7 +67,7 @@ class CyclopsGladiatorEffect extends OneShotEffect { if (defenderId != null) { FilterCreaturePermanent filter = new FilterCreaturePermanent("creature defending player controls"); filter.add(new ControllerIdPredicate(defenderId)); - TargetCreaturePermanent target = new TargetCreaturePermanent(filter); + TargetPermanent target = new TargetPermanent(filter); Player player = game.getPlayer(source.getControllerId()); if (target.canChoose(source.getControllerId(), source, game)) { if (player != null && player.chooseTarget(Outcome.Detriment, target, source, game)) { diff --git a/Mage.Sets/src/mage/cards/c/CytoplastManipulator.java b/Mage.Sets/src/mage/cards/c/CytoplastManipulator.java index 2c91d858969..2a1ad209c57 100644 --- a/Mage.Sets/src/mage/cards/c/CytoplastManipulator.java +++ b/Mage.Sets/src/mage/cards/c/CytoplastManipulator.java @@ -18,8 +18,11 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_P1P1; + /** * * @author JotaPeRL @@ -44,7 +47,7 @@ public final class CytoplastManipulator extends CardImpl { "gain control of target creature with a +1/+1 counter on it for as long as {this} remains on the battlefield"); Ability ability = new SimpleActivatedAbility(effect, new ManaCostsImpl<>("{U}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_P1P1)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_P1P1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CytospawnShambler.java b/Mage.Sets/src/mage/cards/c/CytospawnShambler.java index 93a3487f1b2..7f885b399f4 100644 --- a/Mage.Sets/src/mage/cards/c/CytospawnShambler.java +++ b/Mage.Sets/src/mage/cards/c/CytospawnShambler.java @@ -16,8 +16,11 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_P1P1; + /** * * @author JotaPeRL @@ -36,7 +39,7 @@ public final class CytospawnShambler extends CardImpl { // {G}: Target creature with a +1/+1 counter on it gains trample until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{G}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_P1P1)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_P1P1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DakmorLancer.java b/Mage.Sets/src/mage/cards/d/DakmorLancer.java index 0014e1a5257..07a2c8fb163 100644 --- a/Mage.Sets/src/mage/cards/d/DakmorLancer.java +++ b/Mage.Sets/src/mage/cards/d/DakmorLancer.java @@ -10,8 +10,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LoneFox @@ -28,7 +31,7 @@ public final class DakmorLancer extends CardImpl { // When Dakmor Lancer enters the battlefield, destroy target nonblack creature. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DanceOfMany.java b/Mage.Sets/src/mage/cards/d/DanceOfMany.java index 1b266fb784e..d85eb04151c 100644 --- a/Mage.Sets/src/mage/cards/d/DanceOfMany.java +++ b/Mage.Sets/src/mage/cards/d/DanceOfMany.java @@ -23,6 +23,7 @@ import mage.filter.predicate.permanent.TokenPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -45,7 +46,7 @@ public final class DanceOfMany extends CardImpl { // When Dance of Many enters the battlefield, create a token that's a copy of target nontoken creature. Ability ability = new EntersBattlefieldTriggeredAbility(new DanceOfManyCreateTokenCopyEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // When Dance of Many leaves the battlefield, exile the token. diff --git a/Mage.Sets/src/mage/cards/d/DarajaGriffin.java b/Mage.Sets/src/mage/cards/d/DarajaGriffin.java index 06f046cd475..1448c10141c 100644 --- a/Mage.Sets/src/mage/cards/d/DarajaGriffin.java +++ b/Mage.Sets/src/mage/cards/d/DarajaGriffin.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class DarajaGriffin extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Sacrifice Daraja Griffin: Destroy target black creature. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DarkBanishing.java b/Mage.Sets/src/mage/cards/d/DarkBanishing.java index b162617a5d8..4d75ffcd23d 100644 --- a/Mage.Sets/src/mage/cards/d/DarkBanishing.java +++ b/Mage.Sets/src/mage/cards/d/DarkBanishing.java @@ -6,8 +6,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author Loki @@ -18,7 +21,7 @@ public final class DarkBanishing extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}"); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); } private DarkBanishing(final DarkBanishing card) { diff --git a/Mage.Sets/src/mage/cards/d/DarkBetrayal.java b/Mage.Sets/src/mage/cards/d/DarkBetrayal.java index 1cc12dcc10a..91ecc4dab9b 100644 --- a/Mage.Sets/src/mage/cards/d/DarkBetrayal.java +++ b/Mage.Sets/src/mage/cards/d/DarkBetrayal.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class DarkBetrayal extends CardImpl { // Destroy target black creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); this.getSpellAbility().addTarget(target); } diff --git a/Mage.Sets/src/mage/cards/d/DarkHatchling.java b/Mage.Sets/src/mage/cards/d/DarkHatchling.java index 3e7398fb753..471b262b837 100644 --- a/Mage.Sets/src/mage/cards/d/DarkHatchling.java +++ b/Mage.Sets/src/mage/cards/d/DarkHatchling.java @@ -11,8 +11,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LevelX2 @@ -31,7 +34,7 @@ public final class DarkHatchling extends CardImpl { // When Dark Hatchling enters the battlefield, destroy target nonblack creature. It can't be regenerated. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(true)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DarkOffering.java b/Mage.Sets/src/mage/cards/d/DarkOffering.java index dd094ee0d4d..a8161e9afb7 100644 --- a/Mage.Sets/src/mage/cards/d/DarkOffering.java +++ b/Mage.Sets/src/mage/cards/d/DarkOffering.java @@ -7,8 +7,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author fireshoes @@ -21,7 +24,7 @@ public final class DarkOffering extends CardImpl { // Destroy target nonblack creature. You gain 3 life. this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new GainLifeEffect(3)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); } private DarkOffering(final DarkOffering card) { diff --git a/Mage.Sets/src/mage/cards/d/DarkWithering.java b/Mage.Sets/src/mage/cards/d/DarkWithering.java index 9d2cdb6eae6..e3a6f87ff33 100644 --- a/Mage.Sets/src/mage/cards/d/DarkWithering.java +++ b/Mage.Sets/src/mage/cards/d/DarkWithering.java @@ -8,8 +8,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author magenoxx_at_gmail.com @@ -20,7 +23,7 @@ public final class DarkWithering extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}{B}"); // Destroy target nonblack creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); // Madness {B} diff --git a/Mage.Sets/src/mage/cards/d/DaruEncampment.java b/Mage.Sets/src/mage/cards/d/DaruEncampment.java index b5d8a77173c..d55e0b8801e 100644 --- a/Mage.Sets/src/mage/cards/d/DaruEncampment.java +++ b/Mage.Sets/src/mage/cards/d/DaruEncampment.java @@ -14,6 +14,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class DaruEncampment extends CardImpl { new BoostTargetEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{W}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DaughterOfAutumn.java b/Mage.Sets/src/mage/cards/d/DaughterOfAutumn.java index 732032ad82f..635fe9c3888 100644 --- a/Mage.Sets/src/mage/cards/d/DaughterOfAutumn.java +++ b/Mage.Sets/src/mage/cards/d/DaughterOfAutumn.java @@ -45,7 +45,7 @@ public final class DaughterOfAutumn extends CardImpl { // {W}: The next 1 damage that would be dealt to target white creature this turn is dealt to Daughter of Autumn instead. Ability ability = new SimpleActivatedAbility(new DaughterOfAutumnPreventDamageTargetEffect(Duration.EndOfTurn, 1), new ManaCostsImpl<>("{W}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DauthiCutthroat.java b/Mage.Sets/src/mage/cards/d/DauthiCutthroat.java index 59f10702451..3eacea98f57 100644 --- a/Mage.Sets/src/mage/cards/d/DauthiCutthroat.java +++ b/Mage.Sets/src/mage/cards/d/DauthiCutthroat.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -42,7 +43,7 @@ public final class DauthiCutthroat extends CardImpl { // {1}{B}, {tap}: Destroy target creature with shadow. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{1}{B}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DauthiJackal.java b/Mage.Sets/src/mage/cards/d/DauthiJackal.java index 34039f12d65..d1e3a29c6fe 100644 --- a/Mage.Sets/src/mage/cards/d/DauthiJackal.java +++ b/Mage.Sets/src/mage/cards/d/DauthiJackal.java @@ -15,6 +15,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class DauthiJackal extends CardImpl { // {B}{B}, Sacrifice Dauthi Jackal: Destroy target blocking creature. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{B}{B}")); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DaybreakRanger.java b/Mage.Sets/src/mage/cards/d/DaybreakRanger.java index ef18fe46a36..cc653c12f4d 100644 --- a/Mage.Sets/src/mage/cards/d/DaybreakRanger.java +++ b/Mage.Sets/src/mage/cards/d/DaybreakRanger.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -44,7 +45,7 @@ public final class DaybreakRanger extends CardImpl { // {tap}: Daybreak Ranger deals 2 damage to target creature with flying. Ability activatedAbility = new SimpleActivatedAbility(new DamageTargetEffect(2), new TapSourceCost()); - activatedAbility.addTarget(new TargetCreaturePermanent(filter)); + activatedAbility.addTarget(new TargetPermanent(filter)); this.addAbility(activatedAbility); // At the beginning of each upkeep, if no spells were cast last turn, transform Daybreak Ranger. this.addAbility(new TransformAbility()); diff --git a/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java b/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java index f039a87452f..f4308183362 100644 --- a/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java +++ b/Mage.Sets/src/mage/cards/d/DazzlingBeauty.java @@ -13,6 +13,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.AttackingPredicate; import mage.filter.predicate.permanent.BlockedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -40,7 +41,7 @@ public final class DazzlingBeauty extends CardImpl { // Target unblocked attacking creature becomes blocked. this.getSpellAbility().addEffect(new BecomeBlockedTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Draw a card at the beginning of the next turn's upkeep. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/d/DeadGone.java b/Mage.Sets/src/mage/cards/d/DeadGone.java index eb3e1c7da47..6bbf1065378 100644 --- a/Mage.Sets/src/mage/cards/d/DeadGone.java +++ b/Mage.Sets/src/mage/cards/d/DeadGone.java @@ -7,10 +7,13 @@ import mage.cards.SplitCard; import mage.constants.CardType; import mage.constants.SpellAbilityType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author dustinconrad */ @@ -27,7 +30,7 @@ public final class DeadGone extends SplitCard { // Gone // Return target creature you don't control to its owner's hand. getRightHalfCard().getSpellAbility().addEffect(new ReturnToHandTargetEffect()); - getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + getRightHalfCard().getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private DeadGone(final DeadGone card) { diff --git a/Mage.Sets/src/mage/cards/d/Deadshot.java b/Mage.Sets/src/mage/cards/d/Deadshot.java index f58e7d91df0..fa17bc469fa 100644 --- a/Mage.Sets/src/mage/cards/d/Deadshot.java +++ b/Mage.Sets/src/mage/cards/d/Deadshot.java @@ -1,42 +1,31 @@ - package mage.cards.d; -import java.util.UUID; +import mage.abilities.effects.common.DamageWithPowerFromOneToAnotherTargetEffect; import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; -import mage.abilities.effects.common.DamageWithPowerFromOneToAnotherTargetEffect; + +import java.util.UUID; /** - * * @author fireshoes, xenohedron */ public final class Deadshot extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature"); - - static { - filter.add(new AnotherTargetPredicate(2)); - } - public Deadshot(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}"); // Tap target creature. this.getSpellAbility().addEffect(new TapTargetEffect()); - TargetCreaturePermanent target = new TargetCreaturePermanent(); - target.setTargetTag(1); - this.getSpellAbility().addTarget(target); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().setTargetTag(1)); // It deals damage equal to its power to another target creature. this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect("It")); - target = new TargetCreaturePermanent(filter); - target.setTargetTag(2); - this.getSpellAbility().addTarget(target); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2)); } private Deadshot(final Deadshot card) { @@ -48,4 +37,3 @@ public final class Deadshot extends CardImpl { return new Deadshot(this); } } - diff --git a/Mage.Sets/src/mage/cards/d/DeadshotMinotaur.java b/Mage.Sets/src/mage/cards/d/DeadshotMinotaur.java index 54a594fe08f..8ebaa2c9e90 100644 --- a/Mage.Sets/src/mage/cards/d/DeadshotMinotaur.java +++ b/Mage.Sets/src/mage/cards/d/DeadshotMinotaur.java @@ -15,6 +15,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class DeadshotMinotaur extends CardImpl { // When Deadshot Minotaur enters the battlefield, it deals 3 damage to target creature with flying. Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(3, "it"), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Cycling {RG} this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{R/G}"))); diff --git a/Mage.Sets/src/mage/cards/d/DeathBomb.java b/Mage.Sets/src/mage/cards/d/DeathBomb.java index 1eb2242cc76..fa69db16a6b 100644 --- a/Mage.Sets/src/mage/cards/d/DeathBomb.java +++ b/Mage.Sets/src/mage/cards/d/DeathBomb.java @@ -8,9 +8,12 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LoneFox @@ -25,7 +28,7 @@ public final class DeathBomb extends CardImpl { // Destroy target nonblack creature. It can't be regenerated. Its controller loses 2 life. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); this.getSpellAbility().addEffect(new LoseLifeTargetControllerEffect(2)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK).withChooseHint("to destroy")); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK).withChooseHint("to destroy")); } private DeathBomb(final DeathBomb card) { diff --git a/Mage.Sets/src/mage/cards/d/DeathRattle.java b/Mage.Sets/src/mage/cards/d/DeathRattle.java index a3017aa83b8..9f91487cbae 100644 --- a/Mage.Sets/src/mage/cards/d/DeathRattle.java +++ b/Mage.Sets/src/mage/cards/d/DeathRattle.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -33,7 +34,7 @@ public final class DeathRattle extends CardImpl { // Destroy target nongreen creature. It can't be regenerated. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } diff --git a/Mage.Sets/src/mage/cards/d/DeathStroke.java b/Mage.Sets/src/mage/cards/d/DeathStroke.java index 53a57c1b803..7b1de0240e5 100644 --- a/Mage.Sets/src/mage/cards/d/DeathStroke.java +++ b/Mage.Sets/src/mage/cards/d/DeathStroke.java @@ -8,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -26,7 +27,7 @@ public final class DeathStroke extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}"); // Destroy target tapped creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/d/Deathmark.java b/Mage.Sets/src/mage/cards/d/Deathmark.java index 1423365d92a..bb046fd03ee 100644 --- a/Mage.Sets/src/mage/cards/d/Deathmark.java +++ b/Mage.Sets/src/mage/cards/d/Deathmark.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -30,7 +31,7 @@ public final class Deathmark extends CardImpl { public Deathmark(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}"); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/d/DeathmarkPrelate.java b/Mage.Sets/src/mage/cards/d/DeathmarkPrelate.java index 794f8afcd02..134aece3c74 100644 --- a/Mage.Sets/src/mage/cards/d/DeathmarkPrelate.java +++ b/Mage.Sets/src/mage/cards/d/DeathmarkPrelate.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -46,7 +47,7 @@ public final class DeathmarkPrelate extends CardImpl { Ability ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(true), new ManaCostsImpl<>("{2}{B}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeTargetCost(filter1)); - ability.addTarget(new TargetCreaturePermanent(filter2)); + ability.addTarget(new TargetPermanent(filter2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DecisiveDenial.java b/Mage.Sets/src/mage/cards/d/DecisiveDenial.java index d6957b31e90..e6a20f79eca 100644 --- a/Mage.Sets/src/mage/cards/d/DecisiveDenial.java +++ b/Mage.Sets/src/mage/cards/d/DecisiveDenial.java @@ -8,12 +8,15 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.TargetSpell; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -28,7 +31,7 @@ public final class DecisiveDenial extends CardImpl { .setText("target creature you control fights target creature you don't control. " + "(Each deals damage equal to its power to the other.)")); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); // • Counter target noncreature spell unless its controller pays {3}. Mode mode = new Mode(new CounterUnlessPaysEffect(new GenericManaCost(3))); diff --git a/Mage.Sets/src/mage/cards/d/Decomposition.java b/Mage.Sets/src/mage/cards/d/Decomposition.java index 521456ac0c8..8fbe385fa0b 100644 --- a/Mage.Sets/src/mage/cards/d/Decomposition.java +++ b/Mage.Sets/src/mage/cards/d/Decomposition.java @@ -36,7 +36,7 @@ public final class Decomposition extends CardImpl { this.subtype.add(SubType.AURA); // Enchant black creature - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); this.addAbility(new EnchantAbility(auraTarget)); diff --git a/Mage.Sets/src/mage/cards/d/DeepwaterHypnotist.java b/Mage.Sets/src/mage/cards/d/DeepwaterHypnotist.java index 35021e43a5d..28f5f23770a 100644 --- a/Mage.Sets/src/mage/cards/d/DeepwaterHypnotist.java +++ b/Mage.Sets/src/mage/cards/d/DeepwaterHypnotist.java @@ -12,8 +12,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -30,7 +33,7 @@ public final class DeepwaterHypnotist extends CardImpl { // Inspired — Whenever Deepwater Hypnotist becomes untapped, target creature an opponent controls gets -3/-0 until end of turn. Ability ability = new InspiredAbility(new BoostTargetEffect(-3,0,Duration.EndOfTurn)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/Defeat.java b/Mage.Sets/src/mage/cards/d/Defeat.java index 8c281809849..9b85431acd7 100644 --- a/Mage.Sets/src/mage/cards/d/Defeat.java +++ b/Mage.Sets/src/mage/cards/d/Defeat.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class Defeat extends CardImpl { // Destroy target creature with power 2 or less. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Defeat(final Defeat card) { diff --git a/Mage.Sets/src/mage/cards/d/DefiantGreatmaw.java b/Mage.Sets/src/mage/cards/d/DefiantGreatmaw.java index 7731c6c3471..48df4f2c41f 100644 --- a/Mage.Sets/src/mage/cards/d/DefiantGreatmaw.java +++ b/Mage.Sets/src/mage/cards/d/DefiantGreatmaw.java @@ -17,6 +17,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.game.Game; import mage.game.events.GameEvent; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -64,7 +65,7 @@ class DefiantGreatmawTriggeredAbility extends TriggeredAbilityImpl { DefiantGreatmawTriggeredAbility() { super(Zone.BATTLEFIELD, new RemoveCounterTargetEffect(CounterType.M1M1.createInstance(1)), false); - this.addTarget(new TargetCreaturePermanent(filter)); + this.addTarget(new TargetPermanent(filter)); } private DefiantGreatmawTriggeredAbility(final DefiantGreatmawTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/cards/d/Delirium.java b/Mage.Sets/src/mage/cards/d/Delirium.java index 62cc5e30fe6..7ec4f49004d 100644 --- a/Mage.Sets/src/mage/cards/d/Delirium.java +++ b/Mage.Sets/src/mage/cards/d/Delirium.java @@ -17,6 +17,7 @@ import mage.filter.predicate.permanent.ControllerIsActivePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -40,7 +41,7 @@ public final class Delirium extends CardImpl { this.addAbility(new CastOnlyIfConditionIsTrueAbility(OnOpponentsTurnCondition.instance, "Cast this spell only during an opponent's turn.")); // Tap target creature that player controls. That creature deals damage equal to its power to the player. Prevent all combat damage that would be dealt to and dealt by the creature this turn. this.getSpellAbility().addEffect(new TapTargetEffect("tap target creature that player controls")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DeliriumEffect()); this.getSpellAbility().addEffect(new PreventDamageToTargetEffect(Duration.EndOfTurn, true).setText("Prevent all combat damage that would be dealt to")); this.getSpellAbility().addEffect(new PreventDamageByTargetEffect(Duration.EndOfTurn, true).setText("and dealt by the creature this turn.")); diff --git a/Mage.Sets/src/mage/cards/d/Desert.java b/Mage.Sets/src/mage/cards/d/Desert.java index bd6825c2eed..27aee857b66 100644 --- a/Mage.Sets/src/mage/cards/d/Desert.java +++ b/Mage.Sets/src/mage/cards/d/Desert.java @@ -14,6 +14,7 @@ import mage.constants.PhaseStep; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -40,7 +41,7 @@ public final class Desert extends CardImpl { // {tap}: Desert deals 1 damage to target attacking creature. Activate this ability only during the end of combat step. Ability ability = new ActivateIfConditionActivatedAbility(new DamageTargetEffect(1), new TapSourceCost(), condition); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DestroyEvil.java b/Mage.Sets/src/mage/cards/d/DestroyEvil.java index 3c9e218e07a..6faf4381ac8 100644 --- a/Mage.Sets/src/mage/cards/d/DestroyEvil.java +++ b/Mage.Sets/src/mage/cards/d/DestroyEvil.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetEnchantmentPermanent; @@ -31,7 +32,7 @@ public final class DestroyEvil extends CardImpl { // Choose one-- // * Destroy target creature with toughness 4 or greater. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // * Destroy target enchantment. Mode mode = new Mode(new DestroyTargetEffect()); diff --git a/Mage.Sets/src/mage/cards/d/DimirCharm.java b/Mage.Sets/src/mage/cards/d/DimirCharm.java index e17f78a2a69..a102a832ab3 100644 --- a/Mage.Sets/src/mage/cards/d/DimirCharm.java +++ b/Mage.Sets/src/mage/cards/d/DimirCharm.java @@ -19,6 +19,7 @@ import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetCard; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.TargetSpell; import mage.target.common.TargetCreaturePermanent; @@ -46,7 +47,7 @@ public final class DimirCharm extends CardImpl { //or destroy target creature with power 2 or less Mode mode1 = new Mode(new DestroyTargetEffect()); - mode1.addTarget(new TargetCreaturePermanent(filterCreature)); + mode1.addTarget(new TargetPermanent(filterCreature)); this.getSpellAbility().addMode(mode1); //or look at the top three cards of target player's library, then put one back and the rest into that player's graveyard diff --git a/Mage.Sets/src/mage/cards/d/DireFleetPoisoner.java b/Mage.Sets/src/mage/cards/d/DireFleetPoisoner.java index 58df2723d95..c4f5b9a6721 100644 --- a/Mage.Sets/src/mage/cards/d/DireFleetPoisoner.java +++ b/Mage.Sets/src/mage/cards/d/DireFleetPoisoner.java @@ -17,6 +17,7 @@ import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -53,7 +54,7 @@ public final class DireFleetPoisoner extends CardImpl { effect = new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn); effect.setText("and gains deathtouch until end of turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DisruptiveStormbrood.java b/Mage.Sets/src/mage/cards/d/DisruptiveStormbrood.java index 382d66191e4..fb459b5a2b7 100644 --- a/Mage.Sets/src/mage/cards/d/DisruptiveStormbrood.java +++ b/Mage.Sets/src/mage/cards/d/DisruptiveStormbrood.java @@ -49,7 +49,7 @@ public final class DisruptiveStormbrood extends OmenCard { // Destroy target creature with power 3 or less. Effect spellEffect = new DestroyTargetEffect(); this.getSpellCard().getSpellAbility().addEffect(spellEffect); - this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(filter)); this.finalizeOmen(); } diff --git a/Mage.Sets/src/mage/cards/d/DiveBomber.java b/Mage.Sets/src/mage/cards/d/DiveBomber.java index a0e9813d5dd..b03c80744ef 100644 --- a/Mage.Sets/src/mage/cards/d/DiveBomber.java +++ b/Mage.Sets/src/mage/cards/d/DiveBomber.java @@ -15,6 +15,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -35,7 +36,7 @@ public final class DiveBomber extends CardImpl { // {tap}, Sacrifice Dive Bomber: Dive Bomber deals 2 damage to target attacking or blocking creature. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2, "it"), new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java b/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java index 843b097a2f6..f5c4909ab4f 100644 --- a/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java +++ b/Mage.Sets/src/mage/cards/d/DivebomberGriffin.java @@ -15,6 +15,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class DivebomberGriffin extends CardImpl { // {tap}, Sacrifice Divebomber Griffin: Divebomber Griffin deals 3 damage to target attacking or blocking creature. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(3, "it"), new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DivergentTransformations.java b/Mage.Sets/src/mage/cards/d/DivergentTransformations.java index 6ffb47fbddf..93adbb3d663 100644 --- a/Mage.Sets/src/mage/cards/d/DivergentTransformations.java +++ b/Mage.Sets/src/mage/cards/d/DivergentTransformations.java @@ -1,7 +1,5 @@ - package mage.cards.d; -import java.util.*; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; @@ -15,8 +13,9 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetCreaturePermanent; +import java.util.*; + /** - * * @author LevelX2 */ public final class DivergentTransformations extends CardImpl { @@ -26,6 +25,7 @@ public final class DivergentTransformations extends CardImpl { // Undaunted this.addAbility(new UndauntedAbility()); + // Exile two target creatures. For each of those creatures, its controller reveals cards from the top of their library until they reveal a creature card, puts that card onto the battlefield, then shuffles the rest into their library. this.getSpellAbility().addEffect(new DivergentTransformationsEffect()); this.getSpellAbility().addTarget(new TargetCreaturePermanent(2)); diff --git a/Mage.Sets/src/mage/cards/d/DivineVerdict.java b/Mage.Sets/src/mage/cards/d/DivineVerdict.java index 4671f1054c1..1f40296ebc4 100644 --- a/Mage.Sets/src/mage/cards/d/DivineVerdict.java +++ b/Mage.Sets/src/mage/cards/d/DivineVerdict.java @@ -7,6 +7,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -19,7 +20,7 @@ public final class DivineVerdict extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}"); // Destroy target attacking or blocking creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/d/DizzyingGaze.java b/Mage.Sets/src/mage/cards/d/DizzyingGaze.java index 104cbca60a1..6a8e61e8df0 100644 --- a/Mage.Sets/src/mage/cards/d/DizzyingGaze.java +++ b/Mage.Sets/src/mage/cards/d/DizzyingGaze.java @@ -50,7 +50,7 @@ public final class DizzyingGaze extends CardImpl { // {R}: Enchanted creature deals 1 damage to target creature with flying. Ability ability2 = new SimpleActivatedAbility(new DamageTargetEffect(1), new ManaCostsImpl<>("{R}")); - ability2.addTarget(new TargetCreaturePermanent(filter)); + ability2.addTarget(new TargetPermanent(filter)); this.addAbility(new SimpleStaticAbility( new GainAbilityAttachedEffect( ability2, diff --git a/Mage.Sets/src/mage/cards/d/DoggedHunter.java b/Mage.Sets/src/mage/cards/d/DoggedHunter.java index bed092c443d..57204e79ed1 100644 --- a/Mage.Sets/src/mage/cards/d/DoggedHunter.java +++ b/Mage.Sets/src/mage/cards/d/DoggedHunter.java @@ -14,6 +14,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TokenPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class DoggedHunter extends CardImpl { // {tap}: Destroy target creature token. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/Dominate.java b/Mage.Sets/src/mage/cards/d/Dominate.java index b8b10c2bf99..7f7559415b8 100644 --- a/Mage.Sets/src/mage/cards/d/Dominate.java +++ b/Mage.Sets/src/mage/cards/d/Dominate.java @@ -7,6 +7,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.XManaValueTargetAdjuster; @@ -22,7 +23,7 @@ public final class Dominate extends CardImpl { // Gain control of target creature with converted mana cost X or less. this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.Custom, true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature with mana value X or less"))); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterCreaturePermanent("creature with mana value X or less"))); this.getSpellAbility().setTargetAdjuster(new XManaValueTargetAdjuster(ComparisonType.OR_LESS)); } diff --git a/Mage.Sets/src/mage/cards/d/DominatingVampire.java b/Mage.Sets/src/mage/cards/d/DominatingVampire.java index 08825f5dafd..c32d45efb8d 100644 --- a/Mage.Sets/src/mage/cards/d/DominatingVampire.java +++ b/Mage.Sets/src/mage/cards/d/DominatingVampire.java @@ -19,6 +19,7 @@ import mage.filter.predicate.ObjectSourcePlayer; import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class DominatingVampire extends CardImpl { Ability ability = new EntersBattlefieldTriggeredAbility(new GainControlTargetEffect(Duration.EndOfTurn)); ability.addEffect(new UntapTargetEffect().setText("Untap that creature")); ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn, "It gains haste until end of turn")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/Domineer.java b/Mage.Sets/src/mage/cards/d/Domineer.java index e41877951dc..56343d37c6a 100644 --- a/Mage.Sets/src/mage/cards/d/Domineer.java +++ b/Mage.Sets/src/mage/cards/d/Domineer.java @@ -34,7 +34,7 @@ public final class Domineer extends CardImpl { this.subtype.add(SubType.AURA); // Enchant artifact creature - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.GainControl)); Ability ability = new EnchantAbility(auraTarget); diff --git a/Mage.Sets/src/mage/cards/d/DomriRade.java b/Mage.Sets/src/mage/cards/d/DomriRade.java index 5e1f5f38d5c..004167705ec 100644 --- a/Mage.Sets/src/mage/cards/d/DomriRade.java +++ b/Mage.Sets/src/mage/cards/d/DomriRade.java @@ -11,15 +11,16 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.CardsImpl; import mage.constants.*; -import mage.filter.StaticFilters; import mage.game.Game; import mage.game.command.emblems.DomriRadeEmblem; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; -import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2; + /** * @author LevelX2 */ @@ -36,15 +37,10 @@ public final class DomriRade extends CardImpl { this.addAbility(new LoyaltyAbility(new DomriRadeEffect1(), 1)); // -2: Target creature you control fights another target creature. - LoyaltyAbility ability2 = new LoyaltyAbility(new FightTargetsEffect(false), -2); - TargetControlledCreaturePermanent target = new TargetControlledCreaturePermanent(); - target.setTargetTag(1); - ability2.addTarget(target); - - TargetCreaturePermanent target2 = new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2); - target2.setTargetTag(2); - ability2.addTarget(target2); - this.addAbility(ability2); + LoyaltyAbility ability = new LoyaltyAbility(new FightTargetsEffect(false), -2); + ability.addTarget(new TargetControlledCreaturePermanent().setTargetTag(1)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2)); + this.addAbility(ability); // -7: You get an emblem with "Creatures you control have double strike, trample, hexproof and haste." this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new DomriRadeEmblem()), -7)); diff --git a/Mage.Sets/src/mage/cards/d/DongZhouTheTyrant.java b/Mage.Sets/src/mage/cards/d/DongZhouTheTyrant.java index c54bc1bc11f..01648c0600c 100644 --- a/Mage.Sets/src/mage/cards/d/DongZhouTheTyrant.java +++ b/Mage.Sets/src/mage/cards/d/DongZhouTheTyrant.java @@ -11,10 +11,13 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author fireshoes */ @@ -30,7 +33,7 @@ public final class DongZhouTheTyrant extends CardImpl { // When Dong Zhou, the Tyrant enters the battlefield, target creature an opponent controls deals damage equal to its power to that player. Ability ability = new EntersBattlefieldTriggeredAbility(new DongZhouTheTyrantEffect(), false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DoomBlade.java b/Mage.Sets/src/mage/cards/d/DoomBlade.java index e406967e20d..1cd2e858779 100644 --- a/Mage.Sets/src/mage/cards/d/DoomBlade.java +++ b/Mage.Sets/src/mage/cards/d/DoomBlade.java @@ -6,8 +6,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LokiX @@ -17,7 +20,7 @@ public final class DoomBlade extends CardImpl { public DoomBlade(UUID ownerId, CardSetInfo setInfo){ super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}"); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/d/Downsize.java b/Mage.Sets/src/mage/cards/d/Downsize.java index 197021b8205..96c802234f5 100644 --- a/Mage.Sets/src/mage/cards/d/Downsize.java +++ b/Mage.Sets/src/mage/cards/d/Downsize.java @@ -9,10 +9,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -22,7 +25,7 @@ public final class Downsize extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}"); // Target creature you don't control gets -4/-0 until end of turn. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().addEffect(new BoostTargetEffect(-4, 0, Duration.EndOfTurn)); // Overload {2}{U} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") diff --git a/Mage.Sets/src/mage/cards/d/DregsOfSorrow.java b/Mage.Sets/src/mage/cards/d/DregsOfSorrow.java index 55c1aeb8995..f48a9fbd379 100644 --- a/Mage.Sets/src/mage/cards/d/DregsOfSorrow.java +++ b/Mage.Sets/src/mage/cards/d/DregsOfSorrow.java @@ -7,11 +7,14 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.XTargetsCountAdjuster; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES_NON_BLACK; + /** * @author LevelX2 */ @@ -23,7 +26,7 @@ public final class DregsOfSorrow extends CardImpl { // Destroy X target nonblack creatures. Draw X cards. this.getSpellAbility().addEffect(new DestroyTargetEffect("Destroy X target nonblack creatures")); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(GetXValue.instance)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURES_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURES_NON_BLACK)); this.getSpellAbility().setTargetAdjuster(new XTargetsCountAdjuster()); } diff --git a/Mage.Sets/src/mage/cards/d/DromokaDunecaster.java b/Mage.Sets/src/mage/cards/d/DromokaDunecaster.java index 95038c35611..865042b51f0 100644 --- a/Mage.Sets/src/mage/cards/d/DromokaDunecaster.java +++ b/Mage.Sets/src/mage/cards/d/DromokaDunecaster.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class DromokaDunecaster extends CardImpl { // {1}{W}, {T}: Tap target creature without flying. SimpleActivatedAbility ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{1}{W}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DromokasCommand.java b/Mage.Sets/src/mage/cards/d/DromokasCommand.java index dc7a823495e..bae49454683 100644 --- a/Mage.Sets/src/mage/cards/d/DromokasCommand.java +++ b/Mage.Sets/src/mage/cards/d/DromokasCommand.java @@ -15,6 +15,7 @@ import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterEnchantmentPermanent; import mage.filter.common.FilterInstantOrSorcerySpell; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.TargetSpell; import mage.target.common.TargetControlledCreaturePermanent; @@ -22,6 +23,8 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author jeffwadsworth */ @@ -53,7 +56,7 @@ public final class DromokasCommand extends CardImpl { effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance()); effect.setText("Put a +1/+1 counter on target creature"); mode = new Mode(effect); - mode.addTarget(new TargetCreaturePermanent(filterCreature)); + mode.addTarget(new TargetPermanent(filterCreature)); this.getSpellAbility().getModes().addMode(mode); // or Target creature you control fights target creature you don't control. @@ -61,7 +64,7 @@ public final class DromokasCommand extends CardImpl { effect.setText("Target creature you control fights target creature you don't control"); mode = new Mode(effect); mode.addTarget(new TargetControlledCreaturePermanent()); - mode.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + mode.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().getModes().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/d/DroolingGroodion.java b/Mage.Sets/src/mage/cards/d/DroolingGroodion.java index 69eb9f6df0e..aeddf9fa34f 100644 --- a/Mage.Sets/src/mage/cards/d/DroolingGroodion.java +++ b/Mage.Sets/src/mage/cards/d/DroolingGroodion.java @@ -1,6 +1,5 @@ package mage.cards.d; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -12,12 +11,15 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; -import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.SecondTargetPointer; +import java.util.UUID; + +import static mage.filter.StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2; + /** - * * @author LevelX2 */ public final class DroolingGroodion extends CardImpl { @@ -31,19 +33,10 @@ public final class DroolingGroodion extends CardImpl { // {2}{B}{G}, Sacrifice a creature: Target creature gets +2/+2 until end of turn. Another target creature gets -2/-2 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(2, 2), new ManaCostsImpl<>("{2}{B}{G}")); - ability.addEffect(new BoostTargetEffect(-2, -2).setTargetPointer(new SecondTargetPointer())); ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE)); - - TargetCreaturePermanent target = new TargetCreaturePermanent(); - target.setTargetTag(1); - target.withChooseHint("gets +2/+2"); - ability.addTarget(target); - - target = new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2); - target.setTargetTag(2); - target.withChooseHint("gets -2/-2"); - ability.addTarget(target); - + ability.addEffect(new BoostTargetEffect(-2, -2).setTargetPointer(new SecondTargetPointer())); + ability.addTarget(new TargetCreaturePermanent().setTargetTag(1).withChooseHint("gets +2/+2")); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2).withChooseHint("gets -2/-2")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java b/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java index fa3b97a66e3..827cd6e99ae 100644 --- a/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java +++ b/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java @@ -18,8 +18,11 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.game.permanent.token.ZombieToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.constants.SubType.ZOMBIE; + /** * * @author LevelX2 @@ -37,7 +40,7 @@ public final class DrunauCorpseTrawler extends CardImpl { // {2}{B}: Target Zombie gains deathtouch until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{2}{B}")); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent(SubType.ZOMBIE, "Zombie"))); + ability.addTarget(new TargetPermanent(new FilterCreaturePermanent(ZOMBIE, "Zombie"))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DuelForDominance.java b/Mage.Sets/src/mage/cards/d/DuelForDominance.java index b7c8409769c..f72fbc629bf 100644 --- a/Mage.Sets/src/mage/cards/d/DuelForDominance.java +++ b/Mage.Sets/src/mage/cards/d/DuelForDominance.java @@ -11,11 +11,14 @@ import mage.constants.AbilityWord; import mage.constants.CardType; import mage.counters.CounterType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author xenohedron */ @@ -26,7 +29,7 @@ public final class DuelForDominance extends CardImpl { // Coven — Choose target creature you control and target creature you don't control. this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); // If you control three or more creatures with different powers, put a +1/+1 counter on the chosen creature you control. this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new AddCountersTargetEffect(CounterType.P1P1.createInstance()), diff --git a/Mage.Sets/src/mage/cards/d/DuelistsHeritage.java b/Mage.Sets/src/mage/cards/d/DuelistsHeritage.java index b8ae9f11e06..47ccd3f0f27 100644 --- a/Mage.Sets/src/mage/cards/d/DuelistsHeritage.java +++ b/Mage.Sets/src/mage/cards/d/DuelistsHeritage.java @@ -14,6 +14,7 @@ import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; import mage.game.Game; import mage.game.events.GameEvent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -33,7 +34,7 @@ public final class DuelistsHeritage extends CardImpl { effect.setOutcome(Outcome.Benefit); Ability ability = new DuelistsHeritageTriggeredAbility( Zone.BATTLEFIELD, effect); - ability.addTarget(new TargetCreaturePermanent(new FilterAttackingCreature())); + ability.addTarget(new TargetPermanent(new FilterAttackingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DugganPrivateDetective.java b/Mage.Sets/src/mage/cards/d/DugganPrivateDetective.java index f2f19b21ccf..b61a987a088 100644 --- a/Mage.Sets/src/mage/cards/d/DugganPrivateDetective.java +++ b/Mage.Sets/src/mage/cards/d/DugganPrivateDetective.java @@ -17,10 +17,13 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author Cguy7777 */ @@ -49,7 +52,7 @@ public final class DugganPrivateDetective extends CardImpl { new ManaCostsImpl<>("{1}{G}"), TimingRule.INSTANT); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); ability.withFlavorWord("The Most Important Punch in History"); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DungeonGeists.java b/Mage.Sets/src/mage/cards/d/DungeonGeists.java index f15cecd6eb5..166a2ceecfd 100644 --- a/Mage.Sets/src/mage/cards/d/DungeonGeists.java +++ b/Mage.Sets/src/mage/cards/d/DungeonGeists.java @@ -17,10 +17,13 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author BetaSteward */ @@ -38,7 +41,7 @@ public final class DungeonGeists extends CardImpl { // When Dungeon Geists enters the battlefield, tap target creature an opponent controls. That creature doesn't untap during its controller's untap step for as long as you control Dungeon Geists. Ability ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect(), false); ability.addEffect(new DontUntapInControllersUntapStepTargetEffect(Duration.WhileControlled)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/Duplicant.java b/Mage.Sets/src/mage/cards/d/Duplicant.java index 96ba6d2ea3a..560300b7464 100644 --- a/Mage.Sets/src/mage/cards/d/Duplicant.java +++ b/Mage.Sets/src/mage/cards/d/Duplicant.java @@ -16,6 +16,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TokenPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.List; @@ -41,7 +42,7 @@ public final class Duplicant extends CardImpl { // Imprint - When Duplicant enters the battlefield, you may exile target nontoken creature. Ability ability = new EntersBattlefieldTriggeredAbility(new DuplicantExileTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.setAbilityWord(AbilityWord.IMPRINT); this.addAbility(ability); // As long as the exiled card is a creature card, Duplicant has that card's power, toughness, and creature types. It's still a Shapeshifter. diff --git a/Mage.Sets/src/mage/cards/d/DuskborneSkymarcher.java b/Mage.Sets/src/mage/cards/d/DuskborneSkymarcher.java index b8a3861e1ee..64243cd4b41 100644 --- a/Mage.Sets/src/mage/cards/d/DuskborneSkymarcher.java +++ b/Mage.Sets/src/mage/cards/d/DuskborneSkymarcher.java @@ -17,6 +17,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -45,7 +46,7 @@ public final class DuskborneSkymarcher extends CardImpl { // {W}, {T}: Target attacking vampire gets +1/+1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{W}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java b/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java index 7149e308f38..dfb90ce8d07 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class DwarvenDemolitionTeam extends CardImpl { // {tap}: Destroy target Wall. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java b/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java index a4e401f1476..528f70cf541 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java @@ -14,6 +14,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class DwarvenLieutenant extends CardImpl { // {1}{R}: Target Dwarf creature gets +1/+0 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{R}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DwarvenNomad.java b/Mage.Sets/src/mage/cards/d/DwarvenNomad.java index 0a007e756b5..b6297ca12c5 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenNomad.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenNomad.java @@ -15,6 +15,7 @@ import mage.constants.ComparisonType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class DwarvenNomad extends CardImpl { // {T}: Target creature with power 2 or less can't be blocked this turn. Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DwarvenPony.java b/Mage.Sets/src/mage/cards/d/DwarvenPony.java index 0c8537dc7ae..01dd5ad79ce 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenPony.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenPony.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class DwarvenPony extends CardImpl { Ability ability = new SimpleActivatedAbility( new GainAbilityTargetEffect(new MountainwalkAbility(false), Duration.EndOfTurn), new ManaCostsImpl<>("{1}{R}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DwarvenWarriors.java b/Mage.Sets/src/mage/cards/d/DwarvenWarriors.java index 5bc2d1b8b6a..2deb081afea 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenWarriors.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenWarriors.java @@ -15,6 +15,7 @@ import mage.constants.ComparisonType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class DwarvenWarriors extends CardImpl { // {T}: Target creature with power 2 or less can't be blocked this turn. Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/Earthlore.java b/Mage.Sets/src/mage/cards/e/Earthlore.java index dcd880d495f..27167959e23 100644 --- a/Mage.Sets/src/mage/cards/e/Earthlore.java +++ b/Mage.Sets/src/mage/cards/e/Earthlore.java @@ -51,7 +51,7 @@ public final class Earthlore extends CardImpl { new BoostTargetEffect(1, 2), new TapAttachedCost().setText("Tap enchanted land"), condition ); - ability.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature("blocking creature"))); + ability.addTarget(new TargetPermanent(new FilterBlockingCreature("blocking creature"))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java b/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java index 760114463da..144dfa9100c 100644 --- a/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java +++ b/Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java @@ -19,6 +19,7 @@ import mage.filter.predicate.ObjectSourcePlayer; import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -51,7 +52,7 @@ public final class EarthshakerKhenra extends CardImpl { .setText("target creature with power less than or equal " + "to {this}'s power can't block this turn") ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Eternalize {4}{R}{R} diff --git a/Mage.Sets/src/mage/cards/e/EasternPaladin.java b/Mage.Sets/src/mage/cards/e/EasternPaladin.java index 508336db108..101aa076962 100644 --- a/Mage.Sets/src/mage/cards/e/EasternPaladin.java +++ b/Mage.Sets/src/mage/cards/e/EasternPaladin.java @@ -18,6 +18,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class EasternPaladin extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(3); Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{B}{B}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EatenBySpiders.java b/Mage.Sets/src/mage/cards/e/EatenBySpiders.java index 3c22bfbd165..7dddb3e0b6b 100644 --- a/Mage.Sets/src/mage/cards/e/EatenBySpiders.java +++ b/Mage.Sets/src/mage/cards/e/EatenBySpiders.java @@ -15,6 +15,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -35,7 +36,7 @@ public final class EatenBySpiders extends CardImpl { // Destroy target creature with flying and all Equipment attached to that creature. this.getSpellAbility().addEffect(new EatenBySpidersEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private EatenBySpiders(final EatenBySpiders card) { diff --git a/Mage.Sets/src/mage/cards/e/EbonyHorse.java b/Mage.Sets/src/mage/cards/e/EbonyHorse.java index 05bf3cea578..fbd8d8d8672 100644 --- a/Mage.Sets/src/mage/cards/e/EbonyHorse.java +++ b/Mage.Sets/src/mage/cards/e/EbonyHorse.java @@ -18,6 +18,7 @@ import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -44,7 +45,7 @@ public final class EbonyHorse extends CardImpl { effect = new PreventCombatDamageBySourceEffect(Duration.EndOfTurn); effect.setText("and dealt by that creature this turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EddytrailHawk.java b/Mage.Sets/src/mage/cards/e/EddytrailHawk.java index 2fa949d573c..30078a71682 100644 --- a/Mage.Sets/src/mage/cards/e/EddytrailHawk.java +++ b/Mage.Sets/src/mage/cards/e/EddytrailHawk.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class EddytrailHawk extends CardImpl { this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2))); // Whenever Eddytrail Hawk attacks, you may pay {E}. If you do, another target attacking creature gains flying until end of turn. Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new PayEnergyCost(1))); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java b/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java index b2399147e84..b963eff65c4 100644 --- a/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java +++ b/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java @@ -12,10 +12,13 @@ import mage.constants.CardType; import mage.constants.PutCards; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author LevelX2 */ @@ -32,7 +35,7 @@ public final class EldraziDisplacer extends CardImpl { // {2}{C}: Exile another target creature, then return it to the battlefield tapped under its owner's control. Ability ability = new SimpleActivatedAbility(new ExileThenReturnTargetEffect(false, false, PutCards.BATTLEFIELD_TAPPED), new ManaCostsImpl<>("{2}{C}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EldraziObligator.java b/Mage.Sets/src/mage/cards/e/EldraziObligator.java index 9f96a410810..88e08b5d541 100644 --- a/Mage.Sets/src/mage/cards/e/EldraziObligator.java +++ b/Mage.Sets/src/mage/cards/e/EldraziObligator.java @@ -20,6 +20,7 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -51,7 +52,7 @@ public final class EldraziObligator extends CardImpl { // When you cast Eldrazi Obligator, you may pay {1}{C}. If you do, gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. Ability ability = new CastSourceTriggeredAbility(costPaidEffect); - Target target = new TargetCreaturePermanent(new FilterCreaturePermanent()); + Target target = new TargetPermanent(new FilterCreaturePermanent()); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/Electrickery.java b/Mage.Sets/src/mage/cards/e/Electrickery.java index 06bd5c7d6a6..080f40aa755 100644 --- a/Mage.Sets/src/mage/cards/e/Electrickery.java +++ b/Mage.Sets/src/mage/cards/e/Electrickery.java @@ -8,10 +8,13 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -21,7 +24,7 @@ public final class Electrickery extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}"); // Electrickery deals 1 damage to target creature you don't control. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().addEffect(new DamageTargetEffect(1)); // Overload {1}{R} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") diff --git a/Mage.Sets/src/mage/cards/e/EliteScaleguard.java b/Mage.Sets/src/mage/cards/e/EliteScaleguard.java index 3b871ebe303..bc4e861d5ae 100644 --- a/Mage.Sets/src/mage/cards/e/EliteScaleguard.java +++ b/Mage.Sets/src/mage/cards/e/EliteScaleguard.java @@ -1,6 +1,5 @@ package mage.cards.e; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksCreatureYouControlTriggeredAbility; @@ -16,10 +15,12 @@ import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.targetadjustment.TargetAdjuster; import mage.target.targetpointer.FirstTargetPointer; +import java.util.UUID; + /** * @author emerald000 */ @@ -41,7 +42,7 @@ public final class EliteScaleguard extends CardImpl { false, StaticFilters.FILTER_CONTROLLED_CREATURE_P1P1, true); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature defending player controls"))); + ability.addTarget(new TargetPermanent(new FilterCreaturePermanent("creature defending player controls"))); ability.setTargetAdjuster(EliteScaleguardTargetAdjuster.instance); this.addAbility(ability); } @@ -70,7 +71,6 @@ enum EliteScaleguardTargetAdjuster implements TargetAdjuster { } } ability.getTargets().clear(); - TargetCreaturePermanent target = new TargetCreaturePermanent(filterDefender); - ability.addTarget(target); + ability.addTarget(new TargetPermanent(filterDefender)); } } diff --git a/Mage.Sets/src/mage/cards/e/ElvenFortress.java b/Mage.Sets/src/mage/cards/e/ElvenFortress.java index 7b6c2a404aa..58447dbe001 100644 --- a/Mage.Sets/src/mage/cards/e/ElvenFortress.java +++ b/Mage.Sets/src/mage/cards/e/ElvenFortress.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -25,7 +26,7 @@ public final class ElvenFortress extends CardImpl { // {1}{G}: Target blocking creature gets +0/+1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(0, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{G}")); - ability.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java b/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java index e44dbfb0d4f..39e1b3d7201 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java +++ b/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class ElvishPathcutter extends CardImpl { // {2}{G}: Target Elf creature gains forestwalk until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(new ForestwalkAbility(false), Duration.EndOfTurn), new ManaCostsImpl<>("{2}{G}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/ElvishSkysweeper.java b/Mage.Sets/src/mage/cards/e/ElvishSkysweeper.java index 9aff07445f5..be06a8f9757 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishSkysweeper.java +++ b/Mage.Sets/src/mage/cards/e/ElvishSkysweeper.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -43,7 +44,7 @@ public final class ElvishSkysweeper extends CardImpl { // {4}{G}, Sacrifice a creature: Destroy target creature with flying. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{4}{G}")); ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EncaseInIce.java b/Mage.Sets/src/mage/cards/e/EncaseInIce.java index 9dc67bbfc9c..200c3f5ebbc 100644 --- a/Mage.Sets/src/mage/cards/e/EncaseInIce.java +++ b/Mage.Sets/src/mage/cards/e/EncaseInIce.java @@ -44,7 +44,7 @@ public final class EncaseInIce extends CardImpl { this.addAbility(FlashAbility.getInstance()); // Enchant red or green creature - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); this.addAbility(new EnchantAbility(auraTarget)); diff --git a/Mage.Sets/src/mage/cards/e/EnduringVictory.java b/Mage.Sets/src/mage/cards/e/EnduringVictory.java index 9fb4f85bf2f..7a9b2ef1bf1 100644 --- a/Mage.Sets/src/mage/cards/e/EnduringVictory.java +++ b/Mage.Sets/src/mage/cards/e/EnduringVictory.java @@ -8,6 +8,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -20,7 +21,7 @@ public final class EnduringVictory extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{W}"); // Destroy target attacking or blocking creature. Bolster 1. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new BolsterEffect(1)); } diff --git a/Mage.Sets/src/mage/cards/e/EnslavedDwarf.java b/Mage.Sets/src/mage/cards/e/EnslavedDwarf.java index b24361a8199..8b7ac13fc2b 100644 --- a/Mage.Sets/src/mage/cards/e/EnslavedDwarf.java +++ b/Mage.Sets/src/mage/cards/e/EnslavedDwarf.java @@ -20,6 +20,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -48,7 +49,7 @@ public final class EnslavedDwarf extends CardImpl { effect = new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn); effect.setText("and gains first strike until end of turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EntanglingVines.java b/Mage.Sets/src/mage/cards/e/EntanglingVines.java index 394f004d1bc..fa8ea12f57e 100644 --- a/Mage.Sets/src/mage/cards/e/EntanglingVines.java +++ b/Mage.Sets/src/mage/cards/e/EntanglingVines.java @@ -35,7 +35,7 @@ public final class EntanglingVines extends CardImpl { // Enchant tapped creature - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); this.addAbility(new EnchantAbility(auraTarget)); diff --git a/Mage.Sets/src/mage/cards/e/EnthrallingVictor.java b/Mage.Sets/src/mage/cards/e/EnthrallingVictor.java index 8d091b1fc43..45428757d83 100644 --- a/Mage.Sets/src/mage/cards/e/EnthrallingVictor.java +++ b/Mage.Sets/src/mage/cards/e/EnthrallingVictor.java @@ -19,6 +19,7 @@ import mage.constants.Duration; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -48,7 +49,7 @@ public final class EnthrallingVictor extends CardImpl { effect.setText("untap that creature"); ability.addEffect(effect); ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn, "it gains haste until end of turn")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EntrancingMelody.java b/Mage.Sets/src/mage/cards/e/EntrancingMelody.java index ac81fb37a4e..2a71a9d366b 100644 --- a/Mage.Sets/src/mage/cards/e/EntrancingMelody.java +++ b/Mage.Sets/src/mage/cards/e/EntrancingMelody.java @@ -7,6 +7,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.XManaValueTargetAdjuster; @@ -24,7 +25,7 @@ public final class EntrancingMelody extends CardImpl { // Gain control of target creature with converted mana cost X. this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.Custom, true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().setTargetAdjuster(new XManaValueTargetAdjuster()); } diff --git a/Mage.Sets/src/mage/cards/e/EpharasWarden.java b/Mage.Sets/src/mage/cards/e/EpharasWarden.java index 8a6e7db8638..c87b71857bf 100644 --- a/Mage.Sets/src/mage/cards/e/EpharasWarden.java +++ b/Mage.Sets/src/mage/cards/e/EpharasWarden.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class EpharasWarden extends CardImpl { // {T}: Tap target creature with power 3 or less. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new TapSourceCost()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EpicConfrontation.java b/Mage.Sets/src/mage/cards/e/EpicConfrontation.java index a4588b71687..788a6f57317 100644 --- a/Mage.Sets/src/mage/cards/e/EpicConfrontation.java +++ b/Mage.Sets/src/mage/cards/e/EpicConfrontation.java @@ -9,11 +9,14 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author fireshoes */ @@ -30,7 +33,7 @@ public final class EpicConfrontation extends CardImpl { "(Each deals damage equal to its power to the other.)"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL); + Target target = new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL); this.getSpellAbility().addTarget(target); } diff --git a/Mage.Sets/src/mage/cards/e/Eradicate.java b/Mage.Sets/src/mage/cards/e/Eradicate.java index 6f28647789a..6f078df9f2c 100644 --- a/Mage.Sets/src/mage/cards/e/Eradicate.java +++ b/Mage.Sets/src/mage/cards/e/Eradicate.java @@ -6,8 +6,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LevelX2 @@ -19,7 +22,7 @@ public final class Eradicate extends CardImpl { // Exile target nonblack creature. Search its controller's graveyard, hand, and library for all cards // with the same name as that creature and exile them. Then that player shuffles their library. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new ExileTargetAndSearchGraveyardHandLibraryEffect(false, "its controller's","all cards with the same name as that creature")); } diff --git a/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java b/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java index 6ce01e21cc9..fd4e4eb02e9 100644 --- a/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java +++ b/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java @@ -11,6 +11,7 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -39,7 +40,7 @@ public final class ErhnamDjinn extends CardImpl { GainAbilityTargetEffect effect = new GainAbilityTargetEffect(new ForestwalkAbility(false), Duration.UntilYourNextUpkeepStep, "target non-Wall creature an opponent controls gains forestwalk until your next upkeep"); Ability ability = new BeginningOfUpkeepTriggeredAbility(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/Erithizon.java b/Mage.Sets/src/mage/cards/e/Erithizon.java index c06e46173a9..74035a4b6a3 100644 --- a/Mage.Sets/src/mage/cards/e/Erithizon.java +++ b/Mage.Sets/src/mage/cards/e/Erithizon.java @@ -12,6 +12,7 @@ import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.TargetAdjuster; @@ -32,7 +33,7 @@ public final class Erithizon extends CardImpl { // Whenever Erithizon attacks, put a +1/+1 counter on target creature of defending player's choice. Ability ability = new AttacksTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.setTargetAdjuster(ErithizonAdjuster.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/ErrantDoomsayers.java b/Mage.Sets/src/mage/cards/e/ErrantDoomsayers.java index b4b98352cc1..a7781452dc7 100644 --- a/Mage.Sets/src/mage/cards/e/ErrantDoomsayers.java +++ b/Mage.Sets/src/mage/cards/e/ErrantDoomsayers.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ToughnessPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class ErrantDoomsayers extends CardImpl { // {tap}: Tap target creature with toughness 2 or less. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new TapSourceCost()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EscapeRoutes.java b/Mage.Sets/src/mage/cards/e/EscapeRoutes.java index 3e4636beb1d..23f30a75c3a 100644 --- a/Mage.Sets/src/mage/cards/e/EscapeRoutes.java +++ b/Mage.Sets/src/mage/cards/e/EscapeRoutes.java @@ -15,6 +15,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -35,7 +36,7 @@ public final class EscapeRoutes extends CardImpl { // {2}{U}: Return target white or black creature you control to its owner's hand. Ability ability = new SimpleActivatedAbility(new ReturnToHandTargetEffect(), new ManaCostsImpl<>("{2}{U}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EssenceFracture.java b/Mage.Sets/src/mage/cards/e/EssenceFracture.java index 520d5342653..b7036199c89 100644 --- a/Mage.Sets/src/mage/cards/e/EssenceFracture.java +++ b/Mage.Sets/src/mage/cards/e/EssenceFracture.java @@ -1,7 +1,5 @@ - package mage.cards.e; -import java.util.UUID; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.ReturnToHandTargetEffect; @@ -11,21 +9,22 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author fireshoes */ public final class EssenceFracture extends CardImpl { public EssenceFracture(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}{U}"); // Return two target creatures to their owners' hands. Effect effect = new ReturnToHandTargetEffect(); effect.setText("Return two target creatures to their owners' hands"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetCreaturePermanent(2)); - + // Cycling {2}{U} this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}{U}"))); } diff --git a/Mage.Sets/src/mage/cards/e/EvergloveCourier.java b/Mage.Sets/src/mage/cards/e/EvergloveCourier.java index 38456e9dcef..a8df4ec0d4f 100644 --- a/Mage.Sets/src/mage/cards/e/EvergloveCourier.java +++ b/Mage.Sets/src/mage/cards/e/EvergloveCourier.java @@ -20,6 +20,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -49,7 +50,7 @@ public final class EvergloveCourier extends CardImpl { ability.addEffect(new ConditionalContinuousEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.Custom), SourceTappedCondition.TAPPED,"and has trample for as long as {this} remains tapped")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EvilTwin.java b/Mage.Sets/src/mage/cards/e/EvilTwin.java index 0297e1150bc..21fa0417286 100644 --- a/Mage.Sets/src/mage/cards/e/EvilTwin.java +++ b/Mage.Sets/src/mage/cards/e/EvilTwin.java @@ -21,6 +21,7 @@ import mage.filter.predicate.ObjectSourcePlayer; import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; import mage.util.functions.CopyApplier; @@ -68,7 +69,7 @@ class EvilTwinCopyApplier extends CopyApplier { public boolean apply(Game game, MageObject blueprint, Ability source, UUID copyToObjectId) { Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{U}{B}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); blueprint.getAbilities().add(ability); return true; } diff --git a/Mage.Sets/src/mage/cards/e/EvolutionaryEscalation.java b/Mage.Sets/src/mage/cards/e/EvolutionaryEscalation.java index 4ee0cf28ca4..6732ef8f741 100644 --- a/Mage.Sets/src/mage/cards/e/EvolutionaryEscalation.java +++ b/Mage.Sets/src/mage/cards/e/EvolutionaryEscalation.java @@ -15,9 +15,12 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author spjspj @@ -31,7 +34,7 @@ public final class EvolutionaryEscalation extends CardImpl { EvolutionaryEscalationEffect effect = new EvolutionaryEscalationEffect(); Ability ability = new BeginningOfUpkeepTriggeredAbility(effect); ability.addTarget(new TargetControlledCreaturePermanent()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/Excise.java b/Mage.Sets/src/mage/cards/e/Excise.java index 6835e169b00..a4f8f1981ed 100644 --- a/Mage.Sets/src/mage/cards/e/Excise.java +++ b/Mage.Sets/src/mage/cards/e/Excise.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -27,7 +28,7 @@ public final class Excise extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{W}"); // Excise target nonwhite attacking creature unless its controller pays {X}. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DoUnlessTargetPlayerOrTargetsControllerPaysEffect(new ExileTargetEffect(), GetXValue.instance)); } diff --git a/Mage.Sets/src/mage/cards/e/ExclusionMage.java b/Mage.Sets/src/mage/cards/e/ExclusionMage.java index c1a4131f51f..00f1c8a2121 100644 --- a/Mage.Sets/src/mage/cards/e/ExclusionMage.java +++ b/Mage.Sets/src/mage/cards/e/ExclusionMage.java @@ -10,8 +10,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author TheElk801 @@ -28,7 +31,7 @@ public final class ExclusionMage extends CardImpl { // When Exclusion Mage enters the battlefield, return target creature an opponent controls to its owner's hand. Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/Excoriate.java b/Mage.Sets/src/mage/cards/e/Excoriate.java index 38be8444c5e..edda09c0155 100644 --- a/Mage.Sets/src/mage/cards/e/Excoriate.java +++ b/Mage.Sets/src/mage/cards/e/Excoriate.java @@ -8,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class Excoriate extends CardImpl { // Exile target tapped creature. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Excoriate(final Excoriate card) { diff --git a/Mage.Sets/src/mage/cards/e/Execute.java b/Mage.Sets/src/mage/cards/e/Execute.java index bf6d2c3b1f0..a5171e8da13 100644 --- a/Mage.Sets/src/mage/cards/e/Execute.java +++ b/Mage.Sets/src/mage/cards/e/Execute.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class Execute extends CardImpl { // Destroy target white creature. It can't be regenerated. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/e/ExecutionersCapsule.java b/Mage.Sets/src/mage/cards/e/ExecutionersCapsule.java index be66a2ff068..0294badd5aa 100644 --- a/Mage.Sets/src/mage/cards/e/ExecutionersCapsule.java +++ b/Mage.Sets/src/mage/cards/e/ExecutionersCapsule.java @@ -11,8 +11,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author North @@ -25,7 +28,7 @@ public final class ExecutionersCapsule extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{1}{B}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/Exile.java b/Mage.Sets/src/mage/cards/e/Exile.java index 91802f519f4..ed76065c392 100644 --- a/Mage.Sets/src/mage/cards/e/Exile.java +++ b/Mage.Sets/src/mage/cards/e/Exile.java @@ -18,6 +18,7 @@ import mage.filter.predicate.permanent.AttackingPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class Exile extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}"); // Exile target nonwhite attacking creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new ExileTargetEffect()); // You gain life equal to its toughness. this.getSpellAbility().addEffect(new ExileEffect()); diff --git a/Mage.Sets/src/mage/cards/e/Exorcist.java b/Mage.Sets/src/mage/cards/e/Exorcist.java index be5ead24428..499e8010b48 100644 --- a/Mage.Sets/src/mage/cards/e/Exorcist.java +++ b/Mage.Sets/src/mage/cards/e/Exorcist.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class Exorcist extends CardImpl { new DestroyTargetEffect(), new ManaCostsImpl<>("{1}{W}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/ExpelTheUnworthy.java b/Mage.Sets/src/mage/cards/e/ExpelTheUnworthy.java index c087d318889..5131200e499 100644 --- a/Mage.Sets/src/mage/cards/e/ExpelTheUnworthy.java +++ b/Mage.Sets/src/mage/cards/e/ExpelTheUnworthy.java @@ -16,11 +16,14 @@ import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.ConditionalTargetAdjuster; import java.util.UUID; +import static mage.abilities.condition.common.KickedCondition.ONCE; + /** * @author Susucr */ @@ -44,8 +47,8 @@ public final class ExpelTheUnworthy extends CardImpl { this.getSpellAbility().addEffect(new ExileTargetEffect().setText("Exile the chosen creature")); this.getSpellAbility().addEffect(new ExpelTheUnworthyEffect()); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); - this.getSpellAbility().setTargetAdjuster(new ConditionalTargetAdjuster(KickedCondition.ONCE, - new TargetCreaturePermanent(filter), new TargetCreaturePermanent())); + this.getSpellAbility().setTargetAdjuster(new ConditionalTargetAdjuster(ONCE, + new TargetPermanent(filter), new TargetCreaturePermanent())); } private ExpelTheUnworthy(final ExpelTheUnworthy card) { diff --git a/Mage.Sets/src/mage/cards/e/ExpendableTroops.java b/Mage.Sets/src/mage/cards/e/ExpendableTroops.java index 4974710688c..d66072bba4e 100644 --- a/Mage.Sets/src/mage/cards/e/ExpendableTroops.java +++ b/Mage.Sets/src/mage/cards/e/ExpendableTroops.java @@ -14,6 +14,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -33,7 +34,7 @@ public final class ExpendableTroops extends CardImpl { // {tap}, Sacrifice Expendable Troops: Expendable Troops deals 2 damage to target attacking or blocking creature. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2, "it"), new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/ExposeTheCulprit.java b/Mage.Sets/src/mage/cards/e/ExposeTheCulprit.java index 067b28df715..db51939cf8d 100644 --- a/Mage.Sets/src/mage/cards/e/ExposeTheCulprit.java +++ b/Mage.Sets/src/mage/cards/e/ExposeTheCulprit.java @@ -46,7 +46,7 @@ public final class ExposeTheCulprit extends CardImpl { // * Turn target face-down creature face up. this.getSpellAbility().addEffect(new TurnFaceUpTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // * Exile any number of face-up creatures you control with disguise in a face-down pile, shuffle that pile, then cloak them. Mode mode = new Mode(new ExposeTheCulpritEffect()); diff --git a/Mage.Sets/src/mage/cards/e/Expunge.java b/Mage.Sets/src/mage/cards/e/Expunge.java index eb89c44253f..f63805c17f0 100644 --- a/Mage.Sets/src/mage/cards/e/Expunge.java +++ b/Mage.Sets/src/mage/cards/e/Expunge.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class Expunge extends CardImpl { // Destroy target nonartifact, nonblack creature. It can't be regenerated. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); // Cycling {2} ({2}, Discard this card: Draw a card.) diff --git a/Mage.Sets/src/mage/cards/e/EyeblightAssassin.java b/Mage.Sets/src/mage/cards/e/EyeblightAssassin.java index a4e9edb5c25..5c59e42ad94 100644 --- a/Mage.Sets/src/mage/cards/e/EyeblightAssassin.java +++ b/Mage.Sets/src/mage/cards/e/EyeblightAssassin.java @@ -12,8 +12,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author fireshoes @@ -29,7 +32,7 @@ public final class EyeblightAssassin extends CardImpl { // When Eyeblight Assassin enters the battlefield, target creature an opponent controls gets -1/-1 until end of turn. Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(-1,-1, Duration.EndOfTurn)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java b/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java index ce39d520ebe..d4917999126 100644 --- a/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java +++ b/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class EyeblightsEnding extends CardImpl { this.subtype.add(SubType.ELF); this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private EyeblightsEnding(final EyeblightsEnding card) { diff --git a/Mage.Sets/src/mage/cards/f/FallingTimber.java b/Mage.Sets/src/mage/cards/f/FallingTimber.java index 388938cccfa..8871740caec 100644 --- a/Mage.Sets/src/mage/cards/f/FallingTimber.java +++ b/Mage.Sets/src/mage/cards/f/FallingTimber.java @@ -1,6 +1,5 @@ package mage.cards.f; -import mage.abilities.condition.common.KickedCondition; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.Effect; import mage.abilities.effects.common.PreventDamageByTargetEffect; @@ -15,6 +14,8 @@ import mage.target.targetadjustment.ConditionalTargetAdjuster; import java.util.UUID; +import static mage.abilities.condition.common.KickedCondition.ONCE; + /** * @author LoneFox */ @@ -33,8 +34,7 @@ public final class FallingTimber extends CardImpl { "prevent all combat damage another target creature would deal this turn."); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); - this.getSpellAbility().setTargetAdjuster(new ConditionalTargetAdjuster(KickedCondition.ONCE, - new TargetCreaturePermanent(2))); + this.getSpellAbility().setTargetAdjuster(new ConditionalTargetAdjuster(ONCE, new TargetCreaturePermanent(2))); } private FallingTimber(final FallingTimber card) { diff --git a/Mage.Sets/src/mage/cards/f/FangSkulkin.java b/Mage.Sets/src/mage/cards/f/FangSkulkin.java index 0ed4a8ead57..334fdf1b3cb 100644 --- a/Mage.Sets/src/mage/cards/f/FangSkulkin.java +++ b/Mage.Sets/src/mage/cards/f/FangSkulkin.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class FangSkulkin extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(WitherAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(filterBlackCreature)); + ability.addTarget(new TargetPermanent(filterBlackCreature)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FateTransfer.java b/Mage.Sets/src/mage/cards/f/FateTransfer.java index 358fcd3c1ed..1e5b0d36d0f 100644 --- a/Mage.Sets/src/mage/cards/f/FateTransfer.java +++ b/Mage.Sets/src/mage/cards/f/FateTransfer.java @@ -1,7 +1,5 @@ - package mage.cards.f; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; @@ -9,36 +7,26 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.counters.Counter; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class FateTransfer extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("target creature to move all counters from"); - private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another target creature to move all counters to"); - public FateTransfer(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U/B}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U/B}"); // Move all counters from target creature onto another target creature. this.getSpellAbility().addEffect(new FateTransferEffect()); - - TargetCreaturePermanent fromTarget = new TargetCreaturePermanent(filter); - fromTarget.setTargetTag(1); - this.getSpellAbility().addTarget(fromTarget); - - TargetCreaturePermanent toTarget = new TargetCreaturePermanent(filter2); - filter2.add(new AnotherTargetPredicate(2)); - toTarget.setTargetTag(2); - this.getSpellAbility().addTarget(toTarget); - + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("to remove counters from").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2)); } private FateTransfer(final FateTransfer card) { diff --git a/Mage.Sets/src/mage/cards/f/FearOfAbduction.java b/Mage.Sets/src/mage/cards/f/FearOfAbduction.java index 72792029d78..6deb44b115d 100644 --- a/Mage.Sets/src/mage/cards/f/FearOfAbduction.java +++ b/Mage.Sets/src/mage/cards/f/FearOfAbduction.java @@ -21,10 +21,13 @@ import mage.filter.StaticFilters; import mage.game.ExileZone; import mage.game.Game; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author Cguy7777 */ @@ -46,7 +49,7 @@ public final class FearOfAbduction extends CardImpl { // When Fear of Abduction enters, exile target creature an opponent controls. Ability ability = new EntersBattlefieldTriggeredAbility(new FearOfAbductionExileEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); // When Fear of Abduction leaves the battlefield, put each card exiled with it into its owner's hand. diff --git a/Mage.Sets/src/mage/cards/f/FeastOfDreams.java b/Mage.Sets/src/mage/cards/f/FeastOfDreams.java index 366b3cd190d..5ccda8f8ddb 100644 --- a/Mage.Sets/src/mage/cards/f/FeastOfDreams.java +++ b/Mage.Sets/src/mage/cards/f/FeastOfDreams.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.EnchantedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class FeastOfDreams extends CardImpl { // Destroy target enchanted creature or enchantment creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private FeastOfDreams(final FeastOfDreams card) { diff --git a/Mage.Sets/src/mage/cards/f/FeastOrFamine.java b/Mage.Sets/src/mage/cards/f/FeastOrFamine.java index 05aa80ebf49..89916b379b0 100644 --- a/Mage.Sets/src/mage/cards/f/FeastOrFamine.java +++ b/Mage.Sets/src/mage/cards/f/FeastOrFamine.java @@ -13,6 +13,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.ZombieToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class FeastOrFamine extends CardImpl { // or destroy target nonartifact, nonblack creature and it can't be regenerated. Mode mode = new Mode(new DestroyTargetEffect(true)); - mode.addTarget(new TargetCreaturePermanent(filter)); + mode.addTarget(new TargetPermanent(filter)); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java b/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java index 7cdd4a7a6ca..b694442608c 100644 --- a/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java +++ b/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java @@ -20,9 +20,12 @@ import mage.constants.Outcome; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author Quercitron @@ -39,7 +42,7 @@ public final class FelhideSpiritbinder extends CardImpl { // Inspired — Whenever Felhide Spiritbinder becomes untapped, you may pay {1}{R}. If you do, create a token that's a copy of another target creature except it's an enchantment in addition to its other types. It gains haste. Exile it at the beginning of the next end step. Ability ability = new InspiredAbility(new DoIfCostPaid(new FelhideSpiritbinderEffect(), new ManaCostsImpl<>("{1}{R}"), "Use effect of {this}?")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FemerefArchers.java b/Mage.Sets/src/mage/cards/f/FemerefArchers.java index 1bbe77a4ca2..404f855dee4 100644 --- a/Mage.Sets/src/mage/cards/f/FemerefArchers.java +++ b/Mage.Sets/src/mage/cards/f/FemerefArchers.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class FemerefArchers extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(4), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FeralContest.java b/Mage.Sets/src/mage/cards/f/FeralContest.java index 354c34eec8a..ad741759504 100644 --- a/Mage.Sets/src/mage/cards/f/FeralContest.java +++ b/Mage.Sets/src/mage/cards/f/FeralContest.java @@ -1,7 +1,5 @@ - package mage.cards.f; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.RequirementEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -10,36 +8,29 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.counters.CounterType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; -import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; /** - * * @author jeffwadsworth */ public final class FeralContest extends CardImpl { public FeralContest(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}"); // Put a +1/+1 counter on target creature you control. this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); - - TargetControlledCreaturePermanent target1 = new TargetControlledCreaturePermanent(); - target1.setTargetTag(1); - this.getSpellAbility().addTarget(target1); - + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent().setTargetTag(1)); + // Another target creature blocks it this turn if able. this.getSpellAbility().addEffect(new FeralContestEffect()); - FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature (must block this turn)"); - filter.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).withChooseHint("to force to block").setTargetTag(2)); } private FeralContest(final FeralContest card) { diff --git a/Mage.Sets/src/mage/cards/f/FesteringNewt.java b/Mage.Sets/src/mage/cards/f/FesteringNewt.java index 323b1267474..1e30b621dfc 100644 --- a/Mage.Sets/src/mage/cards/f/FesteringNewt.java +++ b/Mage.Sets/src/mage/cards/f/FesteringNewt.java @@ -18,8 +18,11 @@ import mage.constants.Duration; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.NamePredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -46,7 +49,7 @@ public final class FesteringNewt extends CardImpl { new LockedInCondition(new PermanentsOnTheBattlefieldCondition(filterBogbrewWitch)), "target creature an opponent controls gets -1/-1 until end of turn. That creature gets -4/-4 instead if you control a creature named Bogbrew Witch"); Ability ability = new DiesSourceTriggeredAbility(effect); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FeverCharm.java b/Mage.Sets/src/mage/cards/f/FeverCharm.java index 7921e494ded..fb08d418f01 100644 --- a/Mage.Sets/src/mage/cards/f/FeverCharm.java +++ b/Mage.Sets/src/mage/cards/f/FeverCharm.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class FeverCharm extends CardImpl { this.getSpellAbility().addMode(mode); // or Fever Charm deals 3 damage to target Wizard creature. mode = new Mode(new DamageTargetEffect(3)); - mode.addTarget(new TargetCreaturePermanent(filter)); + mode.addTarget(new TargetPermanent(filter)); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/f/FeySteed.java b/Mage.Sets/src/mage/cards/f/FeySteed.java index beaecd6abeb..df32f25e7e5 100644 --- a/Mage.Sets/src/mage/cards/f/FeySteed.java +++ b/Mage.Sets/src/mage/cards/f/FeySteed.java @@ -16,6 +16,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -50,7 +51,7 @@ public final class FeySteed extends CardImpl { // Whenever Fey Steed attacks, another target attacking creature you control gains indestructible until end of turn. Ability ability = new AttacksTriggeredAbility( new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Whenever a creature or planeswalker you control becomes the target of a spell or ability an opponent controls, you may draw a card. diff --git a/Mage.Sets/src/mage/cards/f/FiendBinder.java b/Mage.Sets/src/mage/cards/f/FiendBinder.java index 5059619cdc4..34ac77e08a6 100644 --- a/Mage.Sets/src/mage/cards/f/FiendBinder.java +++ b/Mage.Sets/src/mage/cards/f/FiendBinder.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class FiendBinder extends CardImpl { // Whenever Fiend Binder attacks, tap target creature defending player controls. Ability ability = new AttacksTriggeredAbility(new TapTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FirbolgFlutist.java b/Mage.Sets/src/mage/cards/f/FirbolgFlutist.java index ad9f3e92b5d..7a45290f3a3 100644 --- a/Mage.Sets/src/mage/cards/f/FirbolgFlutist.java +++ b/Mage.Sets/src/mage/cards/f/FirbolgFlutist.java @@ -14,10 +14,13 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -42,7 +45,7 @@ public final class FirbolgFlutist extends CardImpl { ability.addEffect(new GainAbilityTargetEffect( new MyriadAbility(), Duration.EndOfTurn ).setText("and myriad until end of turn")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability.withFlavorWord("Enthralling Performance")); } diff --git a/Mage.Sets/src/mage/cards/f/FirewakeSliver.java b/Mage.Sets/src/mage/cards/f/FirewakeSliver.java index 421eea7ad80..a6ca4f9908d 100644 --- a/Mage.Sets/src/mage/cards/f/FirewakeSliver.java +++ b/Mage.Sets/src/mage/cards/f/FirewakeSliver.java @@ -18,6 +18,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -47,7 +48,7 @@ public final class FirewakeSliver extends CardImpl { // All Slivers have "{1}, Sacrifice this permanent: Target Sliver creature gets +2/+2 until end of turn." Ability gainedAbility = new SimpleActivatedAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn), new GenericManaCost(1)); gainedAbility.addCost(new SacrificeSourceCost()); - gainedAbility.addTarget(new TargetCreaturePermanent(targetSliverFilter)); + gainedAbility.addTarget(new TargetPermanent(targetSliverFilter)); this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect( gainedAbility, Duration.WhileOnBattlefield, filter, "All Slivers have \"{1}, Sacrifice this permanent: Target Sliver creature gets +2/+2 until end of turn.\""))); diff --git a/Mage.Sets/src/mage/cards/f/FirjasRetribution.java b/Mage.Sets/src/mage/cards/f/FirjasRetribution.java index 5b9fde1d43c..a221f46eb32 100644 --- a/Mage.Sets/src/mage/cards/f/FirjasRetribution.java +++ b/Mage.Sets/src/mage/cards/f/FirjasRetribution.java @@ -23,6 +23,7 @@ import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.AngelWarriorVigilanceToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -53,7 +54,7 @@ public final class FirjasRetribution extends CardImpl { // II — Until end of turn, Angels you control gain "{T}: Destroy target creature with less power than this creature." Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, new GainAbilityAllEffect( ability, Duration.EndOfTurn, filter2 ).setText("until end of turn, Angels you control gain \"{T}: Destroy target creature with power less than this creature's power.\"")); diff --git a/Mage.Sets/src/mage/cards/f/FlamestickCourier.java b/Mage.Sets/src/mage/cards/f/FlamestickCourier.java index 7ef97f22936..620ce4cdd3a 100644 --- a/Mage.Sets/src/mage/cards/f/FlamestickCourier.java +++ b/Mage.Sets/src/mage/cards/f/FlamestickCourier.java @@ -20,6 +20,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -49,7 +50,7 @@ public final class FlamestickCourier extends CardImpl { ability.addEffect(new ConditionalContinuousEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom), SourceTappedCondition.TAPPED,"and has haste for as long as {this} remains tapped")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FlashFoliage.java b/Mage.Sets/src/mage/cards/f/FlashFoliage.java index 6730fc8a77c..a3874a07191 100644 --- a/Mage.Sets/src/mage/cards/f/FlashFoliage.java +++ b/Mage.Sets/src/mage/cards/f/FlashFoliage.java @@ -17,6 +17,7 @@ import mage.game.permanent.Permanent; import mage.game.permanent.token.SaprolingToken; import mage.game.permanent.token.Token; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -35,7 +36,7 @@ public final class FlashFoliage extends CardImpl { // Create a 1/1 green Saproling creature token that’s blocking target creature attacking you. this.getSpellAbility().addEffect(new FlashFoliageEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterCreatureAttackingYou())); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterCreatureAttackingYou())); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java b/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java index ae1354019a3..a18ce8ee871 100644 --- a/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java +++ b/Mage.Sets/src/mage/cards/f/FleshpulperGiant.java @@ -13,6 +13,7 @@ import mage.constants.SubType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class FleshpulperGiant extends CardImpl { // When Fleshpulper Giant enters the battlefield, you may destroy target creature with toughness 2 or less. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/Flood.java b/Mage.Sets/src/mage/cards/f/Flood.java index da0062f8b25..9493e460098 100644 --- a/Mage.Sets/src/mage/cards/f/Flood.java +++ b/Mage.Sets/src/mage/cards/f/Flood.java @@ -14,6 +14,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -33,7 +34,7 @@ public final class Flood extends CardImpl { // {U}{U}: Tap target creature without flying. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{U}{U}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FoeRazerRegent.java b/Mage.Sets/src/mage/cards/f/FoeRazerRegent.java index 1f2b30ccf9d..1976254a805 100644 --- a/Mage.Sets/src/mage/cards/f/FoeRazerRegent.java +++ b/Mage.Sets/src/mage/cards/f/FoeRazerRegent.java @@ -20,11 +20,14 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -41,7 +44,7 @@ public final class FoeRazerRegent extends CardImpl { // When Foe-Razer Regent enters the battlefield, you may have it fight target creature you don't control. Ability ability = new EntersBattlefieldTriggeredAbility(new FightTargetSourceEffect().setText("you may have it fight target creature you don't control"), true); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); // Whenever a creature you control fights, put two +1/+1 counters on it at the beginning of the next end step. diff --git a/Mage.Sets/src/mage/cards/f/Fogwalker.java b/Mage.Sets/src/mage/cards/f/Fogwalker.java index 2a89e279241..99ef23892b5 100644 --- a/Mage.Sets/src/mage/cards/f/Fogwalker.java +++ b/Mage.Sets/src/mage/cards/f/Fogwalker.java @@ -10,10 +10,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -30,7 +33,7 @@ public final class Fogwalker extends CardImpl { this.addAbility(new SkulkAbility()); // When Fogwalker enters the battlefield, target creature an opponent controls doesn't untap during its controller's next untap step. EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DontUntapInControllersNextUntapStepTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/ForcePull.java b/Mage.Sets/src/mage/cards/f/ForcePull.java index ec89792c393..4a9b00a41cb 100644 --- a/Mage.Sets/src/mage/cards/f/ForcePull.java +++ b/Mage.Sets/src/mage/cards/f/ForcePull.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class ForcePull extends CardImpl { // Destroy targer creature with spaceflight. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Scry 3 this.getSpellAbility().addEffect(new ScryEffect(3)); diff --git a/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java b/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java index 4fa8e818dcb..a14c3497683 100644 --- a/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java +++ b/Mage.Sets/src/mage/cards/f/ForerunnerOfSlaughter.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorlessPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class ForerunnerOfSlaughter extends CardImpl { // {1}: Target colorless creature gains haste until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(1)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FowlStrike.java b/Mage.Sets/src/mage/cards/f/FowlStrike.java index 92ae669dcb9..ce423d2a787 100644 --- a/Mage.Sets/src/mage/cards/f/FowlStrike.java +++ b/Mage.Sets/src/mage/cards/f/FowlStrike.java @@ -9,6 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -29,7 +30,7 @@ public final class FowlStrike extends CardImpl { // Destroy target creature with flying. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Reinforce 2--{2}{G} this.addAbility(new ReinforceAbility(2, new ManaCostsImpl<>("{2}{G}"))); diff --git a/Mage.Sets/src/mage/cards/f/FreewindEquenaut.java b/Mage.Sets/src/mage/cards/f/FreewindEquenaut.java index a656674ee8e..1d68fd6e959 100644 --- a/Mage.Sets/src/mage/cards/f/FreewindEquenaut.java +++ b/Mage.Sets/src/mage/cards/f/FreewindEquenaut.java @@ -18,6 +18,7 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class FreewindEquenaut extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new DamageTargetEffect(2), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.addAbility(new SimpleStaticAbility( new ConditionalContinuousEffect( new GainAbilitySourceEffect(ability, Duration.WhileOnBattlefield), diff --git a/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java b/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java index a19bf49df6a..87c5824ffbd 100644 --- a/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java +++ b/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java @@ -20,6 +20,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -49,7 +50,7 @@ public final class FrightshroudCourier extends CardImpl { ability.addEffect(new ConditionalContinuousEffect(new GainAbilityTargetEffect(FearAbility.getInstance(), Duration.Custom), SourceTappedCondition.TAPPED,"and has fear for as long as {this} remains tapped")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FrontierSiege.java b/Mage.Sets/src/mage/cards/f/FrontierSiege.java index a05e0807877..47aa48ade33 100644 --- a/Mage.Sets/src/mage/cards/f/FrontierSiege.java +++ b/Mage.Sets/src/mage/cards/f/FrontierSiege.java @@ -21,10 +21,13 @@ import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -49,7 +52,7 @@ public final class FrontierSiege extends CardImpl { Ability ability = new EntersBattlefieldAllTriggeredAbility( Zone.BATTLEFIELD, new FrontierSiegeFightEffect(), filter, true, SetTargetPointer.PERMANENT ); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(new SimpleStaticAbility(new GainAnchorWordAbilitySourceEffect(ability, ModeChoice.DRAGONS))); } diff --git a/Mage.Sets/src/mage/cards/f/FulfillContract.java b/Mage.Sets/src/mage/cards/f/FulfillContract.java index b311c455f03..be31b45cd96 100644 --- a/Mage.Sets/src/mage/cards/f/FulfillContract.java +++ b/Mage.Sets/src/mage/cards/f/FulfillContract.java @@ -15,6 +15,7 @@ import mage.filter.predicate.Predicates; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -37,7 +38,7 @@ public final class FulfillContract extends CardImpl { // Destroy target creature with a bounty counter on it. If that creature is destroyed this way, you may put a +1/+1 counter on target Rogue or Hunter you control. this.getSpellAbility().addEffect(new FulfillContractEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterBountyCreature)); + this.getSpellAbility().addTarget(new TargetPermanent(filterBountyCreature)); this.getSpellAbility().addTarget(new TargetControlledPermanent(filterRogueOrHunter)); } diff --git a/Mage.Sets/src/mage/cards/f/FulgentDistraction.java b/Mage.Sets/src/mage/cards/f/FulgentDistraction.java index a4209b808e8..f0a853840ed 100644 --- a/Mage.Sets/src/mage/cards/f/FulgentDistraction.java +++ b/Mage.Sets/src/mage/cards/f/FulgentDistraction.java @@ -1,28 +1,30 @@ package mage.cards.f; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; +import mage.MageItem; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; -import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; +import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + /** - * * @author maurer.it_at_gmail.com */ public final class FulgentDistraction extends CardImpl { - public FulgentDistraction (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}"); - + public FulgentDistraction(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}"); this.getSpellAbility().addEffect(new FulgentDistractionEffect()); this.getSpellAbility().addTarget(new TargetCreaturePermanent(2)); @@ -51,27 +53,30 @@ class FulgentDistractionEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - for ( UUID target : getTargetPointer().getTargets(game, source) ) { - Permanent creature = game.getPermanent(target); - - List copiedAttachments = new ArrayList<>(creature.getAttachments()); - for ( UUID equipmentId : copiedAttachments ) { - Permanent equipment = game.getPermanent(equipmentId); - boolean isEquipment = false; - - for (Ability ability : equipment.getAbilities()) { - if (ability instanceof EquipAbility) { - isEquipment = true; - break; - } - } - - if (isEquipment) { - creature.removeAttachment(equipmentId, source, game); - } + List permanents = this + .getTargetPointer() + .getTargets(game, source) + .stream() + .map(game::getPermanent) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + if (permanents.isEmpty()) { + return false; + } + for (Permanent permanent : permanents) { + permanent.tap(source, game); + } + for (Permanent permanent : permanents) { + Set attachments = permanent + .getAttachments() + .stream() + .map(game::getPermanent) + .filter(attachment -> attachment.hasSubtype(SubType.EQUIPMENT, game)) + .map(MageItem::getId) + .collect(Collectors.toSet()); + for (UUID attachmentId : attachments) { + permanent.removeAttachment(attachmentId, source, game); } - - creature.tap(source, game); } return true; } diff --git a/Mage.Sets/src/mage/cards/f/FuriousResistance.java b/Mage.Sets/src/mage/cards/f/FuriousResistance.java index f56a4387d0e..1b399b95b25 100644 --- a/Mage.Sets/src/mage/cards/f/FuriousResistance.java +++ b/Mage.Sets/src/mage/cards/f/FuriousResistance.java @@ -16,6 +16,7 @@ import mage.filter.common.FilterBlockingCreature; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -32,7 +33,7 @@ public final class FuriousResistance extends CardImpl { // Target blocking creature gets +3/+0 and gains first strike until end of turn. this.getSpellAbility().addEffect(new FuriousResistanceEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private FuriousResistance(final FuriousResistance card) { diff --git a/Mage.Sets/src/mage/cards/g/GOTOJAIL.java b/Mage.Sets/src/mage/cards/g/GOTOJAIL.java index 7f4fa3d699f..730b6accdfe 100644 --- a/Mage.Sets/src/mage/cards/g/GOTOJAIL.java +++ b/Mage.Sets/src/mage/cards/g/GOTOJAIL.java @@ -18,12 +18,15 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; import java.util.List; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author spjspj */ @@ -34,7 +37,7 @@ public final class GOTOJAIL extends CardImpl { // When GO TO JAIL enters the battlefield, exile target creature an opponent controls until GO TO JAIL leaves the battlefield. Ability ability = new EntersBattlefieldTriggeredAbility(new GoToJailExileEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); // At the beginning of the upkeep of the exiled card's owner, that player rolls two six-sided dice. If they roll doubles, sacrifice GO TO JAIL. diff --git a/Mage.Sets/src/mage/cards/g/GalepowderMage.java b/Mage.Sets/src/mage/cards/g/GalepowderMage.java index 91b441fdc4a..ea12ca3153b 100644 --- a/Mage.Sets/src/mage/cards/g/GalepowderMage.java +++ b/Mage.Sets/src/mage/cards/g/GalepowderMage.java @@ -10,10 +10,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author LevelX2 */ @@ -31,7 +34,7 @@ public final class GalepowderMage extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever Galepowder Mage attacks, exile another target creature. Return that card to the battlefield under its owner's control at the beginning of the next end step. Ability ability = new AttacksTriggeredAbility(new ExileReturnBattlefieldNextEndStepTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/Galestrike.java b/Mage.Sets/src/mage/cards/g/Galestrike.java index d148c224a39..4a050605fee 100644 --- a/Mage.Sets/src/mage/cards/g/Galestrike.java +++ b/Mage.Sets/src/mage/cards/g/Galestrike.java @@ -9,6 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class Galestrike extends CardImpl { // Return target tapped creature to its owner's hand. this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/g/Gallantry.java b/Mage.Sets/src/mage/cards/g/Gallantry.java index c70f8ccc2b6..2386fe06fe1 100644 --- a/Mage.Sets/src/mage/cards/g/Gallantry.java +++ b/Mage.Sets/src/mage/cards/g/Gallantry.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterBlockingCreature; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -26,7 +27,7 @@ public final class Gallantry extends CardImpl { // Target blocking creature gets +4/+4 until end of turn. this.getSpellAbility().addEffect(new BoostTargetEffect(4, 4, Duration.EndOfTurn)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); } diff --git a/Mage.Sets/src/mage/cards/g/GangUp.java b/Mage.Sets/src/mage/cards/g/GangUp.java index 12bc2d46121..b63be78de94 100644 --- a/Mage.Sets/src/mage/cards/g/GangUp.java +++ b/Mage.Sets/src/mage/cards/g/GangUp.java @@ -8,11 +8,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.PowerTargetAdjuster; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE; + /** * @author TheElk801 */ @@ -26,7 +29,7 @@ public final class GangUp extends CardImpl { // Destroy target creature with power X or less. this.getSpellAbility().addEffect(new DestroyTargetEffect("destroy target creature with power X or less")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE)); this.getSpellAbility().setTargetAdjuster(new PowerTargetAdjuster(ComparisonType.OR_LESS)); } diff --git a/Mage.Sets/src/mage/cards/g/GargantuanGorilla.java b/Mage.Sets/src/mage/cards/g/GargantuanGorilla.java index b7f752ece69..92b7d80888d 100644 --- a/Mage.Sets/src/mage/cards/g/GargantuanGorilla.java +++ b/Mage.Sets/src/mage/cards/g/GargantuanGorilla.java @@ -20,6 +20,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -42,7 +43,7 @@ public final class GargantuanGorilla extends CardImpl { Ability ability = new SimpleActivatedAbility(new GargantuanGorillaFightEffect(), new TapSourceCost()); FilterCreaturePermanent filter = new FilterCreaturePermanent(); filter.add(AnotherPredicate.instance); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GarzasAssassin.java b/Mage.Sets/src/mage/cards/g/GarzasAssassin.java index d2edccf206b..d57bbbb003d 100644 --- a/Mage.Sets/src/mage/cards/g/GarzasAssassin.java +++ b/Mage.Sets/src/mage/cards/g/GarzasAssassin.java @@ -19,9 +19,12 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author choiseul11 & L_J @@ -37,7 +40,7 @@ public final class GarzasAssassin extends CardImpl { // Sacrifice Garza's Assassin: Destroy target nonblack creature. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); // Recover—Pay half your life, rounded up. diff --git a/Mage.Sets/src/mage/cards/g/GeistcatchersRig.java b/Mage.Sets/src/mage/cards/g/GeistcatchersRig.java index 5f468e3b4c1..48ef5dc2ea2 100644 --- a/Mage.Sets/src/mage/cards/g/GeistcatchersRig.java +++ b/Mage.Sets/src/mage/cards/g/GeistcatchersRig.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -35,7 +36,7 @@ public final class GeistcatchersRig extends CardImpl { this.toughness = new MageInt(5); // When Geistcatcher's Rig enters the battlefield, you may have it deal 4 damage to target creature with flying. Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(4), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GetawayGlamer.java b/Mage.Sets/src/mage/cards/g/GetawayGlamer.java index 59b5b92dafa..a6ce3f7a4bd 100644 --- a/Mage.Sets/src/mage/cards/g/GetawayGlamer.java +++ b/Mage.Sets/src/mage/cards/g/GetawayGlamer.java @@ -15,6 +15,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TokenPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.List; @@ -41,7 +42,7 @@ public final class GetawayGlamer extends CardImpl { // + {1} -- Exile target nontoken creature. Return it to the battlefield under its owner's control at the beginning of the next end step. this.getSpellAbility().addEffect(new ExileReturnBattlefieldNextEndStepTargetEffect().withTextThatCard(false)); this.getSpellAbility().addTarget( - new TargetCreaturePermanent(filter).withChooseHint("to exile") + new TargetPermanent(filter).withChooseHint("to exile") ); this.getSpellAbility().withFirstModeCost(new GenericManaCost(1)); diff --git a/Mage.Sets/src/mage/cards/g/GhastlyDemise.java b/Mage.Sets/src/mage/cards/g/GhastlyDemise.java index 325d906c4cc..8159fb3594b 100644 --- a/Mage.Sets/src/mage/cards/g/GhastlyDemise.java +++ b/Mage.Sets/src/mage/cards/g/GhastlyDemise.java @@ -10,10 +10,13 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * @author cbt33 */ @@ -23,7 +26,7 @@ public final class GhastlyDemise extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}"); // Destroy target nonblack creature if its toughness is less than or equal to the number of cards in your graveyard. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new GhastlyDemiseEffect()); } diff --git a/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java b/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java index 444545774e2..07756b42af4 100644 --- a/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java +++ b/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java @@ -20,6 +20,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -50,7 +51,7 @@ public final class GhosthelmCourier extends CardImpl { ability.addEffect(new ConditionalContinuousEffect(new GainAbilityTargetEffect(ShroudAbility.getInstance(), Duration.Custom), SourceTappedCondition.TAPPED,"and has shroud for as long as {this} remains tapped")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GhostlyVisit.java b/Mage.Sets/src/mage/cards/g/GhostlyVisit.java index cfb939434aa..df41330c4d1 100644 --- a/Mage.Sets/src/mage/cards/g/GhostlyVisit.java +++ b/Mage.Sets/src/mage/cards/g/GhostlyVisit.java @@ -6,8 +6,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LoneFox @@ -19,7 +22,7 @@ public final class GhostlyVisit extends CardImpl { // Destroy target nonblack creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); } private GhostlyVisit(final GhostlyVisit card) { diff --git a/Mage.Sets/src/mage/cards/g/GiantOyster.java b/Mage.Sets/src/mage/cards/g/GiantOyster.java index df682ce3765..1311bc09995 100644 --- a/Mage.Sets/src/mage/cards/g/GiantOyster.java +++ b/Mage.Sets/src/mage/cards/g/GiantOyster.java @@ -24,6 +24,7 @@ import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -55,7 +56,7 @@ public final class GiantOyster extends CardImpl { .setText("For as long as {this} remains tapped, target tapped creature doesn't untap during its controller's untap step"), new TapSourceCost()); ability.addEffect(new GiantOysterCreateDelayedTriggerEffects()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GiantTrapDoorSpider.java b/Mage.Sets/src/mage/cards/g/GiantTrapDoorSpider.java index 5fb28ea8bea..0a608fea718 100644 --- a/Mage.Sets/src/mage/cards/g/GiantTrapDoorSpider.java +++ b/Mage.Sets/src/mage/cards/g/GiantTrapDoorSpider.java @@ -18,6 +18,7 @@ import mage.constants.Zone; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.common.FilterCreatureAttackingYou; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class GiantTrapDoorSpider extends CardImpl { Ability ability = new SimpleActivatedAbility(new ExileSourceEffect(), new ManaCostsImpl<>("{1}{R}{G}")); ability.addCost(new TapSourceCost()); ability.addEffect(new ExileTargetEffect().setText("and target creature without flying that's attacking you")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GideonJura.java b/Mage.Sets/src/mage/cards/g/GideonJura.java index f546e9a380b..b679e7c06f0 100644 --- a/Mage.Sets/src/mage/cards/g/GideonJura.java +++ b/Mage.Sets/src/mage/cards/g/GideonJura.java @@ -17,6 +17,7 @@ import mage.filter.predicate.permanent.TappedPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.TokenImpl; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetOpponent; @@ -47,7 +48,7 @@ public final class GideonJura extends CardImpl { // −2: Destroy target tapped creature. LoyaltyAbility ability2 = new LoyaltyAbility(new DestroyTargetEffect(), -2); - ability2.addTarget(new TargetCreaturePermanent(filter)); + ability2.addTarget(new TargetPermanent(filter)); this.addAbility(ability2); // 0: Until end of turn, Gideon Jura becomes a 6/6 Human Soldier creature that's still a planeswalker. Prevent all damage that would be dealt to him this turn. diff --git a/Mage.Sets/src/mage/cards/g/GideonsDefeat.java b/Mage.Sets/src/mage/cards/g/GideonsDefeat.java index e7a8f4e6c83..a930cbc8b52 100644 --- a/Mage.Sets/src/mage/cards/g/GideonsDefeat.java +++ b/Mage.Sets/src/mage/cards/g/GideonsDefeat.java @@ -17,6 +17,7 @@ import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class GideonsDefeat extends CardImpl { // Exile target white creature that's attacking or blocking. If it was a Gideon planeswalker, you gain 5 life. this.getSpellAbility().addEffect(new GideonsDefeatEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private GideonsDefeat(final GideonsDefeat card) { diff --git a/Mage.Sets/src/mage/cards/g/GiftOfDoom.java b/Mage.Sets/src/mage/cards/g/GiftOfDoom.java index 521ee336c6c..7600c148a41 100644 --- a/Mage.Sets/src/mage/cards/g/GiftOfDoom.java +++ b/Mage.Sets/src/mage/cards/g/GiftOfDoom.java @@ -22,7 +22,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetPermanent; -import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -102,7 +101,7 @@ class GiftOfDoomEffect extends OneShotEffect { if (player == null || giftOfDoom == null) { return false; } - TargetCreaturePermanent target = new TargetCreaturePermanent(filter); + TargetPermanent target = new TargetPermanent(filter); target.withNotTarget(true); if (player.choose(outcome, target, source, game) && game.getPermanent(target.getFirstTarget()) != null diff --git a/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java b/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java index 60d3c9a4a1e..470bc8c4f3c 100644 --- a/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java +++ b/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java @@ -16,6 +16,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicates; import mage.game.Game; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class GiltLeafWinnower extends CardImpl { // When Gilt-Leaf Winnower enters the battlefield, you may destroy target non-Elf creature whose power and toughness aren't equal. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GlaringAegis.java b/Mage.Sets/src/mage/cards/g/GlaringAegis.java index 8fb0ab81b99..801e5d89384 100644 --- a/Mage.Sets/src/mage/cards/g/GlaringAegis.java +++ b/Mage.Sets/src/mage/cards/g/GlaringAegis.java @@ -16,6 +16,8 @@ import mage.filter.StaticFilters; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author fireshoes @@ -35,7 +37,7 @@ public final class GlaringAegis extends CardImpl { // When Glaring Aegis enters the battlefield, tap target creature an opponent controls. Ability ability2 = new EntersBattlefieldTriggeredAbility(new TapTargetEffect()); - ability2.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability2.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability2); // Enchanted creature gets +1/+3. diff --git a/Mage.Sets/src/mage/cards/g/GlimmerdustNap.java b/Mage.Sets/src/mage/cards/g/GlimmerdustNap.java index 6291db3c059..d10c441d5a9 100644 --- a/Mage.Sets/src/mage/cards/g/GlimmerdustNap.java +++ b/Mage.Sets/src/mage/cards/g/GlimmerdustNap.java @@ -35,7 +35,7 @@ public final class GlimmerdustNap extends CardImpl { // Enchant tapped creature - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); this.addAbility(new EnchantAbility(auraTarget)); diff --git a/Mage.Sets/src/mage/cards/g/Glorybringer.java b/Mage.Sets/src/mage/cards/g/Glorybringer.java index a029e6847b5..898840dd46d 100644 --- a/Mage.Sets/src/mage/cards/g/Glorybringer.java +++ b/Mage.Sets/src/mage/cards/g/Glorybringer.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -48,7 +49,7 @@ public final class Glorybringer extends CardImpl { Effect effect = new DamageTargetEffect(4); effect.setText("it deals 4 damage to target non-Dragon creature an opponent controls"); BecomesExertSourceTriggeredAbility ability = new BecomesExertSourceTriggeredAbility(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(new ExertAbility(ability)); } diff --git a/Mage.Sets/src/mage/cards/g/GlyphOfDelusion.java b/Mage.Sets/src/mage/cards/g/GlyphOfDelusion.java index 431d0f82bec..4d27ac13a29 100644 --- a/Mage.Sets/src/mage/cards/g/GlyphOfDelusion.java +++ b/Mage.Sets/src/mage/cards/g/GlyphOfDelusion.java @@ -43,7 +43,7 @@ public final class GlyphOfDelusion extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}"); // Put X glyph counters on target creature that target Wall blocked this turn, where X is the power of that blocked creature. The creature gains “This creature doesn’t untap during your untap step if it has a glyph counter on it” and “At the beginning of your upkeep, remove a glyph counter from this creature.” - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addTarget(new GlyphOfDelusionSecondTarget()); this.getSpellAbility().addEffect(new GlyphOfDelusionEffect()); } diff --git a/Mage.Sets/src/mage/cards/g/GlyphOfDoom.java b/Mage.Sets/src/mage/cards/g/GlyphOfDoom.java index 8accdeb1223..31d3ba22b20 100644 --- a/Mage.Sets/src/mage/cards/g/GlyphOfDoom.java +++ b/Mage.Sets/src/mage/cards/g/GlyphOfDoom.java @@ -19,6 +19,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.BlockedAttackerWatcher; @@ -38,7 +39,7 @@ public final class GlyphOfDoom extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}"); // Choose target Wall creature. At this turn's next end of combat, destroy all creatures that were blocked by that creature this turn. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new InfoEffect("Choose target Wall creature")); this.getSpellAbility().addEffect(new GlyphOfDoomCreateDelayedTriggeredAbilityEffect()); } diff --git a/Mage.Sets/src/mage/cards/g/GlyphOfLife.java b/Mage.Sets/src/mage/cards/g/GlyphOfLife.java index d41a3c57d93..e947e944ca1 100644 --- a/Mage.Sets/src/mage/cards/g/GlyphOfLife.java +++ b/Mage.Sets/src/mage/cards/g/GlyphOfLife.java @@ -19,6 +19,7 @@ import mage.game.events.DamagedEvent; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class GlyphOfLife extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}"); // Choose target Wall creature. Whenever that creature is dealt damage by an attacking creature this turn, you gain that much life. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new InfoEffect("Choose target Wall creature")); this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new GlyphOfLifeTriggeredAbility())); } diff --git a/Mage.Sets/src/mage/cards/g/GlyphOfReincarnation.java b/Mage.Sets/src/mage/cards/g/GlyphOfReincarnation.java index 2d4fafefeea..bb85c7ae878 100644 --- a/Mage.Sets/src/mage/cards/g/GlyphOfReincarnation.java +++ b/Mage.Sets/src/mage/cards/g/GlyphOfReincarnation.java @@ -20,6 +20,7 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInGraveyard; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.BlockedAttackerWatcher; @@ -46,7 +47,7 @@ public final class GlyphOfReincarnation extends CardImpl { this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, null, AfterCombatCondition.instance, "Cast this spell only after combat")); // Destroy all creatures that were blocked by target Wall this turn. They can’t be regenerated. For each creature that died this way, put a creature card from the graveyard of the player who controlled that creature the last time it became blocked by that Wall onto the battlefield under its owner’s control. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new GlyphOfReincarnationEffect()); } diff --git a/Mage.Sets/src/mage/cards/g/GnawingVermin.java b/Mage.Sets/src/mage/cards/g/GnawingVermin.java index 265cadccae4..ed9a70f7870 100644 --- a/Mage.Sets/src/mage/cards/g/GnawingVermin.java +++ b/Mage.Sets/src/mage/cards/g/GnawingVermin.java @@ -12,9 +12,12 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * * @author weirddan455 @@ -35,7 +38,7 @@ public final class GnawingVermin extends CardImpl { // When Gnawing Vermin dies, target creature you don't control gets -1/-1 until end of turn. ability = new DiesSourceTriggeredAbility(new BoostTargetEffect(-1, -1)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GoForBlood.java b/Mage.Sets/src/mage/cards/g/GoForBlood.java index 9829274798a..714bff806f4 100644 --- a/Mage.Sets/src/mage/cards/g/GoForBlood.java +++ b/Mage.Sets/src/mage/cards/g/GoForBlood.java @@ -7,11 +7,14 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -23,7 +26,7 @@ public final class GoForBlood extends CardImpl { // Target creature you control fights target creature you don't control. this.getSpellAbility().addEffect(new FightTargetsEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); // Cycling {1} this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{1}"))); diff --git a/Mage.Sets/src/mage/cards/g/GoForTheThroat.java b/Mage.Sets/src/mage/cards/g/GoForTheThroat.java index 1f145b3380d..f3ff694c212 100644 --- a/Mage.Sets/src/mage/cards/g/GoForTheThroat.java +++ b/Mage.Sets/src/mage/cards/g/GoForTheThroat.java @@ -6,6 +6,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -26,7 +27,7 @@ public final class GoForTheThroat extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}"); // Destroy target nonartifact creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinBurrows.java b/Mage.Sets/src/mage/cards/g/GoblinBurrows.java index 2899d5e9ab4..c5c627e33b7 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinBurrows.java +++ b/Mage.Sets/src/mage/cards/g/GoblinBurrows.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class GoblinBurrows extends CardImpl { // {1}{R}, {tap}: Target Goblin creature gets +2/+0 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(2,0, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{R}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinRacketeer.java b/Mage.Sets/src/mage/cards/g/GoblinRacketeer.java index a02c72ddb6f..7b0198c6748 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinRacketeer.java +++ b/Mage.Sets/src/mage/cards/g/GoblinRacketeer.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -35,7 +36,7 @@ public final class GoblinRacketeer extends CardImpl { // Whenever Goblin Racketeer attacks, you may goad target creature defending player controls. Ability ability = new AttacksTriggeredAbility(new GoadTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinSkycutter.java b/Mage.Sets/src/mage/cards/g/GoblinSkycutter.java index fa99a35d84e..4cfbe13ee95 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinSkycutter.java +++ b/Mage.Sets/src/mage/cards/g/GoblinSkycutter.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -42,7 +43,7 @@ public final class GoblinSkycutter extends CardImpl { // Sacrifice Goblin Skycutter: Goblin Skycutter deals 2 damage to target creature with flying. That creature loses flying until end of turn. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2, "it"), new SacrificeSourceCost()); ability.addEffect(new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn).setText("that creature loses flying until end of turn")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java b/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java index 51af39c4703..dee31fb7217 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java +++ b/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class GoblinTaskmaster extends CardImpl { // {1}{R}: Target Goblin creature gets +1/+0 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{R}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Morph {R} diff --git a/Mage.Sets/src/mage/cards/g/GoblinTunneler.java b/Mage.Sets/src/mage/cards/g/GoblinTunneler.java index 794fcf94f45..acbd8568247 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinTunneler.java +++ b/Mage.Sets/src/mage/cards/g/GoblinTunneler.java @@ -16,6 +16,7 @@ import mage.constants.ComparisonType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class GoblinTunneler extends CardImpl { // {tap}: Target creature with power 2 or less can't be blocked this turn. Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/Godsend.java b/Mage.Sets/src/mage/cards/g/Godsend.java index ccf9d841a03..7a08c002b29 100644 --- a/Mage.Sets/src/mage/cards/g/Godsend.java +++ b/Mage.Sets/src/mage/cards/g/Godsend.java @@ -23,6 +23,7 @@ import mage.game.combat.CombatGroup; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FirstTargetPointer; import mage.target.targetpointer.FixedTarget; @@ -117,7 +118,7 @@ class GodsendTriggeredAbility extends TriggeredAbilityImpl { uuidPredicates.add(new PermanentIdPredicate(creatureId)); } filter.add(Predicates.or(uuidPredicates)); - this.getTargets().add(new TargetCreaturePermanent(filter)); + this.getTargets().add(new TargetPermanent(filter)); } return true; } diff --git a/Mage.Sets/src/mage/cards/g/GolemArtisan.java b/Mage.Sets/src/mage/cards/g/GolemArtisan.java index 893ec99853d..e4fbc4bc4f7 100644 --- a/Mage.Sets/src/mage/cards/g/GolemArtisan.java +++ b/Mage.Sets/src/mage/cards/g/GolemArtisan.java @@ -17,10 +17,13 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE; + /** * @author nantuko */ @@ -35,13 +38,13 @@ public final class GolemArtisan extends CardImpl { // {2}: Target artifact creature gets +1/+1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_ARTIFACT_CREATURE)); this.addAbility(ability); // {2}: Target artifact creature gains your choice of flying, trample, or haste until end of turn. ability = new SimpleActivatedAbility(new GainsChoiceOfAbilitiesEffect( FlyingAbility.getInstance(), TrampleAbility.getInstance(), HasteAbility.getInstance()), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_ARTIFACT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GossamerChains.java b/Mage.Sets/src/mage/cards/g/GossamerChains.java index 56afe0a9dba..5cc3c833f3a 100644 --- a/Mage.Sets/src/mage/cards/g/GossamerChains.java +++ b/Mage.Sets/src/mage/cards/g/GossamerChains.java @@ -13,6 +13,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.UnblockedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class GossamerChains extends CardImpl { // Return Gossamer Chains to its owner's hand: Prevent all combat damage that would be dealt by target unblocked creature this turn. Ability ability = new SimpleActivatedAbility(new PreventDamageByTargetEffect(Duration.EndOfTurn, true), new ReturnToHandFromBattlefieldSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java b/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java index 81e25b92ed2..73ee79d0453 100644 --- a/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java +++ b/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.MonocoloredPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -31,7 +32,7 @@ public final class GovernTheGuildless extends CardImpl { // Gain control of target monocolored creature. this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.Custom)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Forecast - {1}{U}, Reveal Govern the Guildless from your hand: Target creature becomes the color or colors of your choice until end of turn. ForecastAbility ability = new ForecastAbility(new BecomesColorOrColorsTargetEffect(Duration.EndOfTurn), new ManaCostsImpl<>("{1}{U}")); diff --git a/Mage.Sets/src/mage/cards/g/GrapeshotCatapult.java b/Mage.Sets/src/mage/cards/g/GrapeshotCatapult.java index 12561052632..ae8d84dce82 100644 --- a/Mage.Sets/src/mage/cards/g/GrapeshotCatapult.java +++ b/Mage.Sets/src/mage/cards/g/GrapeshotCatapult.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class GrapeshotCatapult extends CardImpl { // {tap}: Grapeshot Catapult deals 1 damage to target creature with flying. Ability activatedAbility = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost()); - activatedAbility.addTarget(new TargetCreaturePermanent(filter)); + activatedAbility.addTarget(new TargetPermanent(filter)); this.addAbility(activatedAbility); } diff --git a/Mage.Sets/src/mage/cards/g/GraspOfTheHieromancer.java b/Mage.Sets/src/mage/cards/g/GraspOfTheHieromancer.java index 13ce22155bc..2aafbb2a977 100644 --- a/Mage.Sets/src/mage/cards/g/GraspOfTheHieromancer.java +++ b/Mage.Sets/src/mage/cards/g/GraspOfTheHieromancer.java @@ -1,7 +1,5 @@ - package mage.cards.g; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleStaticAbility; @@ -13,12 +11,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; @@ -26,14 +19,15 @@ import mage.game.events.GameEvent; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class GraspOfTheHieromancer extends CardImpl { public GraspOfTheHieromancer(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}"); this.subtype.add(SubType.AURA); // Enchant creature @@ -42,18 +36,18 @@ public final class GraspOfTheHieromancer extends CardImpl { this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); Ability ability = new EnchantAbility(auraTarget); this.addAbility(ability); - + // Enchanted creature gets +1/+1 and has "Whenever this creature attacks, tap target creature defending player controls." ability = new SimpleStaticAbility(new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield)); - Ability gainedAbility = new GraspOfTheHieromancerTriggeredAbility(new TapTargetEffect(), false); - gainedAbility.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature defending player controls"))); + Ability gainedAbility = new GraspOfTheHieromancerTriggeredAbility(new TapTargetEffect(), false); + gainedAbility.addTarget(new TargetPermanent(new FilterCreaturePermanent("creature defending player controls"))); Effect effect = new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA); effect.setText("and has \"Whenever this creature attacks, tap target creature defending player controls.\""); ability.addEffect(effect); this.addAbility(ability); - + } - + private GraspOfTheHieromancer(final GraspOfTheHieromancer card) { super(card); } @@ -65,9 +59,8 @@ public final class GraspOfTheHieromancer extends CardImpl { } class GraspOfTheHieromancerTriggeredAbility extends TriggeredAbilityImpl { - - + public GraspOfTheHieromancerTriggeredAbility(Effect effect, boolean optional) { super(Zone.BATTLEFIELD, effect, optional); } @@ -83,17 +76,16 @@ class GraspOfTheHieromancerTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - if (game.getCombat().getAttackers().contains(getSourceId()) ) { + if (game.getCombat().getAttackers().contains(getSourceId())) { UUID defendingPlayerId = game.getCombat().getDefendingPlayerId(getSourceId(), game); - if (defendingPlayerId != null) { + if (defendingPlayerId != null) { this.getTargets().clear(); FilterCreaturePermanent filter = new FilterCreaturePermanent("creature defending player controls"); UUID defenderId = game.getCombat().getDefenderId(getSourceId()); filter.add(new ControllerIdPredicate(defenderId)); - TargetCreaturePermanent target = new TargetCreaturePermanent(filter); - this.addTarget(target); + this.addTarget(new TargetPermanent(filter)); return true; - } + } } return false; } diff --git a/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java b/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java index 0536fa34cb4..64dc8f3e3a2 100644 --- a/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java +++ b/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class GrasslandCrusader extends CardImpl { // {tap}: Target Elf or Soldier creature gets +2/+2 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GravelSlinger.java b/Mage.Sets/src/mage/cards/g/GravelSlinger.java index ab01098cca4..8f40f40e767 100644 --- a/Mage.Sets/src/mage/cards/g/GravelSlinger.java +++ b/Mage.Sets/src/mage/cards/g/GravelSlinger.java @@ -15,6 +15,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class GravelSlinger extends CardImpl { // {tap}: Gravel Slinger deals 1 damage to target attacking or blocking creature. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.addAbility(ability); // Morph {1}{W} this.addAbility(new MorphAbility(this, new ManaCostsImpl<>("{1}{W}"))); diff --git a/Mage.Sets/src/mage/cards/g/GravityNegator.java b/Mage.Sets/src/mage/cards/g/GravityNegator.java index 8b90a1c8ba7..5d908c291a2 100644 --- a/Mage.Sets/src/mage/cards/g/GravityNegator.java +++ b/Mage.Sets/src/mage/cards/g/GravityNegator.java @@ -16,8 +16,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author fireshoes @@ -40,7 +43,7 @@ public final class GravityNegator extends CardImpl { // Whenenever Gravity Negator attacks, you may pay {C}. If you do, another target creature gains flying until end of turn. Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{C}")), false, "Whenever {this} attacks, you may pay {C}. If you do, another target creature gains flying until end of turn."); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GrenzoHavocRaiser.java b/Mage.Sets/src/mage/cards/g/GrenzoHavocRaiser.java index 3b53254da7f..2f5e42808ec 100644 --- a/Mage.Sets/src/mage/cards/g/GrenzoHavocRaiser.java +++ b/Mage.Sets/src/mage/cards/g/GrenzoHavocRaiser.java @@ -19,6 +19,7 @@ import mage.game.events.DamagedEvent; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.DefineByTriggerTargetAdjuster; import mage.target.targetpointer.FixedTarget; @@ -109,7 +110,7 @@ class GrenzoHavocRaiserTriggeredAbility extends TriggeredAbilityImpl { FilterCreaturePermanent filter = new FilterCreaturePermanent("creature " + damagedPlayer.getLogName() + " controls"); filter.add(new ControllerIdPredicate(damagedPlayer.getId())); this.getTargets().clear(); - this.addTarget(new TargetCreaturePermanent(filter)); + this.addTarget(new TargetPermanent(filter)); for (Effect effect : this.getAllEffects()) { if (effect instanceof GrenzoHavocRaiserEffect) { effect.setTargetPointer(new FixedTarget(event.getPlayerId())); diff --git a/Mage.Sets/src/mage/cards/g/GrimPoppet.java b/Mage.Sets/src/mage/cards/g/GrimPoppet.java index c55993e5700..dd090b52cb8 100644 --- a/Mage.Sets/src/mage/cards/g/GrimPoppet.java +++ b/Mage.Sets/src/mage/cards/g/GrimPoppet.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -42,7 +43,7 @@ public final class GrimPoppet extends CardImpl { // Remove a -1/-1 counter from Grim Poppet: Put a -1/-1 counter on another target creature. Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.M1M1.createInstance()), new RemoveCountersSourceCost(CounterType.M1M1.createInstance())); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GrimgrinCorpseBorn.java b/Mage.Sets/src/mage/cards/g/GrimgrinCorpseBorn.java index b462f8fddc2..c84496798d5 100644 --- a/Mage.Sets/src/mage/cards/g/GrimgrinCorpseBorn.java +++ b/Mage.Sets/src/mage/cards/g/GrimgrinCorpseBorn.java @@ -20,6 +20,7 @@ import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -60,7 +61,7 @@ public final class GrimgrinCorpseBorn extends CardImpl { // Whenever Grimgrin attacks, destroy target creature defending player controls, then put a +1/+1 counter on Grimgrin. ability = new AttacksTriggeredAbility(new DestroyTargetEffect()); ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()).concatBy(", then")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GrotagSiegeRunner.java b/Mage.Sets/src/mage/cards/g/GrotagSiegeRunner.java index cde46db7dc5..83930a294c6 100644 --- a/Mage.Sets/src/mage/cards/g/GrotagSiegeRunner.java +++ b/Mage.Sets/src/mage/cards/g/GrotagSiegeRunner.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -44,7 +45,7 @@ public final class GrotagSiegeRunner extends CardImpl { Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{R}")); ability.addCost(new SacrificeSourceCost()); ability.addEffect(new DamageTargetControllerEffect(2)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GroundRift.java b/Mage.Sets/src/mage/cards/g/GroundRift.java index 7e355382293..b99262affd7 100644 --- a/Mage.Sets/src/mage/cards/g/GroundRift.java +++ b/Mage.Sets/src/mage/cards/g/GroundRift.java @@ -12,6 +12,7 @@ import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -31,7 +32,7 @@ public final class GroundRift extends CardImpl { // Target creature without flying can't block this turn. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn)); // Storm this.addAbility(new StormAbility()); diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfTazeem.java b/Mage.Sets/src/mage/cards/g/GuardianOfTazeem.java index 686c6f475d8..e3591de4522 100644 --- a/Mage.Sets/src/mage/cards/g/GuardianOfTazeem.java +++ b/Mage.Sets/src/mage/cards/g/GuardianOfTazeem.java @@ -18,9 +18,12 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author fireshoes @@ -38,7 +41,7 @@ public final class GuardianOfTazeem extends CardImpl { // Landfall — Whenever a land enters the battlefield under you control, tap target creature an opponent controls. If that land is an Island, that creature doesn't untap during its controller's next untap step. Ability ability = new GuardianOfTazeemTriggeredAbility(); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java b/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java index 874b272b4a3..598f25bf9f9 100644 --- a/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java +++ b/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java @@ -16,10 +16,13 @@ import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author jeffwadsworth */ @@ -37,7 +40,7 @@ public final class GwafaHazidProfiteer extends CardImpl { // {W}{U}, {tap}: Put a bribery counter on target creature you don't control. Its controller draws a card. Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.BRIBERY.createInstance()), new ManaCostsImpl<>("{W}{U}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); ability.addEffect(new DrawCardTargetControllerEffect(1)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/h/HaazdaSnareSquad.java b/Mage.Sets/src/mage/cards/h/HaazdaSnareSquad.java index c86cdfc3a12..2f017e789b4 100644 --- a/Mage.Sets/src/mage/cards/h/HaazdaSnareSquad.java +++ b/Mage.Sets/src/mage/cards/h/HaazdaSnareSquad.java @@ -14,10 +14,13 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -37,7 +40,7 @@ public final class HaazdaSnareSquad extends CardImpl { // Whenever Haazda Snare Squad attacks you may pay {W}. If you do, tap target creature an opponent controls. Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(new TapTargetEffect(), new ManaCostsImpl<>("{W}")),false, "Whenever {this} attacks, you may pay {W}. If you do, tap target creature an opponent controls."); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); + Target target = new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/h/Halfdane.java b/Mage.Sets/src/mage/cards/h/Halfdane.java index 0271882d98f..27530170b0d 100644 --- a/Mage.Sets/src/mage/cards/h/Halfdane.java +++ b/Mage.Sets/src/mage/cards/h/Halfdane.java @@ -15,6 +15,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -40,7 +41,7 @@ public final class Halfdane extends CardImpl { // At the beginning of your upkeep, change Halfdane's base power and toughness to the power and toughness of target creature other than Halfdane until the end of your next upkeep. Ability ability = new BeginningOfUpkeepTriggeredAbility(new HalfdaneUpkeepEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HallowedRespite.java b/Mage.Sets/src/mage/cards/h/HallowedRespite.java index 62cc4fff36e..8097408ce27 100644 --- a/Mage.Sets/src/mage/cards/h/HallowedRespite.java +++ b/Mage.Sets/src/mage/cards/h/HallowedRespite.java @@ -17,6 +17,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class HallowedRespite extends CardImpl { // Exile target nonlegendary creature, then return it to the battlefield under its owner's control. If it entered under your control, put a +1/+1 counter on it. Otherwise, tap it. this.getSpellAbility().addEffect(new ExileThenReturnTargetEffect(false, false)); this.getSpellAbility().addEffect(new HallowedRespiteEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Flashback {1}{W}{U} this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{1}{W}{U}"))); diff --git a/Mage.Sets/src/mage/cards/h/HaloHunter.java b/Mage.Sets/src/mage/cards/h/HaloHunter.java index bb60c987e06..f57522afc48 100644 --- a/Mage.Sets/src/mage/cards/h/HaloHunter.java +++ b/Mage.Sets/src/mage/cards/h/HaloHunter.java @@ -12,6 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -35,7 +36,7 @@ public final class HaloHunter extends CardImpl { this.addAbility(IntimidateAbility.getInstance()); Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HammerheadCorvette.java b/Mage.Sets/src/mage/cards/h/HammerheadCorvette.java index 15158821bf1..2d3bd991552 100644 --- a/Mage.Sets/src/mage/cards/h/HammerheadCorvette.java +++ b/Mage.Sets/src/mage/cards/h/HammerheadCorvette.java @@ -16,6 +16,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -47,7 +48,7 @@ public final class HammerheadCorvette extends CardImpl { Ability ability = new AttacksTriggeredAbility(effect1, true, "Whenever {this} attacks, you may uptap target Starship creature defending player controls and have that creature block {this} this turn if able"); ability.addEffect(effect2); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HammerheimDeadeye.java b/Mage.Sets/src/mage/cards/h/HammerheimDeadeye.java index fde29bbccc2..dcd68bafae4 100644 --- a/Mage.Sets/src/mage/cards/h/HammerheimDeadeye.java +++ b/Mage.Sets/src/mage/cards/h/HammerheimDeadeye.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class HammerheimDeadeye extends CardImpl { this.addAbility(new EchoAbility("{5}{R}")); // When Hammerheim Deadeye enters the battlefield, destroy target creature with flying. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HanSolo.java b/Mage.Sets/src/mage/cards/h/HanSolo.java index fe7d6413af0..e8f427eb6e0 100644 --- a/Mage.Sets/src/mage/cards/h/HanSolo.java +++ b/Mage.Sets/src/mage/cards/h/HanSolo.java @@ -13,6 +13,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class HanSolo extends CardImpl { effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn); effect.setText("and gains haste until end of turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HandOfDeath.java b/Mage.Sets/src/mage/cards/h/HandOfDeath.java index 91abfc5034b..7d3920722dd 100644 --- a/Mage.Sets/src/mage/cards/h/HandOfDeath.java +++ b/Mage.Sets/src/mage/cards/h/HandOfDeath.java @@ -6,8 +6,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author anonymous @@ -18,7 +21,7 @@ public final class HandOfDeath extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{B}"); // Destroy target nonblack creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/h/HandsOfBinding.java b/Mage.Sets/src/mage/cards/h/HandsOfBinding.java index 78aa695dd1a..a66e57c01f7 100644 --- a/Mage.Sets/src/mage/cards/h/HandsOfBinding.java +++ b/Mage.Sets/src/mage/cards/h/HandsOfBinding.java @@ -8,8 +8,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author Plopman @@ -22,7 +25,7 @@ public final class HandsOfBinding extends CardImpl { //Tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step. this.getSpellAbility().addEffect(new TapTargetEffect()); this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect("that creature")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); //Cipher this.getSpellAbility().addEffect(new CipherEffect()); } diff --git a/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java b/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java index 3f6d28d94fa..64fde8b543d 100644 --- a/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java +++ b/Mage.Sets/src/mage/cards/h/HarbingerOfTheTides.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -42,7 +43,7 @@ public final class HarbingerOfTheTides extends CardImpl { // When Harbinger of the Tides enters the battlefield, you may return target tapped creature an opponent controls to its owner's hand. Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HateWeaver.java b/Mage.Sets/src/mage/cards/h/HateWeaver.java index feccdddab81..362ea023329 100644 --- a/Mage.Sets/src/mage/cards/h/HateWeaver.java +++ b/Mage.Sets/src/mage/cards/h/HateWeaver.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class HateWeaver extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 0, Duration.EndOfTurn), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HeartPiercerBow.java b/Mage.Sets/src/mage/cards/h/HeartPiercerBow.java index 72b32c2cd14..52cb3ab0a6d 100644 --- a/Mage.Sets/src/mage/cards/h/HeartPiercerBow.java +++ b/Mage.Sets/src/mage/cards/h/HeartPiercerBow.java @@ -12,6 +12,7 @@ import mage.constants.Outcome; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsAttachedAttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -33,7 +34,7 @@ public final class HeartPiercerBow extends CardImpl { // Whenever equipped creature attacks, Heart-Piercer Bow deals 1 damage to target creature defending player controls. Ability ability = new AttacksAttachedTriggeredAbility(new DamageTargetEffect(1)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Equip {1} diff --git a/Mage.Sets/src/mage/cards/h/HeartWolf.java b/Mage.Sets/src/mage/cards/h/HeartWolf.java index 74136e35d13..abf8410c7e6 100644 --- a/Mage.Sets/src/mage/cards/h/HeartWolf.java +++ b/Mage.Sets/src/mage/cards/h/HeartWolf.java @@ -19,6 +19,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -54,7 +55,7 @@ public final class HeartWolf extends CardImpl { ); ability.addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn).setText("and gains first strike until end of turn")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.addEffect(new CreateDelayedTriggeredAbilityEffect(new HeartWolfDelayedTriggeredAbility(), true)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HearthCharm.java b/Mage.Sets/src/mage/cards/h/HearthCharm.java index 427b8409585..af2c34646a0 100644 --- a/Mage.Sets/src/mage/cards/h/HearthCharm.java +++ b/Mage.Sets/src/mage/cards/h/HearthCharm.java @@ -13,8 +13,11 @@ import mage.constants.Duration; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE; + /** * * @author LoneFox @@ -32,13 +35,13 @@ public final class HearthCharm extends CardImpl { // Choose one - Destroy target artifact creature this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_ARTIFACT_CREATURE)); // or attacking creatures get +1/+0 until end of turn Mode mode = new Mode(new BoostAllEffect(1, 0, Duration.EndOfTurn, StaticFilters.FILTER_ATTACKING_CREATURES, false)); this.getSpellAbility().addMode(mode); // or target creature with power 2 or less is unblockable this turn. mode = new Mode(new CantBeBlockedTargetEffect()); - mode.addTarget(new TargetCreaturePermanent(filter)); + mode.addTarget(new TargetPermanent(filter)); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/h/HearthcageGiant.java b/Mage.Sets/src/mage/cards/h/HearthcageGiant.java index dc2d93b9588..3b6988d9bc3 100644 --- a/Mage.Sets/src/mage/cards/h/HearthcageGiant.java +++ b/Mage.Sets/src/mage/cards/h/HearthcageGiant.java @@ -18,6 +18,7 @@ import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.game.permanent.token.ElementalShamanToken; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -48,7 +49,7 @@ public final class HearthcageGiant extends CardImpl { //Sacrifice an Elemental: Target Giant creature gets +3/+1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(3, 1, Duration.EndOfTurn), new SacrificeTargetCost(filterElemental)); - ability.addTarget(new TargetCreaturePermanent(filterGiant)); + ability.addTarget(new TargetPermanent(filterGiant)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HeavyInfantry.java b/Mage.Sets/src/mage/cards/h/HeavyInfantry.java index 4ee8a10b8c1..acab80545c4 100644 --- a/Mage.Sets/src/mage/cards/h/HeavyInfantry.java +++ b/Mage.Sets/src/mage/cards/h/HeavyInfantry.java @@ -11,8 +11,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -28,7 +31,7 @@ public final class HeavyInfantry extends CardImpl { // When Heavy Infantry enters the battlefield, tap target creature an opponent controls. Ability ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HeliodsEmissary.java b/Mage.Sets/src/mage/cards/h/HeliodsEmissary.java index 39c1aac2ece..18f4430cf9d 100644 --- a/Mage.Sets/src/mage/cards/h/HeliodsEmissary.java +++ b/Mage.Sets/src/mage/cards/h/HeliodsEmissary.java @@ -19,8 +19,11 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -38,11 +41,11 @@ public final class HeliodsEmissary extends CardImpl { this.addAbility(new BestowAbility(this, "{6}{W}")); // Whenever Heliod's Emissary or enchanted creature attacks, tap target creature an opponent controls. Ability ability = new AttacksTriggeredAbility(new TapTargetEffect(), false); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); + Target target = new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE); ability.addTarget(target); this.addAbility(ability); ability = new AttacksAttachedTriggeredAbility(new TapTargetEffect(), AttachmentType.AURA, false); - target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); + target = new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE); ability.addTarget(target); this.addAbility(ability); // Enchanted creature gets +3/+3. diff --git a/Mage.Sets/src/mage/cards/h/HeliumSquirter.java b/Mage.Sets/src/mage/cards/h/HeliumSquirter.java index edb6b49f36e..cf8c96e33cf 100644 --- a/Mage.Sets/src/mage/cards/h/HeliumSquirter.java +++ b/Mage.Sets/src/mage/cards/h/HeliumSquirter.java @@ -16,8 +16,11 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_P1P1; + /** * * @author JotaPeRL @@ -36,7 +39,7 @@ public final class HeliumSquirter extends CardImpl { // {1}: Target creature with a +1/+1 counter on it gains flying until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(1)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_P1P1)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_P1P1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/Helvault.java b/Mage.Sets/src/mage/cards/h/Helvault.java index 2e5d365b095..42eb33d43a2 100644 --- a/Mage.Sets/src/mage/cards/h/Helvault.java +++ b/Mage.Sets/src/mage/cards/h/Helvault.java @@ -12,11 +12,14 @@ import mage.constants.CardType; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author North */ @@ -35,7 +38,7 @@ public final class Helvault extends CardImpl { // {7}, {T}: Exile target creature you don't control. ability = new SimpleActivatedAbility(new ExileTargetForSourceEffect(), new GenericManaCost(7)); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); // When Helvault is put into a graveyard from the battlefield, return all cards exiled with it to the battlefield under their owners' control. diff --git a/Mage.Sets/src/mage/cards/h/HerosDemise.java b/Mage.Sets/src/mage/cards/h/HerosDemise.java index f44114f97d2..bec797fc7c3 100644 --- a/Mage.Sets/src/mage/cards/h/HerosDemise.java +++ b/Mage.Sets/src/mage/cards/h/HerosDemise.java @@ -8,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -27,7 +28,7 @@ public final class HerosDemise extends CardImpl { // Destroy target legendary creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private HerosDemise(final HerosDemise card) { diff --git a/Mage.Sets/src/mage/cards/h/Hexavus.java b/Mage.Sets/src/mage/cards/h/Hexavus.java index 950797b7b41..d8d53b76ee3 100644 --- a/Mage.Sets/src/mage/cards/h/Hexavus.java +++ b/Mage.Sets/src/mage/cards/h/Hexavus.java @@ -21,6 +21,8 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author PurpleCrowbar */ @@ -45,7 +47,7 @@ public final class Hexavus extends CardImpl { new AddCountersTargetEffect(CounterType.FLYING.createInstance()), new GenericManaCost(1) ); ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance())); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); // {1}, Remove a counter from another creature you control: Put a +1/+1 counter on Hexavus. diff --git a/Mage.Sets/src/mage/cards/h/HiddenDragonslayer.java b/Mage.Sets/src/mage/cards/h/HiddenDragonslayer.java index 075c3fe919d..0d09b0e3d84 100644 --- a/Mage.Sets/src/mage/cards/h/HiddenDragonslayer.java +++ b/Mage.Sets/src/mage/cards/h/HiddenDragonslayer.java @@ -17,6 +17,7 @@ import mage.constants.ComparisonType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -47,7 +48,7 @@ public final class HiddenDragonslayer extends CardImpl { // When Hidden Dragonslayer is turned face up, destroy target creature with power 4 or greater an opponent controls. Ability ability = new TurnedFaceUpSourceTriggeredAbility(new DestroyTargetEffect(), false, false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HideousEnd.java b/Mage.Sets/src/mage/cards/h/HideousEnd.java index 49c15b446f2..d6f7654d76a 100644 --- a/Mage.Sets/src/mage/cards/h/HideousEnd.java +++ b/Mage.Sets/src/mage/cards/h/HideousEnd.java @@ -7,8 +7,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author North @@ -19,7 +22,7 @@ public final class HideousEnd extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}{B}"); // Destroy target nonblack creature. Its controller loses 2 life. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new LoseLifeTargetControllerEffect(2)); } diff --git a/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java b/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java index d04baeffddf..5336720e886 100644 --- a/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java +++ b/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java @@ -18,6 +18,7 @@ import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCreaturePermanent; @@ -52,7 +53,7 @@ public final class HigureTheStillWind extends CardImpl { // {2}: Target Ninja creature can't be blocked this turn. Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(filterCreature)); + ability.addTarget(new TargetPermanent(filterCreature)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HomaridShaman.java b/Mage.Sets/src/mage/cards/h/HomaridShaman.java index e954f1ed0da..c49b89824b4 100644 --- a/Mage.Sets/src/mage/cards/h/HomaridShaman.java +++ b/Mage.Sets/src/mage/cards/h/HomaridShaman.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class HomaridShaman extends CardImpl { // {U}: Tap target green creature. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{U}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HoofSkulkin.java b/Mage.Sets/src/mage/cards/h/HoofSkulkin.java index 8f333f5b79b..1807ef2ff62 100644 --- a/Mage.Sets/src/mage/cards/h/HoofSkulkin.java +++ b/Mage.Sets/src/mage/cards/h/HoofSkulkin.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class HoofSkulkin extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn), new GenericManaCost(3)); - ability.addTarget(new TargetCreaturePermanent(filterGreenCreature)); + ability.addTarget(new TargetPermanent(filterGreenCreature)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HopeAndGlory.java b/Mage.Sets/src/mage/cards/h/HopeAndGlory.java index 5beaad2d784..2eaaebf0829 100644 --- a/Mage.Sets/src/mage/cards/h/HopeAndGlory.java +++ b/Mage.Sets/src/mage/cards/h/HopeAndGlory.java @@ -1,7 +1,5 @@ - package mage.cards.h; -import java.util.UUID; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; @@ -10,15 +8,15 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author Plopman */ public final class HopeAndGlory extends CardImpl { public HopeAndGlory(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); - + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}"); // Untap two target creatures. Each of them gets +1/+1 until end of turn. this.getSpellAbility().addEffect(new UntapTargetEffect()); diff --git a/Mage.Sets/src/mage/cards/h/HorobisWhisper.java b/Mage.Sets/src/mage/cards/h/HorobisWhisper.java index f26312d400b..70c2b4cc48d 100644 --- a/Mage.Sets/src/mage/cards/h/HorobisWhisper.java +++ b/Mage.Sets/src/mage/cards/h/HorobisWhisper.java @@ -12,11 +12,14 @@ import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.StaticFilters; import mage.filter.common.FilterLandPermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LevelX2 @@ -36,7 +39,7 @@ public final class HorobisWhisper extends CardImpl { // If you control a Swamp, destroy target nonblack creature. this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DestroyTargetEffect(), new PermanentsOnTheBattlefieldCondition(filterCondition),"If you control a Swamp, destroy target nonblack creature")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK).withChooseHint("destroy if you control a Swamp")); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK).withChooseHint("destroy if you control a Swamp")); // Splice onto Arcane-Exile four cards from your graveyard. this.addAbility(new SpliceAbility(SpliceAbility.ARCANE, new ExileFromGraveCost(new TargetCardInYourGraveyard(4,4, new FilterCard("cards"))))); diff --git a/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java b/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java index 989f256ab96..5e2b61d33a8 100644 --- a/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java +++ b/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java @@ -15,6 +15,7 @@ import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -38,7 +39,7 @@ public final class HorrorOfHorrors extends CardImpl { // Sacrifice a Swamp: Regenerate target black creature. Ability ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new SacrificeTargetCost(filter1)); - ability.addTarget(new TargetCreaturePermanent(filter2)); + ability.addTarget(new TargetPermanent(filter2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java b/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java index 006656415d0..904d47ffe53 100644 --- a/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java +++ b/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java @@ -21,6 +21,8 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -47,7 +49,7 @@ public final class HuatliDinosaurKnight extends CardImpl { // -3: Target Dinosaur you control deals damage equal to its power to target creature you don't control. ability = new LoyaltyAbility(new DamageWithPowerFromOneToAnotherTargetEffect(), -3); ability.addTarget(new TargetPermanent(filter)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); // -7: Dinosaurs you control get +4/+4 until end of turn. diff --git a/Mage.Sets/src/mage/cards/h/HumbleTheBrute.java b/Mage.Sets/src/mage/cards/h/HumbleTheBrute.java index be68937a031..4a3d0de5d16 100644 --- a/Mage.Sets/src/mage/cards/h/HumbleTheBrute.java +++ b/Mage.Sets/src/mage/cards/h/HumbleTheBrute.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class HumbleTheBrute extends CardImpl { // Destroy target creature with power 4 or greater. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Investigate. this.getSpellAbility().addEffect(new InvestigateEffect().concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/h/HuntDown.java b/Mage.Sets/src/mage/cards/h/HuntDown.java index 7aacfd24871..d66059f3131 100644 --- a/Mage.Sets/src/mage/cards/h/HuntDown.java +++ b/Mage.Sets/src/mage/cards/h/HuntDown.java @@ -11,6 +11,7 @@ import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.BlockedAttackerWatcher; @@ -31,8 +32,8 @@ public final class HuntDown extends CardImpl { // Target creature blocks target creature this turn if able. this.getSpellAbility().addEffect(new HuntDownEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterMustBlock)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterToBeBlocked)); + this.getSpellAbility().addTarget(new TargetPermanent(filterMustBlock)); + this.getSpellAbility().addTarget(new TargetPermanent(filterToBeBlocked)); } diff --git a/Mage.Sets/src/mage/cards/h/HuntTheWeak.java b/Mage.Sets/src/mage/cards/h/HuntTheWeak.java index 7243ab70a31..e678cede5d2 100644 --- a/Mage.Sets/src/mage/cards/h/HuntTheWeak.java +++ b/Mage.Sets/src/mage/cards/h/HuntTheWeak.java @@ -7,11 +7,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.counters.CounterType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -27,7 +30,7 @@ public final class HuntTheWeak extends CardImpl { "(Each deals damage equal to its power to the other.)" )); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private HuntTheWeak(final HuntTheWeak card) { diff --git a/Mage.Sets/src/mage/cards/h/HunterOfEyeblights.java b/Mage.Sets/src/mage/cards/h/HunterOfEyeblights.java index 1656e05c8a3..a73d454e339 100644 --- a/Mage.Sets/src/mage/cards/h/HunterOfEyeblights.java +++ b/Mage.Sets/src/mage/cards/h/HunterOfEyeblights.java @@ -16,10 +16,13 @@ import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.CounterAnyPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author Styxo */ @@ -40,13 +43,13 @@ public final class HunterOfEyeblights extends CardImpl { // When Hunter of Eyeblights enters the battlefield, put a +1/+1 counter on target creature you don't control Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); //{B}{2},{T}: Destroy target creature with a counter on it. Ability ability2 = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{2}{B}")); ability2.addCost(new TapSourceCost()); - ability2.addTarget(new TargetCreaturePermanent(filter)); + ability2.addTarget(new TargetPermanent(filter)); this.addAbility(ability2); } diff --git a/Mage.Sets/src/mage/cards/h/HuntingDrake.java b/Mage.Sets/src/mage/cards/h/HuntingDrake.java index 2cf3e212de2..6e102407b8c 100644 --- a/Mage.Sets/src/mage/cards/h/HuntingDrake.java +++ b/Mage.Sets/src/mage/cards/h/HuntingDrake.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class HuntingDrake extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Hunting Drake enters the battlefield, put target red or green creature on top of its owner's library. Ability ability = new EntersBattlefieldTriggeredAbility(new PutOnLibraryTargetEffect(true)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HuntingKavu.java b/Mage.Sets/src/mage/cards/h/HuntingKavu.java index 071d00b2bfc..42c90188b4d 100644 --- a/Mage.Sets/src/mage/cards/h/HuntingKavu.java +++ b/Mage.Sets/src/mage/cards/h/HuntingKavu.java @@ -18,6 +18,7 @@ import mage.constants.Zone; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.common.FilterCreatureAttackingYou; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class HuntingKavu extends CardImpl { Ability ability = new SimpleActivatedAbility(new ExileSourceEffect(), new ManaCostsImpl<>("{1}{R}{G}")); ability.addCost(new TapSourceCost()); ability.addEffect(new ExileTargetEffect().setText("and target creature without flying that's attacking you")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java b/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java index c86b7a5b6e2..31c9d479699 100644 --- a/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java +++ b/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java @@ -14,6 +14,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class IcatianLieutenant extends CardImpl { // {1}{W}: Target Soldier creature gets +1/+0 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/IceFloe.java b/Mage.Sets/src/mage/cards/i/IceFloe.java index 2f3a53dcf35..3e3d91fff18 100644 --- a/Mage.Sets/src/mage/cards/i/IceFloe.java +++ b/Mage.Sets/src/mage/cards/i/IceFloe.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.common.FilterCreatureAttackingYou; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class IceFloe extends CardImpl { // {T}: Tap target creature without flying that's attacking you. It doesn't untap during its controller's untap step for as long as Ice Floe remains tapped. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.addEffect(new DontUntapAsLongAsSourceTappedEffect()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/IcefallRegent.java b/Mage.Sets/src/mage/cards/i/IcefallRegent.java index 4454729a6f6..dfe304b20f0 100644 --- a/Mage.Sets/src/mage/cards/i/IcefallRegent.java +++ b/Mage.Sets/src/mage/cards/i/IcefallRegent.java @@ -16,10 +16,13 @@ import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.FilterCard; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author fireshoes */ @@ -38,7 +41,7 @@ public final class IcefallRegent extends CardImpl { // That creature doesn't untap during its controller's untap step for as long as you control Icefall Regent. Ability ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect(), false); ability.addEffect(new DontUntapInControllersUntapStepTargetEffect(Duration.WhileControlled)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); // Spells your opponents cast that target Icefall Regent cost {2} more to cast. diff --git a/Mage.Sets/src/mage/cards/i/IcefeatherAven.java b/Mage.Sets/src/mage/cards/i/IcefeatherAven.java index 17026022fb1..9f8eced1780 100644 --- a/Mage.Sets/src/mage/cards/i/IcefeatherAven.java +++ b/Mage.Sets/src/mage/cards/i/IcefeatherAven.java @@ -14,8 +14,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author LevelX2 @@ -36,7 +39,7 @@ public final class IcefeatherAven extends CardImpl { this.addAbility(new MorphAbility(this, new ManaCostsImpl<>("{1}{G}{U}"))); // When Icefeather Aven is turned face up, you may return another target creature to its owner's hand. Ability ability = new TurnedFaceUpSourceTriggeredAbility(new ReturnToHandTargetEffect(), false, true); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/InactionInjunction.java b/Mage.Sets/src/mage/cards/i/InactionInjunction.java index 11703b984be..cf98a54f3b7 100644 --- a/Mage.Sets/src/mage/cards/i/InactionInjunction.java +++ b/Mage.Sets/src/mage/cards/i/InactionInjunction.java @@ -1,40 +1,37 @@ - package mage.cards.i; - -import java.util.UUID; + import mage.abilities.effects.common.DetainTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.StaticFilters; -import mage.target.common.TargetCreaturePermanent; - +import mage.target.common.TargetOpponentsCreaturePermanent; + +import java.util.UUID; + /** - * * @author LevelX2 */ public final class InactionInjunction extends CardImpl { - + public InactionInjunction(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}"); + // Detain target creature an opponent controls. // (Until your next turn, that creature can't attack or block and its activated abilities can't be activated.) this.getSpellAbility().addEffect(new DetainTargetEffect()); - TargetCreaturePermanent target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); - this.getSpellAbility().addTarget(target); - + this.getSpellAbility().addTarget(new TargetOpponentsCreaturePermanent()); + // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); } - + private InactionInjunction(final InactionInjunction card) { super(card); } - + @Override public InactionInjunction copy() { return new InactionInjunction(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/i/IncrementalBlight.java b/Mage.Sets/src/mage/cards/i/IncrementalBlight.java index b6559225a3f..343a3e7f036 100644 --- a/Mage.Sets/src/mage/cards/i/IncrementalBlight.java +++ b/Mage.Sets/src/mage/cards/i/IncrementalBlight.java @@ -1,49 +1,44 @@ package mage.cards.i; -import java.util.UUID; -import mage.abilities.Ability; -import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Outcome; import mage.counters.CounterType; +import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.other.AnotherTargetPredicate; -import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.SecondTargetPointer; +import mage.target.targetpointer.ThirdTargetPointer; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class IncrementalBlight extends CardImpl { - public IncrementalBlight(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}"); + private static final FilterPermanent filter = new FilterCreaturePermanent("another creature"); + static { + filter.add(new AnotherTargetPredicate(3)); + } + + public IncrementalBlight(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}"); // Put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. - this.getSpellAbility().addEffect(new IncrementalBlightEffect()); - - FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature (gets a -1/-1 counter)"); - TargetCreaturePermanent target1 = new TargetCreaturePermanent(filter1); - target1.setTargetTag(1); - this.getSpellAbility().addTarget(target1); - - FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another creature (gets two -1/-1 counters)"); - filter2.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter2); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); - - FilterCreaturePermanent filter3 = new FilterCreaturePermanent("another creature (gets three -1/-1 counters)"); - filter3.add(new AnotherTargetPredicate(3)); - TargetCreaturePermanent target3 = new TargetCreaturePermanent(filter3); - target3.setTargetTag(3); - this.getSpellAbility().addTarget(target3); + this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.M1M1.createInstance())); + this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.M1M1.createInstance(2)) + .setTargetPointer(new SecondTargetPointer()).setText(", two -1/-1 counters on another target creature")); + this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.M1M1.createInstance(3)) + .setTargetPointer(new ThirdTargetPointer()).setText(", and three -1/-1 counters on a third target creature")); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("gets a -1/-1 counter").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).withChooseHint("gets two -1/-1 counters").setTargetTag(2)); + this.getSpellAbility().addTarget(new TargetPermanent(filter).withChooseHint("gets three -1/-1 counters").setTargetTag(3)); } private IncrementalBlight(final IncrementalBlight card) { @@ -55,32 +50,3 @@ public final class IncrementalBlight extends CardImpl { return new IncrementalBlight(this); } } -class IncrementalBlightEffect extends OneShotEffect { - - public IncrementalBlightEffect() { - super(Outcome.UnboostCreature); - this.staticText = "Put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature"; - } - - private IncrementalBlightEffect(final IncrementalBlightEffect effect) { - super(effect); - } - - @Override - public IncrementalBlightEffect copy() { - return new IncrementalBlightEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - int i = 0; - for (Target target : source.getTargets()) { - i++; - Permanent creature = game.getPermanent(target.getFirstTarget()); - if (creature != null) { - creature.addCounters(CounterType.M1M1.createInstance(i), source.getControllerId(), source, game); - } - } - return false; - } -} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/i/IncrementalGrowth.java b/Mage.Sets/src/mage/cards/i/IncrementalGrowth.java index 96ca91cb9d1..b36efc9a4f6 100644 --- a/Mage.Sets/src/mage/cards/i/IncrementalGrowth.java +++ b/Mage.Sets/src/mage/cards/i/IncrementalGrowth.java @@ -1,49 +1,45 @@ package mage.cards.i; -import java.util.UUID; -import mage.abilities.Ability; -import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Outcome; import mage.counters.CounterType; +import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.other.AnotherTargetPredicate; -import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.SecondTargetPointer; +import mage.target.targetpointer.ThirdTargetPointer; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class IncrementalGrowth extends CardImpl { + private static final FilterPermanent filter = new FilterCreaturePermanent("another creature"); + + static { + filter.add(new AnotherTargetPredicate(3)); + } + public IncrementalGrowth(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}{G}"); // Put a +1/+1 counter on target creature, two +1/+1 counters on another target // creature, and three +1/+1 counters on a third target creature. - this.getSpellAbility().addEffect(new IncrementalGrowthEffect()); - - FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature (gets a +1/+1 counter)"); - TargetCreaturePermanent target1 = new TargetCreaturePermanent(filter1); - target1.setTargetTag(1); - this.getSpellAbility().addTarget(target1); - - FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another creature (gets two +1/+1 counters)"); - filter2.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter2); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); - - FilterCreaturePermanent filter3 = new FilterCreaturePermanent("another creature (gets three +1/+1 counters)"); - filter3.add(new AnotherTargetPredicate(3)); - TargetCreaturePermanent target3 = new TargetCreaturePermanent(filter3); - target3.setTargetTag(3); - this.getSpellAbility().addTarget(target3); + this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); + this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)) + .setTargetPointer(new SecondTargetPointer()).setText(", two +1/+1 counters on another target creature")); + this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance(3)) + .setTargetPointer(new ThirdTargetPointer()).setText(", and three +1/+1 counters on a third target creature")); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("gets a +1/+1 counter").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).withChooseHint("gets two +1/+1 counters").setTargetTag(2)); + this.getSpellAbility().addTarget(new TargetPermanent(filter).withChooseHint("gets three +1/+1 counters").setTargetTag(3)); } private IncrementalGrowth(final IncrementalGrowth card) { @@ -55,35 +51,3 @@ public final class IncrementalGrowth extends CardImpl { return new IncrementalGrowth(this); } } - -class IncrementalGrowthEffect extends OneShotEffect { - - IncrementalGrowthEffect() { - super(Outcome.Benefit); - this.staticText = "Put a +1/+1 counter on target creature, " - + "two +1/+1 counters on another target creature, " - + "and three +1/+1 counters on a third target creature"; - } - - private IncrementalGrowthEffect(final IncrementalGrowthEffect effect) { - super(effect); - } - - @Override - public IncrementalGrowthEffect copy() { - return new IncrementalGrowthEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - int i = 0; - for (Target target : source.getTargets()) { - i++; - Permanent creature = game.getPermanent(target.getFirstTarget()); - if (creature != null) { - creature.addCounters(CounterType.P1P1.createInstance(i), source.getControllerId(), source, game); - } - } - return false; - } -} diff --git a/Mage.Sets/src/mage/cards/i/InfectiousBite.java b/Mage.Sets/src/mage/cards/i/InfectiousBite.java index 3d77ad7eab2..b163633f2d3 100644 --- a/Mage.Sets/src/mage/cards/i/InfectiousBite.java +++ b/Mage.Sets/src/mage/cards/i/InfectiousBite.java @@ -8,11 +8,14 @@ import mage.constants.CardType; import mage.constants.TargetController; import mage.counters.CounterType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -24,7 +27,7 @@ public final class InfectiousBite extends CardImpl { // Target creature you control deals damage equal to its power to target creature you don't control. Each opponent gets a poison counter. this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().addEffect(new AddCountersPlayersEffect( CounterType.POISON.createInstance(), TargetController.OPPONENT )); diff --git a/Mage.Sets/src/mage/cards/i/InscriptionOfAbundance.java b/Mage.Sets/src/mage/cards/i/InscriptionOfAbundance.java index 0e0c67f2563..5568a081e94 100644 --- a/Mage.Sets/src/mage/cards/i/InscriptionOfAbundance.java +++ b/Mage.Sets/src/mage/cards/i/InscriptionOfAbundance.java @@ -16,6 +16,7 @@ import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.game.Game; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -23,6 +24,8 @@ import mage.target.common.TargetCreaturePermanent; import java.util.Objects; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -49,7 +52,7 @@ public final class InscriptionOfAbundance extends CardImpl { // • Target creature you control fights target creature you don't control. mode = new Mode(new FightTargetsEffect(false)); mode.addTarget(new TargetControlledCreaturePermanent().withChooseHint("fights")); - mode.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL).withChooseHint("fights")); + mode.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL).withChooseHint("fights")); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/i/IntrepidHero.java b/Mage.Sets/src/mage/cards/i/IntrepidHero.java index a22cf92ce3d..eea2276794b 100644 --- a/Mage.Sets/src/mage/cards/i/IntrepidHero.java +++ b/Mage.Sets/src/mage/cards/i/IntrepidHero.java @@ -15,6 +15,7 @@ import mage.constants.ComparisonType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class IntrepidHero extends CardImpl { // {tap}: Destroy target creature with power 4 or greater. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/InvigoratedRampage.java b/Mage.Sets/src/mage/cards/i/InvigoratedRampage.java index 303332f0ace..3e6e9091032 100644 --- a/Mage.Sets/src/mage/cards/i/InvigoratedRampage.java +++ b/Mage.Sets/src/mage/cards/i/InvigoratedRampage.java @@ -1,9 +1,6 @@ - package mage.cards.i; -import java.util.UUID; import mage.abilities.Mode; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.keyword.TrampleAbility; @@ -13,8 +10,9 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author Styxo */ public final class InvigoratedRampage extends CardImpl { @@ -24,21 +22,15 @@ public final class InvigoratedRampage extends CardImpl { // Choose one // Target creature gets +4/+0 and gains trample until end of turn. - Effect effect = new BoostTargetEffect(4, 0, Duration.EndOfTurn); - effect.setText("Target creature gets +4/+0"); - this.getSpellAbility().addEffect(effect); - effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn); - effect.setText("and gains trample until end of turn"); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new BoostTargetEffect(4, 0).setText("target creature gets +4/+0")); + this.getSpellAbility().addEffect(new GainAbilityTargetEffect( + TrampleAbility.getInstance(), Duration.EndOfTurn + ).setText("and gains trample until end of turn")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); // Two target creatures each get +2/+0 and gain trample until end of turn. - effect = new BoostTargetEffect(2, 0, Duration.EndOfTurn); - effect.setText("Two target creatures each get +2/+0"); - Mode mode = new Mode(effect); - effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn); - effect.setText("and gain trample until end of turn"); - mode.addEffect(effect); + Mode mode = new Mode(new BoostTargetEffect(2, 0).setText("two target creatures each get +2/+0")); + mode.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance()).setText("and gain trample until end of turn")); mode.addTarget(new TargetCreaturePermanent(2)); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/i/IronHeartChimera.java b/Mage.Sets/src/mage/cards/i/IronHeartChimera.java index 799f7165b19..8ebc556645b 100644 --- a/Mage.Sets/src/mage/cards/i/IronHeartChimera.java +++ b/Mage.Sets/src/mage/cards/i/IronHeartChimera.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -45,7 +46,7 @@ public final class IronHeartChimera extends CardImpl { Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost()); ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield) .setText("It gains vigilance. (This effect lasts indefinitely.)")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/IslandOfWakWak.java b/Mage.Sets/src/mage/cards/i/IslandOfWakWak.java index 0b75eb02e36..fd027139515 100644 --- a/Mage.Sets/src/mage/cards/i/IslandOfWakWak.java +++ b/Mage.Sets/src/mage/cards/i/IslandOfWakWak.java @@ -18,6 +18,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class IslandOfWakWak extends CardImpl { // {tap}: Target creature with flying has base power 0 until end of turn. Ability ability = new SimpleActivatedAbility(new IslandOfWakWakEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filterWithFlying)); + ability.addTarget(new TargetPermanent(filterWithFlying)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/IsperiasSkywatch.java b/Mage.Sets/src/mage/cards/i/IsperiasSkywatch.java index 186570dd784..4ad79be3a97 100644 --- a/Mage.Sets/src/mage/cards/i/IsperiasSkywatch.java +++ b/Mage.Sets/src/mage/cards/i/IsperiasSkywatch.java @@ -1,7 +1,5 @@ - package mage.cards.i; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -11,17 +9,17 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.StaticFilters; -import mage.target.common.TargetCreaturePermanent; +import mage.target.common.TargetOpponentsCreaturePermanent; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class IsperiasSkywatch extends CardImpl { - + public IsperiasSkywatch(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}"); this.subtype.add(SubType.VEDALKEN); this.subtype.add(SubType.KNIGHT); @@ -30,12 +28,11 @@ public final class IsperiasSkywatch extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); - + // When Isperia's Skywatch enters the battlefield, detain target creature an opponent controls. // (Until your next turn, that creature can't attack or block and its activated abilities can't be activated.) Ability ability = new EntersBattlefieldTriggeredAbility(new DetainTargetEffect()); - TargetCreaturePermanent target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); - ability.addTarget(target); + ability.addTarget(new TargetOpponentsCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/ItzquinthFirstbornOfGishath.java b/Mage.Sets/src/mage/cards/i/ItzquinthFirstbornOfGishath.java index 3f0183fb6f5..07410694410 100644 --- a/Mage.Sets/src/mage/cards/i/ItzquinthFirstbornOfGishath.java +++ b/Mage.Sets/src/mage/cards/i/ItzquinthFirstbornOfGishath.java @@ -16,6 +16,7 @@ import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.other.AnotherTargetPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -47,7 +48,7 @@ public final class ItzquinthFirstbornOfGishath extends CardImpl { // When Itzquinth enters the battlefield, you may pay {2}. When you do, target Dinosaur you control deals damage equal to its power to another target creature. ReflexiveTriggeredAbility reflexive = new ReflexiveTriggeredAbility(new DamageWithPowerFromOneToAnotherTargetEffect(), false); reflexive.addTarget(new TargetControlledPermanent(filter1).setTargetTag(1)); // may not be a creature. Don't ask me why. - reflexive.addTarget(new TargetCreaturePermanent(filter2).setTargetTag(2)); + reflexive.addTarget(new TargetPermanent(filter2).setTargetTag(2)); this.addAbility(new EntersBattlefieldTriggeredAbility( new DoWhenCostPaid(reflexive, new GenericManaCost(2), "Pay {2}?") )); diff --git a/Mage.Sets/src/mage/cards/i/IxidorRealitySculptor.java b/Mage.Sets/src/mage/cards/i/IxidorRealitySculptor.java index 97c3b1ccba2..3fa598cc4f3 100644 --- a/Mage.Sets/src/mage/cards/i/IxidorRealitySculptor.java +++ b/Mage.Sets/src/mage/cards/i/IxidorRealitySculptor.java @@ -14,6 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.card.FaceDownPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -44,7 +45,7 @@ public final class IxidorRealitySculptor extends CardImpl { // {2}{U}: Turn target face-down creature face up. Ability ability = new SimpleActivatedAbility(new TurnFaceUpTargetEffect(), new ManaCostsImpl<>("{2}{U}")); - ability.addTarget(new TargetCreaturePermanent(filterTarget)); + ability.addTarget(new TargetPermanent(filterTarget)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/j/JabarisInfluence.java b/Mage.Sets/src/mage/cards/j/JabarisInfluence.java index e93b88a110c..c8d546de0e8 100644 --- a/Mage.Sets/src/mage/cards/j/JabarisInfluence.java +++ b/Mage.Sets/src/mage/cards/j/JabarisInfluence.java @@ -20,6 +20,7 @@ import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.Watcher; @@ -48,7 +49,7 @@ public final class JabarisInfluence extends CardImpl { // Gain control of target nonartifact, nonblack creature that attacked you this turn and put a -1/-0 counter on it. this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.Custom)); this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.M1M0.createInstance()).setText("and put a -1/-0 counter on it")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addWatcher(new JabarisInfluenceWatcher()); } diff --git a/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java b/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java index f7f1b8944a1..28d11bf11bf 100644 --- a/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java +++ b/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java @@ -18,6 +18,7 @@ import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -47,7 +48,7 @@ public final class JaggedScarArchers extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(controlledElvesFilter)))); // {tap}: Jagged-Scar Archers deals damage equal to its power to target creature with flying. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("{this} deals damage equal to its power to target creature with flying"), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(flyingCreatureFilter)); + ability.addTarget(new TargetPermanent(flyingCreatureFilter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/j/JawboneSkulkin.java b/Mage.Sets/src/mage/cards/j/JawboneSkulkin.java index ae1c7205381..395983aea33 100644 --- a/Mage.Sets/src/mage/cards/j/JawboneSkulkin.java +++ b/Mage.Sets/src/mage/cards/j/JawboneSkulkin.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class JawboneSkulkin extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(filterRedCreature)); + ability.addTarget(new TargetPermanent(filterRedCreature)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/j/JediInstructor.java b/Mage.Sets/src/mage/cards/j/JediInstructor.java index 6b14794a12f..f5da94d0668 100644 --- a/Mage.Sets/src/mage/cards/j/JediInstructor.java +++ b/Mage.Sets/src/mage/cards/j/JediInstructor.java @@ -13,8 +13,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author Styxo @@ -30,7 +33,7 @@ public final class JediInstructor extends CardImpl { // When Jedi Instructor enters the battlefield, you may put a +1/+1 counter on another target creature. EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), true); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); // Meditate {1}{W} diff --git a/Mage.Sets/src/mage/cards/j/JediSentinel.java b/Mage.Sets/src/mage/cards/j/JediSentinel.java index d2b02fb1428..7b824dd5e5f 100644 --- a/Mage.Sets/src/mage/cards/j/JediSentinel.java +++ b/Mage.Sets/src/mage/cards/j/JediSentinel.java @@ -17,6 +17,8 @@ import mage.target.targetpointer.EachTargetPointer; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author Styxo */ @@ -36,7 +38,7 @@ public final class JediSentinel extends CardImpl { Effect effect = new ReturnToHandTargetEffect().setTargetPointer(new EachTargetPointer()); Ability ability = new EntersBattlefieldTriggeredAbility(effect); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE_YOU_CONTROL)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/j/JhoirasToolbox.java b/Mage.Sets/src/mage/cards/j/JhoirasToolbox.java index e1609e6f9c9..d089bd97b86 100644 --- a/Mage.Sets/src/mage/cards/j/JhoirasToolbox.java +++ b/Mage.Sets/src/mage/cards/j/JhoirasToolbox.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class JhoirasToolbox extends CardImpl { // {2}: Regenerate target artifact creature. Ability ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new ManaCostsImpl<>("{2}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/j/Jilt.java b/Mage.Sets/src/mage/cards/j/Jilt.java index 9051022f8ec..588eb9c2133 100644 --- a/Mage.Sets/src/mage/cards/j/Jilt.java +++ b/Mage.Sets/src/mage/cards/j/Jilt.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.other.AnotherTargetPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.ConditionalTargetAdjuster; import mage.target.targetpointer.SecondTargetPointer; @@ -41,7 +42,7 @@ public final class Jilt extends CardImpl { .setTargetPointer(new SecondTargetPointer())); this.getSpellAbility().addTarget(new TargetCreaturePermanent().setTargetTag(1).withChooseHint("to return to hand")); this.getSpellAbility().setTargetAdjuster(new ConditionalTargetAdjuster(KickedCondition.ONCE, true, - new TargetCreaturePermanent(filter).setTargetTag(2).withChooseHint("to deal 2 damage"))); + new TargetPermanent(filter).setTargetTag(2).withChooseHint("to deal 2 damage"))); } private Jilt(final Jilt card) { diff --git a/Mage.Sets/src/mage/cards/j/JiwariTheEarthAflame.java b/Mage.Sets/src/mage/cards/j/JiwariTheEarthAflame.java index 40e1d750240..3bf6a41ed56 100644 --- a/Mage.Sets/src/mage/cards/j/JiwariTheEarthAflame.java +++ b/Mage.Sets/src/mage/cards/j/JiwariTheEarthAflame.java @@ -21,6 +21,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class JiwariTheEarthAflame extends CardImpl { // {X}{R}, {tap}: Jiwari, the Earth Aflame deals X damage to target creature without flying. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(GetXValue.instance), new ManaCostsImpl<>("{X}{R}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Channel - {X}{R}{R}{R}, Discard Jiwari: Jiwari deals X damage to each creature without flying. diff --git a/Mage.Sets/src/mage/cards/k/Karakas.java b/Mage.Sets/src/mage/cards/k/Karakas.java index de9281807f1..c122c59fded 100644 --- a/Mage.Sets/src/mage/cards/k/Karakas.java +++ b/Mage.Sets/src/mage/cards/k/Karakas.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class Karakas extends CardImpl { this.addAbility(new WhiteManaAbility()); // {T}: Return target legendary creature to its owner's hand. Ability ability = new SimpleActivatedAbility(new ReturnToHandTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java b/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java index ada8df11c62..0e1fbe64369 100644 --- a/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java +++ b/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java @@ -16,6 +16,7 @@ import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class KeepsakeGorgon extends CardImpl { this.addAbility(new MonstrosityAbility("{5}{B}{B}", 1)); // When Keepsake Gorgon becomes monstrous, destroy target non-Gorgon creature an opponent controls. Ability ability = new BecomesMonstrousSourceTriggeredAbility(new DestroyTargetEffect()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KefnetsMonument.java b/Mage.Sets/src/mage/cards/k/KefnetsMonument.java index 87763e026e9..9ce129baa4c 100644 --- a/Mage.Sets/src/mage/cards/k/KefnetsMonument.java +++ b/Mage.Sets/src/mage/cards/k/KefnetsMonument.java @@ -15,10 +15,13 @@ import mage.filter.FilterCard; import mage.filter.StaticFilters; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author fireshoes */ @@ -43,7 +46,7 @@ public final class KefnetsMonument extends CardImpl { new DontUntapInControllersNextUntapStepTargetEffect(), StaticFilters.FILTER_SPELL_A_CREATURE, false ); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KelsinkoRanger.java b/Mage.Sets/src/mage/cards/k/KelsinkoRanger.java index 618b18f0e61..644cccb0c2c 100644 --- a/Mage.Sets/src/mage/cards/k/KelsinkoRanger.java +++ b/Mage.Sets/src/mage/cards/k/KelsinkoRanger.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -44,7 +45,7 @@ public final class KelsinkoRanger extends CardImpl { new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}") ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KhalniAmbush.java b/Mage.Sets/src/mage/cards/k/KhalniAmbush.java index 83f23c5fa2b..d4ede15e71e 100644 --- a/Mage.Sets/src/mage/cards/k/KhalniAmbush.java +++ b/Mage.Sets/src/mage/cards/k/KhalniAmbush.java @@ -8,11 +8,14 @@ import mage.cards.ModalDoubleFacedCard; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author JayDi85 */ @@ -31,7 +34,7 @@ public final class KhalniAmbush extends ModalDoubleFacedCard { // Target creature you control fights target creature you don't control. this.getLeftHalfCard().getSpellAbility().addEffect(new FightTargetsEffect()); this.getLeftHalfCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getLeftHalfCard().getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); // 2. // Khalni Territory diff --git a/Mage.Sets/src/mage/cards/k/KingCrab.java b/Mage.Sets/src/mage/cards/k/KingCrab.java index 31e6bc413ec..4c7eefe63c9 100644 --- a/Mage.Sets/src/mage/cards/k/KingCrab.java +++ b/Mage.Sets/src/mage/cards/k/KingCrab.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class KingCrab extends CardImpl { // {1}{U}, {tap}: Put target green creature on top of its owner's library. Ability ability = new SimpleActivatedAbility(new PutOnLibraryTargetEffect(true), new ManaCostsImpl<>("{1}{U}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KithkinShielddare.java b/Mage.Sets/src/mage/cards/k/KithkinShielddare.java index 2632b782776..fdae7a9efa1 100644 --- a/Mage.Sets/src/mage/cards/k/KithkinShielddare.java +++ b/Mage.Sets/src/mage/cards/k/KithkinShielddare.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterBlockingCreature; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class KithkinShielddare extends CardImpl { new BoostTargetEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl<>("{W}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KitsuneHealer.java b/Mage.Sets/src/mage/cards/k/KitsuneHealer.java index bcf1ba79a41..e0f9933349d 100644 --- a/Mage.Sets/src/mage/cards/k/KitsuneHealer.java +++ b/Mage.Sets/src/mage/cards/k/KitsuneHealer.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetAnyTarget; import mage.target.common.TargetCreaturePermanent; @@ -44,7 +45,7 @@ public final class KitsuneHealer extends CardImpl { this.addAbility(firstAbility); // {T}: Prevent all damage that would be dealt to target legendary creature this turn. Ability secondAbility = new SimpleActivatedAbility(new PreventDamageToTargetEffect(Duration.EndOfTurn, Integer.MAX_VALUE), new TapSourceCost()); - secondAbility.addTarget(new TargetCreaturePermanent(filter)); + secondAbility.addTarget(new TargetPermanent(filter)); this.addAbility(secondAbility); } diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranPride.java b/Mage.Sets/src/mage/cards/k/KjeldoranPride.java index e952292516b..6773a890dbb 100644 --- a/Mage.Sets/src/mage/cards/k/KjeldoranPride.java +++ b/Mage.Sets/src/mage/cards/k/KjeldoranPride.java @@ -48,7 +48,7 @@ public final class KjeldoranPride extends CardImpl { // 2U: Attach Kjeldoran Pride to target creature other than enchanted creature. Ability ability = new SimpleActivatedAbility(new AttachEffect(Outcome.Benefit, "attach {this} to target " + filter.getMessage()), new ManaCostsImpl<>("{2}{U}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KorChant.java b/Mage.Sets/src/mage/cards/k/KorChant.java index d1128957a73..eae15e2e949 100644 --- a/Mage.Sets/src/mage/cards/k/KorChant.java +++ b/Mage.Sets/src/mage/cards/k/KorChant.java @@ -1,7 +1,5 @@ - package mage.cards.k; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.RedirectionEffect; import mage.cards.CardImpl; @@ -9,16 +7,16 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; +import mage.target.TargetPermanent; import mage.target.TargetSource; import mage.target.common.TargetControlledCreaturePermanent; -import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; /** - * * @author emerald000 */ public final class KorChant extends CardImpl { @@ -28,15 +26,8 @@ public final class KorChant extends CardImpl { // All damage that would be dealt this turn to target creature you control by a source of your choice is dealt to another target creature instead. this.getSpellAbility().addEffect(new KorChantEffect()); - TargetControlledCreaturePermanent target = new TargetControlledCreaturePermanent(); - target.setTargetTag(1); - this.getSpellAbility().addTarget(target); - - FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature"); - filter.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent().setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2)); } private KorChant(final KorChant card) { @@ -55,7 +46,7 @@ class KorChantEffect extends RedirectionEffect { KorChantEffect() { super(Duration.EndOfTurn); - staticText = "All damage that would be dealt this turn to target creature you control by a source of your choice is dealt to another target creature instead"; + staticText = "all damage that would be dealt this turn to target creature you control by a source of your choice is dealt to another target creature instead"; } private KorChantEffect(final KorChantEffect effect) { diff --git a/Mage.Sets/src/mage/cards/k/KorDirge.java b/Mage.Sets/src/mage/cards/k/KorDirge.java index a08131260dc..90a31de93c2 100644 --- a/Mage.Sets/src/mage/cards/k/KorDirge.java +++ b/Mage.Sets/src/mage/cards/k/KorDirge.java @@ -1,7 +1,5 @@ - package mage.cards.k; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.RedirectionEffect; import mage.cards.CardImpl; @@ -9,16 +7,16 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; +import mage.target.TargetPermanent; import mage.target.TargetSource; import mage.target.common.TargetControlledCreaturePermanent; -import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; /** - * * @author emerald000 */ public final class KorDirge extends CardImpl { @@ -28,15 +26,8 @@ public final class KorDirge extends CardImpl { // All damage that would be dealt this turn to target creature you control by a source of your choice is dealt to another target creature instead. this.getSpellAbility().addEffect(new KorDirgeEffect()); - TargetControlledCreaturePermanent target = new TargetControlledCreaturePermanent(); - target.setTargetTag(1); - this.getSpellAbility().addTarget(target); - - FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature"); - filter.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent().setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2)); } private KorDirge(final KorDirge card) { diff --git a/Mage.Sets/src/mage/cards/k/KorEntanglers.java b/Mage.Sets/src/mage/cards/k/KorEntanglers.java index ad61f183308..0e806142244 100644 --- a/Mage.Sets/src/mage/cards/k/KorEntanglers.java +++ b/Mage.Sets/src/mage/cards/k/KorEntanglers.java @@ -11,8 +11,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -29,7 +32,7 @@ public final class KorEntanglers extends CardImpl { // Rally — Whenever Kor Entanglers or another Ally you control enters, tap target creature an opponent controls. Ability ability = new AllyEntersBattlefieldTriggeredAbility(new TapTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KorHookmaster.java b/Mage.Sets/src/mage/cards/k/KorHookmaster.java index 64e80a529d4..1e043d23e3b 100644 --- a/Mage.Sets/src/mage/cards/k/KorHookmaster.java +++ b/Mage.Sets/src/mage/cards/k/KorHookmaster.java @@ -11,8 +11,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author North @@ -31,7 +34,7 @@ public final class KorHookmaster extends CardImpl { // That creature doesn't untap during its controller's next untap step. EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect()); ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("that creature")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KorLineSlinger.java b/Mage.Sets/src/mage/cards/k/KorLineSlinger.java index 35c54e7594d..bf1f15cb734 100644 --- a/Mage.Sets/src/mage/cards/k/KorLineSlinger.java +++ b/Mage.Sets/src/mage/cards/k/KorLineSlinger.java @@ -15,6 +15,7 @@ import mage.constants.ComparisonType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class KorLineSlinger extends CardImpl { this.toughness = new MageInt(1); Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KozileksCommand.java b/Mage.Sets/src/mage/cards/k/KozileksCommand.java index fd0c2b9c9fa..b66c2b9b32f 100644 --- a/Mage.Sets/src/mage/cards/k/KozileksCommand.java +++ b/Mage.Sets/src/mage/cards/k/KozileksCommand.java @@ -19,6 +19,7 @@ import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.game.Game; import mage.game.permanent.token.EldraziSpawnToken; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCardInGraveyard; import mage.target.common.TargetCreaturePermanent; @@ -91,7 +92,7 @@ enum KozileksCommandAdjuster implements TargetAdjuster { mode.getTargets().clear(); FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with mana value " + xValue + " or less"); filter.add(new ManaValuePredicate(ComparisonType.OR_LESS, xValue)); - mode.addTarget(new TargetCreaturePermanent(filter)); + mode.addTarget(new TargetPermanent(filter)); } if (target instanceof TargetCardInGraveyard) { mode.getTargets().clear(); @@ -100,4 +101,4 @@ enum KozileksCommandAdjuster implements TargetAdjuster { } } } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/k/KrosanConstrictor.java b/Mage.Sets/src/mage/cards/k/KrosanConstrictor.java index fcdba83d14d..2da3d9bb40f 100644 --- a/Mage.Sets/src/mage/cards/k/KrosanConstrictor.java +++ b/Mage.Sets/src/mage/cards/k/KrosanConstrictor.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class KrosanConstrictor extends CardImpl { this.addAbility(new SwampwalkAbility()); // {tap}: Target black creature gets -2/-0 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(-2, -0, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java b/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java index 0a8a6417c7c..b65f877c0dd 100644 --- a/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java +++ b/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class KrosanGroundshaker extends CardImpl { // {G}: Target Beast creature gains trample until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{G}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KrosanWarchief.java b/Mage.Sets/src/mage/cards/k/KrosanWarchief.java index cc836a57493..4d0bb62d357 100644 --- a/Mage.Sets/src/mage/cards/k/KrosanWarchief.java +++ b/Mage.Sets/src/mage/cards/k/KrosanWarchief.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -45,7 +46,7 @@ public final class KrosanWarchief extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new RegenerateTargetEffect(), new ManaCostsImpl<>("{1}{G}")); - Target target = new TargetCreaturePermanent(filterTarget); + Target target = new TargetPermanent(filterTarget); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KrovikanRot.java b/Mage.Sets/src/mage/cards/k/KrovikanRot.java index 126d4761177..e88e977b93f 100644 --- a/Mage.Sets/src/mage/cards/k/KrovikanRot.java +++ b/Mage.Sets/src/mage/cards/k/KrovikanRot.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -30,7 +31,7 @@ public final class KrovikanRot extends CardImpl { // Destroy target creature with power 2 or less. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Recover {1}{B}{B} this.addAbility(new RecoverAbility(new ManaCostsImpl<>("{1}{B}{B}"), this)); diff --git a/Mage.Sets/src/mage/cards/l/LandoCalrissian.java b/Mage.Sets/src/mage/cards/l/LandoCalrissian.java index 4be46578402..99f7224a10e 100644 --- a/Mage.Sets/src/mage/cards/l/LandoCalrissian.java +++ b/Mage.Sets/src/mage/cards/l/LandoCalrissian.java @@ -13,6 +13,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class LandoCalrissian extends CardImpl { effect = new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn); effect.setText("and gains vigilance until end of turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LastNightTogether.java b/Mage.Sets/src/mage/cards/l/LastNightTogether.java index 3b804fc0b31..c1efbf98e17 100644 --- a/Mage.Sets/src/mage/cards/l/LastNightTogether.java +++ b/Mage.Sets/src/mage/cards/l/LastNightTogether.java @@ -134,4 +134,4 @@ class LastNightTogetherDelayedCantAttackAbility extends DelayedTriggeredAbility public String getRule() { return "Only the chosen creatures can attack during that combat phase"; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/l/LavaFieldOverlord.java b/Mage.Sets/src/mage/cards/l/LavaFieldOverlord.java index 2b35f2cb28b..857bb390e1a 100644 --- a/Mage.Sets/src/mage/cards/l/LavaFieldOverlord.java +++ b/Mage.Sets/src/mage/cards/l/LavaFieldOverlord.java @@ -13,8 +13,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author TheElk801 @@ -36,7 +39,7 @@ public final class LavaFieldOverlord extends CardImpl { // When Lava-Field Overlord enters the battlefield, it deals 4 damage to target creature an opponent controls. Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(4), false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/Lawbringer.java b/Mage.Sets/src/mage/cards/l/Lawbringer.java index ef8f63002d1..710887457d3 100644 --- a/Mage.Sets/src/mage/cards/l/Lawbringer.java +++ b/Mage.Sets/src/mage/cards/l/Lawbringer.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class Lawbringer extends CardImpl { // {tap}, Sacrifice Lawbringer: Exile target red creature. Ability ability = new SimpleActivatedAbility(new ExileTargetEffect(), new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java b/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java index 4765a6e3fc2..b116720c92d 100644 --- a/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java +++ b/Mage.Sets/src/mage/cards/l/LeadBellyChimera.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -45,7 +46,7 @@ public final class LeadBellyChimera extends CardImpl { Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost()); ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield) .setText("It gains trample. (This effect lasts indefinitely.)")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LeafArrow.java b/Mage.Sets/src/mage/cards/l/LeafArrow.java index 52b6fe9d383..b80bd3e4b88 100644 --- a/Mage.Sets/src/mage/cards/l/LeafArrow.java +++ b/Mage.Sets/src/mage/cards/l/LeafArrow.java @@ -9,6 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -27,7 +28,7 @@ public final class LeafArrow extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}"); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DamageTargetEffect(3)); } diff --git a/Mage.Sets/src/mage/cards/l/LeechingBite.java b/Mage.Sets/src/mage/cards/l/LeechingBite.java index 73c1444b5c2..b20f8c1afcf 100644 --- a/Mage.Sets/src/mage/cards/l/LeechingBite.java +++ b/Mage.Sets/src/mage/cards/l/LeechingBite.java @@ -1,45 +1,29 @@ - package mage.cards.l; -import java.util.UUID; -import mage.abilities.Ability; -import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; -import mage.game.Game; -import mage.game.permanent.Permanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.SecondTargetPointer; + +import java.util.UUID; /** - * * @author North */ public final class LeechingBite extends CardImpl { public LeechingBite(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}"); - // Target creature gets +1/+1 until end of turn. Another target creature gets -1/-1 until end of turn. - this.getSpellAbility().addEffect(new LeechingBiteEffect()); - - FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature to get +1/+1"); - TargetCreaturePermanent target1 = new TargetCreaturePermanent(filter1); - target1.setTargetTag(1); - this.getSpellAbility().addTarget(target1); - - FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another creature to get -1/-1"); - filter2.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter2); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addEffect(new BoostTargetEffect(1, 1)); + this.getSpellAbility().addEffect(new BoostTargetEffect(-1, -1).setTargetPointer(new SecondTargetPointer()).setText("Another target creature gets -1/-1 until end of turn")); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("+1/+1").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).withChooseHint("-1/-1").setTargetTag(2)); } private LeechingBite(final LeechingBite card) { @@ -51,35 +35,3 @@ public final class LeechingBite extends CardImpl { return new LeechingBite(this); } } - -class LeechingBiteEffect extends ContinuousEffectImpl { - - public LeechingBiteEffect() { - super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature); - this.staticText = "Target creature gets +1/+1 until end of turn. Another target creature gets -1/-1 until end of turn"; - } - - private LeechingBiteEffect(final LeechingBiteEffect effect) { - super(effect); - } - - @Override - public LeechingBiteEffect copy() { - return new LeechingBiteEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(source.getFirstTarget()); - if (permanent != null) { - permanent.addPower(1); - permanent.addToughness(1); - } - permanent = game.getPermanent(source.getTargets().get(1).getFirstTarget()); - if (permanent != null) { - permanent.addPower(-1); - permanent.addToughness(-1); - } - return true; - } -} diff --git a/Mage.Sets/src/mage/cards/l/LegacysAllure.java b/Mage.Sets/src/mage/cards/l/LegacysAllure.java index 8f168ae6d8f..731001d099d 100644 --- a/Mage.Sets/src/mage/cards/l/LegacysAllure.java +++ b/Mage.Sets/src/mage/cards/l/LegacysAllure.java @@ -12,6 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.PowerTargetAdjuster; @@ -33,7 +34,7 @@ public final class LegacysAllure extends CardImpl { // Sacrifice Legacy's Allure: Gain control of target creature with power less than or equal to the number of treasure counters on Legacy's Allure. Ability ability = new SimpleActivatedAbility(new GainControlTargetEffect(Duration.EndOfGame, true), new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.setTargetAdjuster(new PowerTargetAdjuster(new CountersSourceCount(CounterType.TREASURE), ComparisonType.OR_LESS)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LegionGuildmage.java b/Mage.Sets/src/mage/cards/l/LegionGuildmage.java index 419ff3fd814..2a7b982683e 100644 --- a/Mage.Sets/src/mage/cards/l/LegionGuildmage.java +++ b/Mage.Sets/src/mage/cards/l/LegionGuildmage.java @@ -14,8 +14,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author TheElk801 @@ -44,7 +47,7 @@ public final class LegionGuildmage extends CardImpl { new ManaCostsImpl<>("{2}{W}") ); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LiberatedDwarf.java b/Mage.Sets/src/mage/cards/l/LiberatedDwarf.java index e4ad8a4f955..ad4f14a6a58 100644 --- a/Mage.Sets/src/mage/cards/l/LiberatedDwarf.java +++ b/Mage.Sets/src/mage/cards/l/LiberatedDwarf.java @@ -20,6 +20,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -47,7 +48,7 @@ public final class LiberatedDwarf extends CardImpl { effect = new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn); effect.setText("and gains first strike until end of turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/Lightbringer.java b/Mage.Sets/src/mage/cards/l/Lightbringer.java index 434c8d603ba..39a10dd475e 100644 --- a/Mage.Sets/src/mage/cards/l/Lightbringer.java +++ b/Mage.Sets/src/mage/cards/l/Lightbringer.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class Lightbringer extends CardImpl { // {tap}, Sacrifice Lightbringer: Exile target black creature. Ability ability = new SimpleActivatedAbility(new ExileTargetEffect(), new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java b/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java index e5a56b63e23..88d6a0945fa 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java +++ b/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java @@ -12,6 +12,7 @@ import mage.constants.SuperType; import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -42,7 +43,7 @@ public final class LilianaDeathWielder extends CardImpl { // -3: Destroy target creature with a -1/-1 counter on it. ability = new LoyaltyAbility(new DestroyTargetEffect(), -3); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // -10: Return all creature cards from your graveyard to the battlefield. diff --git a/Mage.Sets/src/mage/cards/l/LivingTotem.java b/Mage.Sets/src/mage/cards/l/LivingTotem.java index 7722b0441d2..2590c3131b8 100644 --- a/Mage.Sets/src/mage/cards/l/LivingTotem.java +++ b/Mage.Sets/src/mage/cards/l/LivingTotem.java @@ -13,8 +13,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author LevelX2 @@ -33,7 +36,7 @@ public final class LivingTotem extends CardImpl { this.addAbility(new ConvokeAbility()); // When Living Totem enters the battlefield, you may put a +1/+1 counter on another target creature. Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), true); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LothlorienBlade.java b/Mage.Sets/src/mage/cards/l/LothlorienBlade.java index ceb04010815..ca3814f9f50 100644 --- a/Mage.Sets/src/mage/cards/l/LothlorienBlade.java +++ b/Mage.Sets/src/mage/cards/l/LothlorienBlade.java @@ -39,7 +39,7 @@ public final class LothlorienBlade extends CardImpl { // Whenever equipped creature attacks, it deals damage equal to its power to target creature defending player controls. Ability ability = new AttacksAttachedTriggeredAbility(new LothlorienBladeEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Equip Elf {2} diff --git a/Mage.Sets/src/mage/cards/l/LowlandOaf.java b/Mage.Sets/src/mage/cards/l/LowlandOaf.java index 9ccd0920168..2d53361e007 100644 --- a/Mage.Sets/src/mage/cards/l/LowlandOaf.java +++ b/Mage.Sets/src/mage/cards/l/LowlandOaf.java @@ -20,6 +20,7 @@ import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -52,7 +53,7 @@ public final class LowlandOaf extends CardImpl { effect.setText("and gains flying until end of turn."); ability.addEffect(effect); ability.addEffect(new LowlandOafEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LurkingChupacabra.java b/Mage.Sets/src/mage/cards/l/LurkingChupacabra.java index 3e993717b3a..651b38cec79 100644 --- a/Mage.Sets/src/mage/cards/l/LurkingChupacabra.java +++ b/Mage.Sets/src/mage/cards/l/LurkingChupacabra.java @@ -12,8 +12,11 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author TheElk801 @@ -30,7 +33,7 @@ public final class LurkingChupacabra extends CardImpl { // Whenever a creature you control explores, target creature an opponent controls gets -2/-2 until end of turn Ability ability = new CreatureExploresTriggeredAbility(new BoostTargetEffect(-2, -2, Duration.EndOfTurn)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java b/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java index 25e31c5d426..d031b08afd3 100644 --- a/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java +++ b/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java @@ -13,6 +13,7 @@ import mage.constants.SubType; import mage.filter.FilterSpell; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -40,7 +41,7 @@ public final class LysAlanaBowmaster extends CardImpl { this.addAbility(ReachAbility.getInstance()); Ability ability = new SpellCastControllerTriggeredAbility(new DamageTargetEffect(2) .setText("{this} deal 2 damage to target creature with flying"), filterElf, true); - ability.addTarget(new TargetCreaturePermanent(filterFlying)); + ability.addTarget(new TargetPermanent(filterFlying)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MadAuntie.java b/Mage.Sets/src/mage/cards/m/MadAuntie.java index 19aa0e37958..f6790689ed1 100644 --- a/Mage.Sets/src/mage/cards/m/MadAuntie.java +++ b/Mage.Sets/src/mage/cards/m/MadAuntie.java @@ -18,6 +18,7 @@ import mage.constants.Zone; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class MadAuntie extends CardImpl { // {T}: Regenerate another target Goblin. Ability ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter1)); + ability.addTarget(new TargetPermanent(filter1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MageRingResponder.java b/Mage.Sets/src/mage/cards/m/MageRingResponder.java index 069f0c4201f..86ecf2dd52b 100644 --- a/Mage.Sets/src/mage/cards/m/MageRingResponder.java +++ b/Mage.Sets/src/mage/cards/m/MageRingResponder.java @@ -16,6 +16,7 @@ import mage.constants.CardType; import mage.constants.SetTargetPointer; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.ThatPlayerControlsTargetAdjuster; @@ -42,7 +43,7 @@ public final class MageRingResponder extends CardImpl { // Whenever Mage-Ring Responder attacks, it deals 7 damage to target creature defending player controls. Ability ability = new AttacksTriggeredAbility(new DamageTargetEffect(7), false, null, SetTargetPointer.PLAYER); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.setTargetAdjuster(new ThatPlayerControlsTargetAdjuster()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MagewrightsStone.java b/Mage.Sets/src/mage/cards/m/MagewrightsStone.java index 64467e9ceb9..95a789e6842 100644 --- a/Mage.Sets/src/mage/cards/m/MagewrightsStone.java +++ b/Mage.Sets/src/mage/cards/m/MagewrightsStone.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicate; import mage.game.Game; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -37,7 +38,7 @@ public final class MagewrightsStone extends CardImpl { // {1}, {T}: Untap target creature that has an activated ability with {T} in its cost. Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new ManaCostsImpl<>("{1}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MagmaSliver.java b/Mage.Sets/src/mage/cards/m/MagmaSliver.java index d5d4217f715..6bacede7d4a 100644 --- a/Mage.Sets/src/mage/cards/m/MagmaSliver.java +++ b/Mage.Sets/src/mage/cards/m/MagmaSliver.java @@ -20,8 +20,11 @@ import mage.constants.Zone; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.constants.SubType.SLIVER; + /** * * @author cbt33 @@ -42,8 +45,7 @@ public final class MagmaSliver extends CardImpl { StaticFilters.FILTER_PERMANENT_ALL_SLIVERS), StaticValue.get(0), Duration.EndOfTurn), new TapSourceCost()); - Target target = new TargetCreaturePermanent( - new FilterCreaturePermanent(SubType.SLIVER, "Sliver creature")); + Target target = new TargetPermanent(new FilterCreaturePermanent(SLIVER, "Sliver creature")); ability.addTarget(target); Effect effect = new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_ALL_SLIVERS); diff --git a/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java b/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java index f96a25df117..25669eb4fa8 100644 --- a/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java +++ b/Mage.Sets/src/mage/cards/m/MaliciousAffliction.java @@ -10,10 +10,13 @@ import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * @author LevelX2 */ @@ -29,7 +32,7 @@ public final class MaliciousAffliction extends CardImpl { // Destroy target nonblack creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); } private MaliciousAffliction(final MaliciousAffliction card) { diff --git a/Mage.Sets/src/mage/cards/m/Marjhan.java b/Mage.Sets/src/mage/cards/m/Marjhan.java index 607e3ede721..9795dee8330 100644 --- a/Mage.Sets/src/mage/cards/m/Marjhan.java +++ b/Mage.Sets/src/mage/cards/m/Marjhan.java @@ -27,6 +27,7 @@ import mage.filter.common.FilterAttackingCreature; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -64,7 +65,7 @@ public final class Marjhan extends CardImpl { // {U}{U}: Marjhan gets -1/-0 until end of turn and deals 1 damage to target attacking creature without flying. ability = new SimpleActivatedAbility(new BoostSourceEffect(-1, 0, Duration.EndOfTurn), new ManaCostsImpl<>("{U}{U}")); ability.addEffect(new DamageTargetEffect(1, "and")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // When you control no Islands, sacrifice Marjhan. diff --git a/Mage.Sets/src/mage/cards/m/MarkForDeath.java b/Mage.Sets/src/mage/cards/m/MarkForDeath.java index b533b5b8f0f..56fcc4e39c0 100644 --- a/Mage.Sets/src/mage/cards/m/MarkForDeath.java +++ b/Mage.Sets/src/mage/cards/m/MarkForDeath.java @@ -18,9 +18,12 @@ import mage.filter.predicate.mageobject.CardIdPredicate; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author jeffwadsworth @@ -32,7 +35,7 @@ public final class MarkForDeath extends CardImpl { // Target creature an opponent controls blocks this turn if able. Untap that creature. Other creatures that player controls can't block this turn. this.getSpellAbility().addEffect(new MarkForDeathEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); } private MarkForDeath(final MarkForDeath card) { diff --git a/Mage.Sets/src/mage/cards/m/MartialLaw.java b/Mage.Sets/src/mage/cards/m/MartialLaw.java index dffa0610bff..fa40616f24b 100644 --- a/Mage.Sets/src/mage/cards/m/MartialLaw.java +++ b/Mage.Sets/src/mage/cards/m/MartialLaw.java @@ -1,15 +1,14 @@ - package mage.cards.m; -import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.common.DetainTargetEffect; +import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.StaticFilters; -import mage.target.common.TargetCreaturePermanent; +import mage.target.common.TargetOpponentsCreaturePermanent; + +import java.util.UUID; /** * @author LevelX2 @@ -17,14 +16,12 @@ import mage.target.common.TargetCreaturePermanent; public final class MartialLaw extends CardImpl { public MartialLaw(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}"); - + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}"); // At the beginning of your upkeep, detain target creature an opponent controls. // (Until your next turn, that creature can't attack or block and its activated abilities can't be activated.) Ability ability = new BeginningOfUpkeepTriggeredAbility(new DetainTargetEffect()); - TargetCreaturePermanent target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); - ability.addTarget(target); + ability.addTarget(new TargetOpponentsCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java b/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java index 438b6efae01..5e38afcef06 100644 --- a/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java +++ b/Mage.Sets/src/mage/cards/m/MaskOfTheMimic.java @@ -17,6 +17,7 @@ import mage.filter.predicate.mageobject.NamePredicate; import mage.filter.predicate.permanent.TokenPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -41,7 +42,7 @@ public final class MaskOfTheMimic extends CardImpl { // Search your library for a card with the same name as target nontoken creature and put that card onto the battlefield. Then shuffle your library. this.getSpellAbility().addEffect(new MaskOfTheMimicEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private MaskOfTheMimic(final MaskOfTheMimic card) { diff --git a/Mage.Sets/src/mage/cards/m/MasterOfDiversion.java b/Mage.Sets/src/mage/cards/m/MasterOfDiversion.java index eca0f1d9ded..aed3b066464 100644 --- a/Mage.Sets/src/mage/cards/m/MasterOfDiversion.java +++ b/Mage.Sets/src/mage/cards/m/MasterOfDiversion.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -35,7 +36,7 @@ public final class MasterOfDiversion extends CardImpl { // Whenever Master of Diversion attacks, tap target creature defending player controls. Ability ability = new AttacksTriggeredAbility(new TapTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java b/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java index bf12a53d574..6eb265804c2 100644 --- a/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java +++ b/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java @@ -25,8 +25,11 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author TheElk801 @@ -48,7 +51,7 @@ public final class MathasFiendSeeker extends CardImpl { // At the beginning of your end step, put a bounty counter on target creature an opponent controls. For as long as that creature has a bounty counter on it, it has "When this creature dies, each opponent draws a card and gains 2 life." Ability ability = new BeginningOfEndStepTriggeredAbility(new AddCountersTargetEffect(CounterType.BOUNTY.createInstance())); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); Ability ability2 = new DiesSourceTriggeredAbility(new DrawCardAllEffect(1, TargetController.OPPONENT)); ability2.addEffect(new OpponentsGainLifeEffect()); Effect effect = new MathasFiendSeekerGainAbilityEffect(ability2, Duration.Custom, rule); diff --git a/Mage.Sets/src/mage/cards/m/MatsuTribeSniper.java b/Mage.Sets/src/mage/cards/m/MatsuTribeSniper.java index eee0f6b76cb..e6347dc4070 100644 --- a/Mage.Sets/src/mage/cards/m/MatsuTribeSniper.java +++ b/Mage.Sets/src/mage/cards/m/MatsuTribeSniper.java @@ -18,6 +18,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class MatsuTribeSniper extends CardImpl { // {t}: Matsu-Tribe Sniper deals 1 damage to target creature with flying. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Whenever Matsu-Tribe Sniper deals damage to a creature, tap that creature and it doesn't untap during its controller's next untap step. diff --git a/Mage.Sets/src/mage/cards/m/MerfolkAssassin.java b/Mage.Sets/src/mage/cards/m/MerfolkAssassin.java index 98873f31acd..19d2af39adf 100644 --- a/Mage.Sets/src/mage/cards/m/MerfolkAssassin.java +++ b/Mage.Sets/src/mage/cards/m/MerfolkAssassin.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class MerfolkAssassin extends CardImpl { // {tap}: Destroy target creature with islandwalk. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MerfolkSeastalkers.java b/Mage.Sets/src/mage/cards/m/MerfolkSeastalkers.java index 2d4d25f7e49..ca389f8ba5d 100644 --- a/Mage.Sets/src/mage/cards/m/MerfolkSeastalkers.java +++ b/Mage.Sets/src/mage/cards/m/MerfolkSeastalkers.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class MerfolkSeastalkers extends CardImpl { this.addAbility(new IslandwalkAbility()); SimpleActivatedAbility ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{2}{U}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java b/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java index ca499fa5ac7..08dd298229a 100644 --- a/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java +++ b/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java @@ -14,6 +14,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -43,7 +44,7 @@ public final class MerfolkSovereign extends CardImpl { // {tap}: Target Merfolk creature can't be blocked this turn. Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter2)); + ability.addTarget(new TargetPermanent(filter2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MightMakesRight.java b/Mage.Sets/src/mage/cards/m/MightMakesRight.java index 6ff21afd3be..4d45e70af2e 100644 --- a/Mage.Sets/src/mage/cards/m/MightMakesRight.java +++ b/Mage.Sets/src/mage/cards/m/MightMakesRight.java @@ -17,11 +17,14 @@ import mage.filter.StaticFilters; import mage.game.Controllable; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.List; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author Quercitron */ @@ -38,7 +41,7 @@ public final class MightMakesRight extends CardImpl { ability.addEffect(new GainAbilityTargetEffect( HasteAbility.getInstance(), Duration.EndOfTurn ).setText("It gains haste until end of turn")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MightWeaver.java b/Mage.Sets/src/mage/cards/m/MightWeaver.java index 29dc9d2cea2..8d2d8000e17 100644 --- a/Mage.Sets/src/mage/cards/m/MightWeaver.java +++ b/Mage.Sets/src/mage/cards/m/MightWeaver.java @@ -18,6 +18,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -42,7 +43,7 @@ public final class MightWeaver extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MinamoSightbender.java b/Mage.Sets/src/mage/cards/m/MinamoSightbender.java index 5120222bc51..7b4b16a5072 100644 --- a/Mage.Sets/src/mage/cards/m/MinamoSightbender.java +++ b/Mage.Sets/src/mage/cards/m/MinamoSightbender.java @@ -13,6 +13,7 @@ import mage.constants.ComparisonType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.PowerTargetAdjuster; @@ -36,7 +37,7 @@ public final class MinamoSightbender extends CardImpl { // {X}, {T}: Target creature with power X or less can't be blocked this turn. Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(), new ManaCostsImpl<>("{X}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.setTargetAdjuster(new PowerTargetAdjuster(ComparisonType.OR_LESS)); ability.addCost(new TapSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/MirrorStrike.java b/Mage.Sets/src/mage/cards/m/MirrorStrike.java index 71b5fc782a6..f0c984ccebb 100644 --- a/Mage.Sets/src/mage/cards/m/MirrorStrike.java +++ b/Mage.Sets/src/mage/cards/m/MirrorStrike.java @@ -17,6 +17,7 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.UnblockedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class MirrorStrike extends CardImpl { // All combat damage that would be dealt to you this turn by target unblocked creature is dealt to its controller instead. this.getSpellAbility().addEffect(new MirrorStrikeEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private MirrorStrike(final MirrorStrike card) { diff --git a/Mage.Sets/src/mage/cards/m/MishrasFactory.java b/Mage.Sets/src/mage/cards/m/MishrasFactory.java index 28abadfa49c..8a2217455ca 100644 --- a/Mage.Sets/src/mage/cards/m/MishrasFactory.java +++ b/Mage.Sets/src/mage/cards/m/MishrasFactory.java @@ -13,6 +13,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.game.permanent.token.custom.CreatureToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -46,7 +47,7 @@ public final class MishrasFactory extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new BoostTargetEffect(1, 1, Duration.EndOfTurn), new TapSourceCost() ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MistbladeShinobi.java b/Mage.Sets/src/mage/cards/m/MistbladeShinobi.java index 9959e14301a..08d0839ba63 100644 --- a/Mage.Sets/src/mage/cards/m/MistbladeShinobi.java +++ b/Mage.Sets/src/mage/cards/m/MistbladeShinobi.java @@ -11,6 +11,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.ThatPlayerControlsTargetAdjuster; @@ -37,7 +38,7 @@ public final class MistbladeShinobi extends CardImpl { // Whenever Mistblade Shinobi deals combat damage to a player, you may return target creature that player controls to its owner's hand. Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new ReturnToHandTargetEffect(), true, true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.setTargetAdjuster(new ThatPlayerControlsTargetAdjuster()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MizziumMortars.java b/Mage.Sets/src/mage/cards/m/MizziumMortars.java index af8e09f6bfc..e04f5b04a4b 100644 --- a/Mage.Sets/src/mage/cards/m/MizziumMortars.java +++ b/Mage.Sets/src/mage/cards/m/MizziumMortars.java @@ -8,10 +8,13 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -21,7 +24,7 @@ public final class MizziumMortars extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}"); // MizziumMortars deals 4 damage to target creature you don't control. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().addEffect(new DamageTargetEffect(4)); // Overload {3}{R}{R}{R} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") diff --git a/Mage.Sets/src/mage/cards/m/MizziumSkin.java b/Mage.Sets/src/mage/cards/m/MizziumSkin.java index 4e64224f007..1d70c946bec 100644 --- a/Mage.Sets/src/mage/cards/m/MizziumSkin.java +++ b/Mage.Sets/src/mage/cards/m/MizziumSkin.java @@ -14,8 +14,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_CONTROLLED; + /** * @@ -29,7 +32,7 @@ public final class MizziumSkin extends CardImpl { // Target creature you control gets +0/+1 and gains hexproof until end of turn. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_CONTROLLED)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_CONTROLLED)); this.getSpellAbility().addEffect(new BoostTargetEffect(0,1, Duration.EndOfTurn).setText("target creature you control gets +0/+1")); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HexproofAbility.getInstance(), Duration.EndOfTurn).setText("and gains hexproof until end of turn")); @@ -47,4 +50,4 @@ public final class MizziumSkin extends CardImpl { public MizziumSkin copy() { return new MizziumSkin(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/m/MoltenFrame.java b/Mage.Sets/src/mage/cards/m/MoltenFrame.java index f36e9804ec9..2a889f2eeaa 100644 --- a/Mage.Sets/src/mage/cards/m/MoltenFrame.java +++ b/Mage.Sets/src/mage/cards/m/MoltenFrame.java @@ -10,6 +10,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class MoltenFrame extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}"); this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}"))); } diff --git a/Mage.Sets/src/mage/cards/m/MomentOfValor.java b/Mage.Sets/src/mage/cards/m/MomentOfValor.java index dda0fef5ac3..400b9420ae6 100644 --- a/Mage.Sets/src/mage/cards/m/MomentOfValor.java +++ b/Mage.Sets/src/mage/cards/m/MomentOfValor.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -39,7 +40,7 @@ public final class MomentOfValor extends CardImpl { // * Destroy target creature with power 4 or greater. Mode mode = new Mode(new DestroyTargetEffect()); - mode.addTarget(new TargetCreaturePermanent(filter)); + mode.addTarget(new TargetPermanent(filter)); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/m/MoonlightHunt.java b/Mage.Sets/src/mage/cards/m/MoonlightHunt.java index 43afb96001b..941a51b1a72 100644 --- a/Mage.Sets/src/mage/cards/m/MoonlightHunt.java +++ b/Mage.Sets/src/mage/cards/m/MoonlightHunt.java @@ -13,10 +13,13 @@ import mage.filter.predicate.Predicates; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -27,7 +30,7 @@ public final class MoonlightHunt extends CardImpl { // Choose target creature you don't control. Each creature you control that's a Wolf or Werewolf deals damage equal to its power to that creature. this.getSpellAbility().addEffect(new MoonlightHuntEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private MoonlightHunt(final MoonlightHunt card) { diff --git a/Mage.Sets/src/mage/cards/m/Mosstodon.java b/Mage.Sets/src/mage/cards/m/Mosstodon.java index 96b104ab4e8..f2f8295d7a9 100644 --- a/Mage.Sets/src/mage/cards/m/Mosstodon.java +++ b/Mage.Sets/src/mage/cards/m/Mosstodon.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class Mosstodon extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{1}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MsBumbleflower.java b/Mage.Sets/src/mage/cards/m/MsBumbleflower.java index ecf246926ce..59bcd8bb050 100644 --- a/Mage.Sets/src/mage/cards/m/MsBumbleflower.java +++ b/Mage.Sets/src/mage/cards/m/MsBumbleflower.java @@ -1,36 +1,37 @@ package mage.cards.m; -import java.util.*; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SpellCastControllerTriggeredAbility; -import mage.abilities.effects.Effect; -import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.IfAbilityHasResolvedXTimesEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.VigilanceAbility; -import mage.constants.*; -import mage.counters.CounterType; -import mage.filter.StaticFilters; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.counters.CounterType; +import mage.filter.StaticFilters; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetOpponent; import mage.target.targetpointer.FirstTargetPointer; import mage.target.targetpointer.SecondTargetPointer; import mage.watchers.common.AbilityResolvedWatcher; +import java.util.UUID; + /** - * * @author DreamWaker */ public final class MsBumbleflower extends CardImpl { public MsBumbleflower(UUID ownerId, CardSetInfo setInfo) { - super(ownerId, setInfo, new CardType[] { CardType.CREATURE }, "{1}{G}{W}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{W}{U}"); this.supertype.add(SuperType.LEGENDARY); this.subtype.add(SubType.RABBIT); @@ -43,18 +44,18 @@ public final class MsBumbleflower extends CardImpl { // Whenever you cast a spell, target opponent draws a card. Put a +1/+1 counter on target creature. It gains // flying until end of turn. If this is the second time this ability has resolved this turn, you draw two cards. - Effect draw = new DrawCardTargetEffect(1); - draw.setTargetPointer(new FirstTargetPointer()); - Effect counters = new AddCountersTargetEffect(CounterType.P1P1.createInstance()); - counters.setTargetPointer(new SecondTargetPointer()); - Effect flying = new GainAbilityTargetEffect(FlyingAbility.getInstance()).setText("It gains flying until end of turn."); - flying.setTargetPointer(new SecondTargetPointer()); - Ability ability = new SpellCastControllerTriggeredAbility(draw,StaticFilters.FILTER_SPELL_A, false); + Ability ability = new SpellCastControllerTriggeredAbility( + new DrawCardTargetEffect(1), StaticFilters.FILTER_SPELL_A, false + ); ability.addTarget(new TargetOpponent()); - ability.addEffect(counters); - ability.addEffect(flying); - ability.addTarget(new TargetCreaturePermanent(1)); - ability.addEffect(new IfAbilityHasResolvedXTimesEffect(2, new DrawCardSourceControllerEffect(2, true))); + ability.addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance()) + .setTargetPointer(new SecondTargetPointer())); + ability.addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance()) + .setText("It gains flying until end of turn.").setTargetPointer(new SecondTargetPointer())); + ability.addTarget(new TargetCreaturePermanent()); + ability.addEffect(new IfAbilityHasResolvedXTimesEffect( + 2, new DrawCardSourceControllerEffect(2, true + ))); this.addAbility(ability, new AbilityResolvedWatcher()); } diff --git a/Mage.Sets/src/mage/cards/m/MurderousBetrayal.java b/Mage.Sets/src/mage/cards/m/MurderousBetrayal.java index 4c6f66c45a0..21d3bacf9e3 100644 --- a/Mage.Sets/src/mage/cards/m/MurderousBetrayal.java +++ b/Mage.Sets/src/mage/cards/m/MurderousBetrayal.java @@ -15,9 +15,12 @@ import mage.constants.Zone; import mage.filter.StaticFilters; import mage.game.Game; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author choiseul11 @@ -31,7 +34,7 @@ public final class MurderousBetrayal extends CardImpl { Effect effect = new DestroyTargetEffect(true); Ability ability = new SimpleActivatedAbility(effect, new MurderousBetrayalCost()); ability.addCost(new ManaCostsImpl<>("{B}{B}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java b/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java index 0ceae7d2435..e410c72f58c 100644 --- a/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java +++ b/Mage.Sets/src/mage/cards/m/MurderousCompulsion.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class MurderousCompulsion extends CardImpl { // Destroy target tapped creature. getSpellAbility().addEffect(new DestroyTargetEffect()); - getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + getSpellAbility().addTarget(new TargetPermanent(filter)); // Madness {1}{B} (If you discard card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) this.addAbility(new MadnessAbility(new ManaCostsImpl<>("{1}{B}"))); diff --git a/Mage.Sets/src/mage/cards/m/MurderousSpoils.java b/Mage.Sets/src/mage/cards/m/MurderousSpoils.java index e400860f079..50255a1a2a0 100644 --- a/Mage.Sets/src/mage/cards/m/MurderousSpoils.java +++ b/Mage.Sets/src/mage/cards/m/MurderousSpoils.java @@ -16,9 +16,12 @@ import mage.constants.Outcome; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author wetterlicht @@ -29,7 +32,7 @@ public final class MurderousSpoils extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{B}"); // Destroy target nonblack creature. It can't be regenerated. You gain control of all Equipment that was attached to it. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new MurderousSpoilsEffect()); } diff --git a/Mage.Sets/src/mage/cards/m/Mutiny.java b/Mage.Sets/src/mage/cards/m/Mutiny.java index 1ff7b50912a..40caae27b00 100644 --- a/Mage.Sets/src/mage/cards/m/Mutiny.java +++ b/Mage.Sets/src/mage/cards/m/Mutiny.java @@ -31,7 +31,7 @@ public final class Mutiny extends CardImpl { // Target creature an opponent controls deals damage equal to its power to another target creature that player controls. this.getSpellAbility().addEffect(new MutinyEffect()); this.getSpellAbility().addTarget(new MutinyFirstTarget(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("another target creature that player controls"))); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterCreaturePermanent("another target creature that player controls"))); } private Mutiny(final Mutiny card) { diff --git a/Mage.Sets/src/mage/cards/m/MystifyingMaze.java b/Mage.Sets/src/mage/cards/m/MystifyingMaze.java index 6ff0835d94f..cb9104a1ba4 100644 --- a/Mage.Sets/src/mage/cards/m/MystifyingMaze.java +++ b/Mage.Sets/src/mage/cards/m/MystifyingMaze.java @@ -19,6 +19,7 @@ import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -44,7 +45,7 @@ public final class MystifyingMaze extends CardImpl { // {4}, {T}: Exile target attacking creature an opponent controls. At the beginning of the next end step, return it to the battlefield tapped under its owner's control. Ability ability = new SimpleActivatedAbility(new MystifyingMazeEffect(), new ManaCostsImpl<>("{4}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NahirisMachinations.java b/Mage.Sets/src/mage/cards/n/NahirisMachinations.java index a37a28dda48..284d29c2d7f 100644 --- a/Mage.Sets/src/mage/cards/n/NahirisMachinations.java +++ b/Mage.Sets/src/mage/cards/n/NahirisMachinations.java @@ -15,6 +15,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -34,7 +35,7 @@ public final class NahirisMachinations extends CardImpl { // {1}{R}: Nahiri's Machinations deals 1 damage to target blocking creature. ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new ManaCostsImpl<>("{1}{R}")); - ability.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature("blocking creature"))); + ability.addTarget(new TargetPermanent(new FilterBlockingCreature("blocking creature"))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NaturesWay.java b/Mage.Sets/src/mage/cards/n/NaturesWay.java index 451ade62eef..aa31e9ba1ac 100644 --- a/Mage.Sets/src/mage/cards/n/NaturesWay.java +++ b/Mage.Sets/src/mage/cards/n/NaturesWay.java @@ -9,11 +9,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -31,7 +34,7 @@ public final class NaturesWay extends CardImpl { // It deals damage equal to its power to target creature you don't control. this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect("It")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); // second target + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); // second target } private NaturesWay(final NaturesWay card) { diff --git a/Mage.Sets/src/mage/cards/n/NazahnReveredBladesmith.java b/Mage.Sets/src/mage/cards/n/NazahnReveredBladesmith.java index 190e36257b9..8abdfc14b67 100644 --- a/Mage.Sets/src/mage/cards/n/NazahnReveredBladesmith.java +++ b/Mage.Sets/src/mage/cards/n/NazahnReveredBladesmith.java @@ -21,8 +21,8 @@ import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.filter.predicate.permanent.EquippedPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInLibrary; -import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.TargetAdjuster; import java.util.UUID; @@ -61,7 +61,7 @@ public final class NazahnReveredBladesmith extends CardImpl { // Whenever an equipped creature you control attacks, you may tap target creature defending player controls. Ability ability = new AttacksCreatureYouControlTriggeredAbility(new NazahnTapEffect(), true, equippedFilter, true); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature defending player controls"))); + ability.addTarget(new TargetPermanent(new FilterCreaturePermanent("creature defending player controls"))); ability.setTargetAdjuster(NazahnReveredBladesmithAdjuster.instance); this.addAbility(ability); } @@ -89,8 +89,7 @@ enum NazahnReveredBladesmithAdjuster implements TargetAdjuster { } } ability.getTargets().clear(); - TargetCreaturePermanent target = new TargetCreaturePermanent(filterDefender); - ability.addTarget(target); + ability.addTarget(new TargetPermanent(filterDefender)); } } diff --git a/Mage.Sets/src/mage/cards/n/NeedletoothRaptor.java b/Mage.Sets/src/mage/cards/n/NeedletoothRaptor.java index d69ab55059b..17a6e1e8ebb 100644 --- a/Mage.Sets/src/mage/cards/n/NeedletoothRaptor.java +++ b/Mage.Sets/src/mage/cards/n/NeedletoothRaptor.java @@ -11,8 +11,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author L_J @@ -27,7 +30,7 @@ public final class NeedletoothRaptor extends CardImpl { // Enrage — Whenever Needletooth Raptor is dealt damage, it deals 5 damage to target creature an opponent controls. Ability ability = new DealtDamageToSourceTriggeredAbility(new DamageTargetEffect(5).setText("it deals 5 damage to target creature an opponent controls"), false, true); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/Nekrataal.java b/Mage.Sets/src/mage/cards/n/Nekrataal.java index 4b257515b8c..3de53b4175a 100644 --- a/Mage.Sets/src/mage/cards/n/Nekrataal.java +++ b/Mage.Sets/src/mage/cards/n/Nekrataal.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -44,7 +45,7 @@ public final class Nekrataal extends CardImpl { // When Nekrataal enters the battlefield, destroy target nonartifact, nonblack creature. That creature can't be regenerated. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(true)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NettlingImp.java b/Mage.Sets/src/mage/cards/n/NettlingImp.java index 9112a413f5b..2726cec45c9 100644 --- a/Mage.Sets/src/mage/cards/n/NettlingImp.java +++ b/Mage.Sets/src/mage/cards/n/NettlingImp.java @@ -19,6 +19,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.ControlledFromStartOfControllerTurnPredicate; import mage.game.Game; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -52,7 +53,7 @@ public final class NettlingImp extends CardImpl { new TapSourceCost(), NettlingImpTurnCondition.instance ); ability.addEffect(new NettlingImpDelayedDestroyEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NeurokTransmuter.java b/Mage.Sets/src/mage/cards/n/NeurokTransmuter.java index 0e81a40e425..6d0df71f8d2 100644 --- a/Mage.Sets/src/mage/cards/n/NeurokTransmuter.java +++ b/Mage.Sets/src/mage/cards/n/NeurokTransmuter.java @@ -17,6 +17,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -47,7 +48,7 @@ public final class NeurokTransmuter extends CardImpl { Effect blueEffect = new BecomesColorTargetEffect(ObjectColor.BLUE, Duration.EndOfTurn); blueEffect.setText("Until end of turn, target artifact creature becomes blue"); Ability becomeBlueAbility = new SimpleActivatedAbility(blueEffect, new ManaCostsImpl<>("{U}")); - becomeBlueAbility.addTarget(new TargetCreaturePermanent(filter)); + becomeBlueAbility.addTarget(new TargetPermanent(filter)); Effect loseArtifactEffect = new LoseArtifactTypeTargetEffect(Duration.EndOfTurn); loseArtifactEffect.setText("and isn't an artifact"); becomeBlueAbility.addEffect(loseArtifactEffect); diff --git a/Mage.Sets/src/mage/cards/n/NiblisOfFrost.java b/Mage.Sets/src/mage/cards/n/NiblisOfFrost.java index 37f28345f74..ab718b6eb53 100644 --- a/Mage.Sets/src/mage/cards/n/NiblisOfFrost.java +++ b/Mage.Sets/src/mage/cards/n/NiblisOfFrost.java @@ -12,10 +12,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author fireshoes */ @@ -35,7 +38,7 @@ public final class NiblisOfFrost extends CardImpl { // Whenever you cast an instant or sorcery spell, tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step. Ability ability = new SpellCastControllerTriggeredAbility(new TapTargetEffect(), StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("That creature")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NomadDecoy.java b/Mage.Sets/src/mage/cards/n/NomadDecoy.java index b4959d7d3b1..dae84f6f8d9 100644 --- a/Mage.Sets/src/mage/cards/n/NomadDecoy.java +++ b/Mage.Sets/src/mage/cards/n/NomadDecoy.java @@ -2,11 +2,11 @@ package mage.cards.n; import mage.MageInt; import mage.abilities.Ability; +import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.condition.common.ThresholdCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; diff --git a/Mage.Sets/src/mage/cards/n/Norritt.java b/Mage.Sets/src/mage/cards/n/Norritt.java index 6985a8698cf..c76919d7ec1 100644 --- a/Mage.Sets/src/mage/cards/n/Norritt.java +++ b/Mage.Sets/src/mage/cards/n/Norritt.java @@ -22,6 +22,7 @@ import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.permanent.ControlledFromStartOfControllerTurnPredicate; import mage.game.Game; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -55,7 +56,7 @@ public final class Norritt extends CardImpl { // {T}: Untap target blue creature. Ability ability1 = new SimpleActivatedAbility(new UntapTargetEffect(), new TapSourceCost()); - ability1.addTarget(new TargetCreaturePermanent(filterBlue)); + ability1.addTarget(new TargetPermanent(filterBlue)); this.addAbility(ability1); // {T}: Choose target non-Wall creature the active player has controlled continuously since the beginning of the turn. That creature attacks this turn if able. If it doesn't, destroy it at the beginning of the next end step. Activate this ability only before attackers are declared. @@ -66,7 +67,7 @@ public final class Norritt extends CardImpl { new TapSourceCost(), BeforeAttackersAreDeclaredCondition.instance ); ability2.addEffect(new NorrittDelayedDestroyEffect()); - ability2.addTarget(new TargetCreaturePermanent(filterCreature)); + ability2.addTarget(new TargetPermanent(filterCreature)); this.addAbility(ability2); } diff --git a/Mage.Sets/src/mage/cards/n/NosyGoblin.java b/Mage.Sets/src/mage/cards/n/NosyGoblin.java index aef639a100d..5ff6ce49e53 100644 --- a/Mage.Sets/src/mage/cards/n/NosyGoblin.java +++ b/Mage.Sets/src/mage/cards/n/NosyGoblin.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.card.FaceDownPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class NosyGoblin extends CardImpl { // {tap}, Sacrifice Nosy Goblin: Destroy target face-down creature. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NotoriousAssassin.java b/Mage.Sets/src/mage/cards/n/NotoriousAssassin.java index 95def99ef00..88ec18e7f11 100644 --- a/Mage.Sets/src/mage/cards/n/NotoriousAssassin.java +++ b/Mage.Sets/src/mage/cards/n/NotoriousAssassin.java @@ -14,8 +14,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LoneFox @@ -34,7 +37,7 @@ public final class NotoriousAssassin extends CardImpl { Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(true), new ManaCostsImpl<>("{2}{B}")); ability.addCost(new TapSourceCost()); ability.addCost(new DiscardCardCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NoxiousDragon.java b/Mage.Sets/src/mage/cards/n/NoxiousDragon.java index 457d9dcdb89..f8ff2ac679d 100644 --- a/Mage.Sets/src/mage/cards/n/NoxiousDragon.java +++ b/Mage.Sets/src/mage/cards/n/NoxiousDragon.java @@ -14,6 +14,7 @@ import mage.constants.SubType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ManaValuePredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class NoxiousDragon extends CardImpl { // When Noxious Dragon dies, you may destroy target creature with converted mana cost 3 or less. Ability ability = new DiesSourceTriggeredAbility(new DestroyTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java b/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java index cfc81a62686..e4786a4964f 100644 --- a/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java +++ b/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java @@ -16,8 +16,11 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author fireshoes @@ -35,7 +38,7 @@ public final class NoxiousGearhulk extends CardImpl { // When Noxious Gearhulk enters the battlefield, you may destroy another target creature. If a creature is destroyed this way, you gain life equal to its toughness. Ability ability = new EntersBattlefieldTriggeredAbility(new NoxiousGearhulkEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OathOfChandra.java b/Mage.Sets/src/mage/cards/o/OathOfChandra.java index e7a3bd95a8d..d3cb3b769d9 100644 --- a/Mage.Sets/src/mage/cards/o/OathOfChandra.java +++ b/Mage.Sets/src/mage/cards/o/OathOfChandra.java @@ -14,6 +14,7 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.Watcher; @@ -21,6 +22,8 @@ import java.util.HashSet; import java.util.Set; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author LevelX2 */ @@ -32,7 +35,7 @@ public final class OathOfChandra extends CardImpl { // When Oath of Chandra enters the battlefield, it deals 3 damage to target creature an opponent controls. Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(3, "it")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); // At the beginning of each end step, if a planeswalker entered the battlefield under your control this turn, Oath of Chandra deals 2 damage to each opponent. diff --git a/Mage.Sets/src/mage/cards/o/OctopusUmbra.java b/Mage.Sets/src/mage/cards/o/OctopusUmbra.java index 14dbf1bc87f..34b48a0d632 100644 --- a/Mage.Sets/src/mage/cards/o/OctopusUmbra.java +++ b/Mage.Sets/src/mage/cards/o/OctopusUmbra.java @@ -48,7 +48,7 @@ public final class OctopusUmbra extends CardImpl { // Enchanted creature has base power and toughness 8/8 and has "Whenever this creature attacks, you may tap target creature with power 8 or less." Ability abilityToAdd = new AttacksTriggeredAbility(new TapTargetEffect(), true); - abilityToAdd.addTarget(new TargetCreaturePermanent(filter)); + abilityToAdd.addTarget(new TargetPermanent(filter)); ability = new SimpleStaticAbility( new SetBasePowerToughnessAttachedEffect(8, 8, AttachmentType.AURA) ); diff --git a/Mage.Sets/src/mage/cards/o/OgreGatecrasher.java b/Mage.Sets/src/mage/cards/o/OgreGatecrasher.java index f9eeaafab69..326830ce6ce 100644 --- a/Mage.Sets/src/mage/cards/o/OgreGatecrasher.java +++ b/Mage.Sets/src/mage/cards/o/OgreGatecrasher.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class OgreGatecrasher extends CardImpl { // When Ogre Gatecrasher enters the battlefield, destroy target creature with defender. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OhranYeti.java b/Mage.Sets/src/mage/cards/o/OhranYeti.java index 092a8f5f895..0155af89ca0 100644 --- a/Mage.Sets/src/mage/cards/o/OhranYeti.java +++ b/Mage.Sets/src/mage/cards/o/OhranYeti.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class OhranYeti extends CardImpl { // {2}{S}: Target snow creature gains first strike until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect( FirstStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{2}{S}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java b/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java index 2c7bda1aa80..4f357294898 100644 --- a/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java +++ b/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java @@ -19,6 +19,7 @@ import mage.constants.SuperType; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -52,7 +53,7 @@ public final class OliviaVoldaren extends CardImpl { .setText("{this} deals 1 damage to another target creature"), new ManaCostsImpl<>("{1}{R}") ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); Effect effect = new AddCardSubTypeTargetEffect(SubType.VAMPIRE, Duration.WhileOnBattlefield); effect.setText("That creature becomes a Vampire in addition to its other types"); ability.addEffect(effect); @@ -63,7 +64,7 @@ public final class OliviaVoldaren extends CardImpl { Ability ability2 = new SimpleActivatedAbility( new GainControlTargetEffect(Duration.WhileControlled), new ManaCostsImpl<>("{3}{B}{B}") ); - ability2.addTarget(new TargetCreaturePermanent(vampireFilter)); + ability2.addTarget(new TargetPermanent(vampireFilter)); this.addAbility(ability2); } diff --git a/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java b/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java index a277949ac54..40dedcfb3fd 100644 --- a/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java +++ b/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class OliviasBloodsworn extends CardImpl { // {R}: Target Vampire gains haste until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{R}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OminousSphinx.java b/Mage.Sets/src/mage/cards/o/OminousSphinx.java index 0ca9748423c..523392f371c 100644 --- a/Mage.Sets/src/mage/cards/o/OminousSphinx.java +++ b/Mage.Sets/src/mage/cards/o/OminousSphinx.java @@ -12,8 +12,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author spjspj @@ -32,7 +35,7 @@ public final class OminousSphinx extends CardImpl { // Whenever you cycle or discard a card,target creature an opponent controls gets -2/-0 until end of turn. CycleOrDiscardControllerTriggeredAbility ability = new CycleOrDiscardControllerTriggeredAbility(new BoostTargetEffect(-2, -0, Duration.EndOfTurn)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OrcSureshot.java b/Mage.Sets/src/mage/cards/o/OrcSureshot.java index 2775f54e368..a3b18451bac 100644 --- a/Mage.Sets/src/mage/cards/o/OrcSureshot.java +++ b/Mage.Sets/src/mage/cards/o/OrcSureshot.java @@ -10,10 +10,13 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -31,7 +34,7 @@ public final class OrcSureshot extends CardImpl { Ability ability = new EntersBattlefieldControlledTriggeredAbility( new BoostTargetEffect(-1,-1, Duration.EndOfTurn), StaticFilters.FILTER_ANOTHER_CREATURE); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OrcishCaptain.java b/Mage.Sets/src/mage/cards/o/OrcishCaptain.java index 7babdaf7515..5ae5a5337ed 100644 --- a/Mage.Sets/src/mage/cards/o/OrcishCaptain.java +++ b/Mage.Sets/src/mage/cards/o/OrcishCaptain.java @@ -15,6 +15,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class OrcishCaptain extends CardImpl { // {1}: Flip a coin. If you win the flip, target Orc creature gets +2/+0 until end of turn. If you lose the flip, it gets -0/-2 until end of turn. Ability ability = new SimpleActivatedAbility(new OrcishCaptainEffect(), new GenericManaCost(1)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OrcishHealer.java b/Mage.Sets/src/mage/cards/o/OrcishHealer.java index f3628345b66..330e5e64b03 100644 --- a/Mage.Sets/src/mage/cards/o/OrcishHealer.java +++ b/Mage.Sets/src/mage/cards/o/OrcishHealer.java @@ -19,6 +19,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -51,13 +52,13 @@ public final class OrcishHealer extends CardImpl { // {B}{B}{R}, {tap}: Regenerate target black or green creature. ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new ManaCostsImpl<>("{B}{B}{R}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // {R}{G}{G}, {tap}: Regenerate target black or green creature. ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new ManaCostsImpl<>("{R}{G}{G}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OrderOfSuccession.java b/Mage.Sets/src/mage/cards/o/OrderOfSuccession.java index 9563f5df456..13901ce9c57 100644 --- a/Mage.Sets/src/mage/cards/o/OrderOfSuccession.java +++ b/Mage.Sets/src/mage/cards/o/OrderOfSuccession.java @@ -21,6 +21,7 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.players.PlayerList; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -98,7 +99,7 @@ class OrderOfSuccessionEffect extends OneShotEffect { if (currentPlayer != null && game.getState().getPlayersInRange(controller.getId(), game).contains(currentPlayer.getId())) { FilterCreaturePermanent filter = new FilterCreaturePermanent("creature controlled by " + nextPlayer.getLogName()); filter.add(new ControllerIdPredicate(nextPlayer.getId())); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); target.withNotTarget(true); if (target.canChoose(currentPlayer.getId(), source, game)) { if (currentPlayer.chooseTarget(outcome, target, source, game)) { diff --git a/Mage.Sets/src/mage/cards/o/OtepecHuntmaster.java b/Mage.Sets/src/mage/cards/o/OtepecHuntmaster.java index 88824db9976..ce862ee9d13 100644 --- a/Mage.Sets/src/mage/cards/o/OtepecHuntmaster.java +++ b/Mage.Sets/src/mage/cards/o/OtepecHuntmaster.java @@ -18,6 +18,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -47,7 +48,7 @@ public final class OtepecHuntmaster extends CardImpl { // {T}: Target Dinosaur gains haste until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter2)); + ability.addTarget(new TargetPermanent(filter2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OuterRimSlaver.java b/Mage.Sets/src/mage/cards/o/OuterRimSlaver.java index 9e71e43fb55..167b552eac6 100644 --- a/Mage.Sets/src/mage/cards/o/OuterRimSlaver.java +++ b/Mage.Sets/src/mage/cards/o/OuterRimSlaver.java @@ -1,6 +1,5 @@ package mage.cards.o; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -13,10 +12,11 @@ import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.other.AnotherTargetPredicate; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author Styxo */ public final class OuterRimSlaver extends CardImpl { @@ -32,14 +32,10 @@ public final class OuterRimSlaver extends CardImpl { Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.BOUNTY.createInstance()) .setText("you may put a bounty counter on target creature"), true); ability.addEffect(new FightTargetsEffect().setText("If you do, another target creature fights that creature")); - TargetCreaturePermanent target = new TargetCreaturePermanent(new FilterCreaturePermanent("creature to put a bounty counter on it")); - target.setTargetTag(1); - ability.addTarget(target); + ability.addTarget(new TargetPermanent(new FilterCreaturePermanent("creature to put a bounty counter on it")).setTargetTag(1)); FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature to fight that creature that gets the bounty counter"); filter.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter); - target2.setTargetTag(2); - ability.addTarget(target2); + ability.addTarget(new TargetPermanent(filter).setTargetTag(2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/Outmaneuver.java b/Mage.Sets/src/mage/cards/o/Outmaneuver.java index d08a604e652..8278746a83b 100644 --- a/Mage.Sets/src/mage/cards/o/Outmaneuver.java +++ b/Mage.Sets/src/mage/cards/o/Outmaneuver.java @@ -11,6 +11,7 @@ import mage.constants.Outcome; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.BlockedPredicate; import mage.game.Game; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.XTargetsCountAdjuster; @@ -31,7 +32,7 @@ public final class Outmaneuver extends CardImpl { // X target blocked creatures assign their combat damage this turn as though they weren't blocked. this.getSpellAbility().addEffect(new OutmaneuverEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().setTargetAdjuster(new XTargetsCountAdjuster()); } diff --git a/Mage.Sets/src/mage/cards/p/PalaceJailer.java b/Mage.Sets/src/mage/cards/p/PalaceJailer.java index 22d324f9f2f..541d407572a 100644 --- a/Mage.Sets/src/mage/cards/p/PalaceJailer.java +++ b/Mage.Sets/src/mage/cards/p/PalaceJailer.java @@ -25,9 +25,12 @@ import mage.game.ExileZone; import mage.game.Game; import mage.game.events.GameEvent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -47,7 +50,7 @@ public final class PalaceJailer extends CardImpl { // When Palace Jailer enters the battlefield, exile target creature an opponent controls until an opponent becomes the monarch. (That creature returns under its owner's control.) Ability ability = new EntersBattlefieldTriggeredAbility(new PalaceJailerExileEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); ability.addEffect(new CreateDelayedTriggeredAbilityEffect(new OnOpponentBecomesMonarchReturnExiledToBattlefieldAbility())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java b/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java index 388b30f9e13..06fac2cd3a1 100644 --- a/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java +++ b/Mage.Sets/src/mage/cards/p/ParagonOfNewDawns.java @@ -22,6 +22,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -54,7 +55,7 @@ public final class ParagonOfNewDawns extends CardImpl { // {W}, {T}: Another target white creature you control gains vigilance until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{W}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter2)); + ability.addTarget(new TargetPermanent(filter2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/Parch.java b/Mage.Sets/src/mage/cards/p/Parch.java index ce4752cb4e9..5e71aa7ebcb 100644 --- a/Mage.Sets/src/mage/cards/p/Parch.java +++ b/Mage.Sets/src/mage/cards/p/Parch.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetAnyTarget; import mage.target.common.TargetCreaturePermanent; @@ -33,7 +34,7 @@ public final class Parch extends CardImpl { this.getSpellAbility().addEffect(new DamageTargetEffect(2)); this.getSpellAbility().addTarget(new TargetAnyTarget()); Mode mode = new Mode(new DamageTargetEffect(4)); - mode.addTarget(new TargetCreaturePermanent(filter)); + mode.addTarget(new TargetPermanent(filter)); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/p/PathmakerInitiate.java b/Mage.Sets/src/mage/cards/p/PathmakerInitiate.java index 83df1f90516..717473702cb 100644 --- a/Mage.Sets/src/mage/cards/p/PathmakerInitiate.java +++ b/Mage.Sets/src/mage/cards/p/PathmakerInitiate.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class PathmakerInitiate extends CardImpl { // {T}: Target creature with power 2 or less can't be blocked this turn. Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java b/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java index 7460ec51914..6c7cf6cdf17 100644 --- a/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java +++ b/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java @@ -26,9 +26,12 @@ import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author spjspj @@ -48,7 +51,7 @@ public final class PatronOfTheVein extends CardImpl { // When Patron of the Vein enters the battlefield, destroy target creature an opponent controls. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); // Whenever a creature an opponent controls dies, exile it and put a +1/+1 counter on each Vampire you control. diff --git a/Mage.Sets/src/mage/cards/p/PearlspearCourier.java b/Mage.Sets/src/mage/cards/p/PearlspearCourier.java index 5936dee1d0f..b8a75b41b3e 100644 --- a/Mage.Sets/src/mage/cards/p/PearlspearCourier.java +++ b/Mage.Sets/src/mage/cards/p/PearlspearCourier.java @@ -20,6 +20,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -50,7 +51,7 @@ public final class PearlspearCourier extends CardImpl { ability.addEffect(new ConditionalContinuousEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.Custom), SourceTappedCondition.TAPPED,"and has vigilance for as long as {this} remains tapped")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PeelFromReality.java b/Mage.Sets/src/mage/cards/p/PeelFromReality.java index 7d66b23ba79..075dab4e7f6 100644 --- a/Mage.Sets/src/mage/cards/p/PeelFromReality.java +++ b/Mage.Sets/src/mage/cards/p/PeelFromReality.java @@ -5,12 +5,15 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.EachTargetPointer; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author North */ @@ -22,7 +25,7 @@ public final class PeelFromReality extends CardImpl { // Return target creature you control and target creature you don't control to their owners' hands. this.getSpellAbility().addEffect(new ReturnToHandTargetEffect().setTargetPointer(new EachTargetPointer())); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private PeelFromReality(final PeelFromReality card) { diff --git a/Mage.Sets/src/mage/cards/p/Pendelhaven.java b/Mage.Sets/src/mage/cards/p/Pendelhaven.java index cd9b63cdcbe..0975b511791 100644 --- a/Mage.Sets/src/mage/cards/p/Pendelhaven.java +++ b/Mage.Sets/src/mage/cards/p/Pendelhaven.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class Pendelhaven extends CardImpl { this.addAbility(new GreenManaAbility()); // {tap}: Target 1/1 creature gets +1/+2 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 2, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianBloodstock.java b/Mage.Sets/src/mage/cards/p/PhyrexianBloodstock.java index 5b9fe000e32..60bcea585e6 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianBloodstock.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianBloodstock.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class PhyrexianBloodstock extends CardImpl { // When Phyrexian Bloodstock leaves the battlefield, destroy target white creature. It can't be regenerated. Ability ability = new LeavesBattlefieldTriggeredAbility(new DestroyTargetEffect(true), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PiaNalaar.java b/Mage.Sets/src/mage/cards/p/PiaNalaar.java index 80fcf8fee88..89fc86b0178 100644 --- a/Mage.Sets/src/mage/cards/p/PiaNalaar.java +++ b/Mage.Sets/src/mage/cards/p/PiaNalaar.java @@ -22,9 +22,12 @@ import mage.constants.Zone; import mage.filter.StaticFilters; import mage.filter.common.FilterControlledArtifactPermanent; import mage.game.permanent.token.ThopterColorlessToken; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE; + /** * * @author LevelX2 @@ -44,7 +47,7 @@ public final class PiaNalaar extends CardImpl { // {1}{R}: Target artifact creature gets +1/+0 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{R}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_ARTIFACT_CREATURE)); this.addAbility(ability); // {1}, Sacrifice an artifact: Target creature can't block this turn. diff --git a/Mage.Sets/src/mage/cards/p/PierceTheSky.java b/Mage.Sets/src/mage/cards/p/PierceTheSky.java index acb6c5ab383..d2d3a4d0273 100644 --- a/Mage.Sets/src/mage/cards/p/PierceTheSky.java +++ b/Mage.Sets/src/mage/cards/p/PierceTheSky.java @@ -9,6 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class PierceTheSky extends CardImpl { // Pierce the Sky deals 7 damage to target creature with flying. this.getSpellAbility().addEffect(new DamageTargetEffect(7)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private PierceTheSky(final PierceTheSky card) { diff --git a/Mage.Sets/src/mage/cards/p/PietyCharm.java b/Mage.Sets/src/mage/cards/p/PietyCharm.java index 83478fd8b6a..9c7b36ebc2c 100644 --- a/Mage.Sets/src/mage/cards/p/PietyCharm.java +++ b/Mage.Sets/src/mage/cards/p/PietyCharm.java @@ -42,7 +42,7 @@ public final class PietyCharm extends CardImpl { this.getSpellAbility().addTarget(new TargetPermanent(filter1)); // or target Soldier creature gets +2/+2 until end of turn Mode mode = new Mode(new BoostTargetEffect(2, 2, Duration.EndOfTurn)); - mode.addTarget(new TargetCreaturePermanent(filter2)); + mode.addTarget(new TargetPermanent(filter2)); this.getSpellAbility().addMode(mode); // or creatures you control gain vigilance until end of turn. mode = new Mode(new GainAbilityAllEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES)); diff --git a/Mage.Sets/src/mage/cards/p/PillarOfLight.java b/Mage.Sets/src/mage/cards/p/PillarOfLight.java index 343a9f80bb8..93cc7682274 100644 --- a/Mage.Sets/src/mage/cards/p/PillarOfLight.java +++ b/Mage.Sets/src/mage/cards/p/PillarOfLight.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class PillarOfLight extends CardImpl { // Exile target creature with toughness 4 or greater. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private PillarOfLight(final PillarOfLight card) { diff --git a/Mage.Sets/src/mage/cards/p/PinionFeast.java b/Mage.Sets/src/mage/cards/p/PinionFeast.java index 599e8d5104c..42080cdd626 100644 --- a/Mage.Sets/src/mage/cards/p/PinionFeast.java +++ b/Mage.Sets/src/mage/cards/p/PinionFeast.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class PinionFeast extends CardImpl { // Destroy target creature with flying. Bolster 2. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new BolsterEffect(2)); } diff --git a/Mage.Sets/src/mage/cards/p/PistusStrike.java b/Mage.Sets/src/mage/cards/p/PistusStrike.java index 9e931a42e69..e446b0b2fc8 100644 --- a/Mage.Sets/src/mage/cards/p/PistusStrike.java +++ b/Mage.Sets/src/mage/cards/p/PistusStrike.java @@ -16,6 +16,7 @@ import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -33,7 +34,7 @@ public final class PistusStrike extends CardImpl { public PistusStrike(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}"); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new PoisonControllerTargetCreatureEffect()); } diff --git a/Mage.Sets/src/mage/cards/p/PitFight.java b/Mage.Sets/src/mage/cards/p/PitFight.java index a34dbd719f5..09dda5563fd 100644 --- a/Mage.Sets/src/mage/cards/p/PitFight.java +++ b/Mage.Sets/src/mage/cards/p/PitFight.java @@ -4,12 +4,13 @@ import mage.abilities.effects.common.FightTargetsEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; -import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2; + /** * @author LevelX2 */ @@ -20,13 +21,8 @@ public final class PitFight extends CardImpl { // Target creature you control fights another target creature. this.getSpellAbility().addEffect(new FightTargetsEffect()); - TargetControlledCreaturePermanent target = new TargetControlledCreaturePermanent(); - target.setTargetTag(1); - this.getSpellAbility().addTarget(target); - - TargetCreaturePermanent target2 = new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent().setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2)); } private PitFight(final PitFight card) { diff --git a/Mage.Sets/src/mage/cards/p/PlagueSpores.java b/Mage.Sets/src/mage/cards/p/PlagueSpores.java index 9e3162505ca..5b08bce7de3 100644 --- a/Mage.Sets/src/mage/cards/p/PlagueSpores.java +++ b/Mage.Sets/src/mage/cards/p/PlagueSpores.java @@ -6,10 +6,13 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetLandPermanent; import mage.target.targetpointer.EachTargetPointer; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LoneFox @@ -22,7 +25,7 @@ public final class PlagueSpores extends CardImpl { // Destroy target nonblack creature and target land. They can't be regenerated. this.getSpellAbility().addEffect(new DestroyTargetEffect(true).setTargetPointer(new EachTargetPointer())); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addTarget(new TargetLandPermanent()); } diff --git a/Mage.Sets/src/mage/cards/p/PlasmaCaster.java b/Mage.Sets/src/mage/cards/p/PlasmaCaster.java index 994081709d2..897be0f883e 100644 --- a/Mage.Sets/src/mage/cards/p/PlasmaCaster.java +++ b/Mage.Sets/src/mage/cards/p/PlasmaCaster.java @@ -22,6 +22,7 @@ import mage.filter.predicate.ObjectSourcePlayer; import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.BlockingOrBlockedWatcher; @@ -60,7 +61,7 @@ public final class PlasmaCaster extends CardImpl { + "Otherwise, {this} deals 1 damage to it"), new PayEnergyCost(2) ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Equip {2} diff --git a/Mage.Sets/src/mage/cards/p/PlaxcasterFrogling.java b/Mage.Sets/src/mage/cards/p/PlaxcasterFrogling.java index a217ad0388f..6d224464a0d 100644 --- a/Mage.Sets/src/mage/cards/p/PlaxcasterFrogling.java +++ b/Mage.Sets/src/mage/cards/p/PlaxcasterFrogling.java @@ -16,8 +16,11 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_P1P1; + /** * * @author JotaPeRL @@ -36,7 +39,7 @@ public final class PlaxcasterFrogling extends CardImpl { // {2}: Target creature with a +1/+1 counter on it gains shroud until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(ShroudAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_P1P1)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_P1P1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/Plummet.java b/Mage.Sets/src/mage/cards/p/Plummet.java index fb539c22cb2..559acade3ba 100644 --- a/Mage.Sets/src/mage/cards/p/Plummet.java +++ b/Mage.Sets/src/mage/cards/p/Plummet.java @@ -11,6 +11,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class Plummet extends CardImpl { public Plummet(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}"); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/p/PoisonArrow.java b/Mage.Sets/src/mage/cards/p/PoisonArrow.java index ce1bad3cf7f..fb2d330b92d 100644 --- a/Mage.Sets/src/mage/cards/p/PoisonArrow.java +++ b/Mage.Sets/src/mage/cards/p/PoisonArrow.java @@ -7,8 +7,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LoneFox @@ -21,7 +24,7 @@ public final class PoisonArrow extends CardImpl { // Destroy target nonblack creature. You gain 3 life. this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new GainLifeEffect(3)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); } private PoisonArrow(final PoisonArrow card) { diff --git a/Mage.Sets/src/mage/cards/p/PolymorphousRush.java b/Mage.Sets/src/mage/cards/p/PolymorphousRush.java index 43d4c1b0953..92462a17caf 100644 --- a/Mage.Sets/src/mage/cards/p/PolymorphousRush.java +++ b/Mage.Sets/src/mage/cards/p/PolymorphousRush.java @@ -13,6 +13,7 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.functions.EmptyCopyApplier; @@ -65,7 +66,7 @@ class PolymorphousRushCopyEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - Target target = new TargetCreaturePermanent(new FilterCreaturePermanent("")); + Target target = new TargetPermanent(new FilterCreaturePermanent("")); target.withNotTarget(true); target.withTargetName("a creature on the battlefield (creature to copy)"); if (target.canChoose(controller.getId(), source, game) && controller.chooseTarget(outcome, target, source, game)) { diff --git a/Mage.Sets/src/mage/cards/p/PossessedAven.java b/Mage.Sets/src/mage/cards/p/PossessedAven.java index 8c85263792a..3e7fce76795 100644 --- a/Mage.Sets/src/mage/cards/p/PossessedAven.java +++ b/Mage.Sets/src/mage/cards/p/PossessedAven.java @@ -22,6 +22,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -59,7 +60,7 @@ public final class PossessedAven extends CardImpl { )); Ability gainedAbility = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{2}{B}")); gainedAbility.addCost(new TapSourceCost()); - gainedAbility.addTarget(new TargetCreaturePermanent(filter)); + gainedAbility.addTarget(new TargetPermanent(filter)); ability.addEffect(new ConditionalContinuousEffect( new GainAbilitySourceEffect(gainedAbility), ThresholdCondition.instance, ", and has \"{2}{B}, {T}: Destroy target blue creature.\"" diff --git a/Mage.Sets/src/mage/cards/p/PossessedBarbarian.java b/Mage.Sets/src/mage/cards/p/PossessedBarbarian.java index c19e6aabca8..7b0b9f0c9bb 100644 --- a/Mage.Sets/src/mage/cards/p/PossessedBarbarian.java +++ b/Mage.Sets/src/mage/cards/p/PossessedBarbarian.java @@ -22,6 +22,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -60,7 +61,7 @@ public final class PossessedBarbarian extends CardImpl { )); Ability gainedAbility = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{2}{B}")); gainedAbility.addCost(new TapSourceCost()); - gainedAbility.addTarget(new TargetCreaturePermanent(filter)); + gainedAbility.addTarget(new TargetPermanent(filter)); ability.addEffect(new ConditionalContinuousEffect( new GainAbilitySourceEffect(gainedAbility), ThresholdCondition.instance, ", and has \"{2}{B}, {T}: Destroy target red creature.\"" diff --git a/Mage.Sets/src/mage/cards/p/PossessedCentaur.java b/Mage.Sets/src/mage/cards/p/PossessedCentaur.java index f35ad616eca..99da498f184 100644 --- a/Mage.Sets/src/mage/cards/p/PossessedCentaur.java +++ b/Mage.Sets/src/mage/cards/p/PossessedCentaur.java @@ -22,6 +22,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -58,7 +59,7 @@ public final class PossessedCentaur extends CardImpl { )); Ability gainedAbility = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{2}{B}")); gainedAbility.addCost(new TapSourceCost()); - gainedAbility.addTarget(new TargetCreaturePermanent(filter)); + gainedAbility.addTarget(new TargetPermanent(filter)); ability.addEffect(new ConditionalContinuousEffect( new GainAbilitySourceEffect(gainedAbility), ThresholdCondition.instance, ", and has \"{2}{B}, {T}: Destroy target green creature.\"" diff --git a/Mage.Sets/src/mage/cards/p/PossessedNomad.java b/Mage.Sets/src/mage/cards/p/PossessedNomad.java index 2d3523f34c5..195170e30cf 100644 --- a/Mage.Sets/src/mage/cards/p/PossessedNomad.java +++ b/Mage.Sets/src/mage/cards/p/PossessedNomad.java @@ -22,6 +22,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -59,7 +60,7 @@ public final class PossessedNomad extends CardImpl { )); Ability gainedAbility = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{2}{B}")); gainedAbility.addCost(new TapSourceCost()); - gainedAbility.addTarget(new TargetCreaturePermanent(filter)); + gainedAbility.addTarget(new TargetPermanent(filter)); ability.addEffect(new ConditionalContinuousEffect( new GainAbilitySourceEffect(gainedAbility), ThresholdCondition.instance, ", and has \"{2}{B}, {T}: Destroy target white creature.\"" diff --git a/Mage.Sets/src/mage/cards/p/PredatorFlagship.java b/Mage.Sets/src/mage/cards/p/PredatorFlagship.java index 3ad925e2fb1..e7a586da48a 100644 --- a/Mage.Sets/src/mage/cards/p/PredatorFlagship.java +++ b/Mage.Sets/src/mage/cards/p/PredatorFlagship.java @@ -17,6 +17,7 @@ import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class PredatorFlagship extends CardImpl { // {5}, {T}: Destroy target creature with flying. ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{5}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PrematureBurial.java b/Mage.Sets/src/mage/cards/p/PrematureBurial.java index c74ba2fe51e..23e5b7ac879 100644 --- a/Mage.Sets/src/mage/cards/p/PrematureBurial.java +++ b/Mage.Sets/src/mage/cards/p/PrematureBurial.java @@ -15,6 +15,7 @@ import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.Watcher; @@ -38,7 +39,7 @@ public final class PrematureBurial extends CardImpl { // Destroy target nonblack creature that entered the battlefield since your last turn ended. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addWatcher(new PrematureBurialWatcher()); } diff --git a/Mage.Sets/src/mage/cards/p/PreyUpon.java b/Mage.Sets/src/mage/cards/p/PreyUpon.java index ebe83d2e98b..9320387fcbc 100644 --- a/Mage.Sets/src/mage/cards/p/PreyUpon.java +++ b/Mage.Sets/src/mage/cards/p/PreyUpon.java @@ -5,11 +5,14 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author BetaSteward */ @@ -21,7 +24,7 @@ public final class PreyUpon extends CardImpl { // Target creature you control fights target creature you don't control. this.getSpellAbility().addEffect(new FightTargetsEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private PreyUpon(final PreyUpon card) { diff --git a/Mage.Sets/src/mage/cards/p/Provoke.java b/Mage.Sets/src/mage/cards/p/Provoke.java index 324c8b8475e..0cf42d67785 100644 --- a/Mage.Sets/src/mage/cards/p/Provoke.java +++ b/Mage.Sets/src/mage/cards/p/Provoke.java @@ -9,10 +9,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -26,7 +29,7 @@ public final class Provoke extends CardImpl { Effect effect = new BlocksIfAbleTargetEffect(Duration.EndOfTurn); effect.setText("That creature blocks this turn if able"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/p/PsychoticFury.java b/Mage.Sets/src/mage/cards/p/PsychoticFury.java index 3e051377a96..c3d3ec3634c 100644 --- a/Mage.Sets/src/mage/cards/p/PsychoticFury.java +++ b/Mage.Sets/src/mage/cards/p/PsychoticFury.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.MulticoloredPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -30,7 +31,7 @@ public final class PsychoticFury extends CardImpl { // Target multicolored creature gains double strike until end of turn. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/p/PublicExecution.java b/Mage.Sets/src/mage/cards/p/PublicExecution.java index 7233230dd30..9617a293300 100644 --- a/Mage.Sets/src/mage/cards/p/PublicExecution.java +++ b/Mage.Sets/src/mage/cards/p/PublicExecution.java @@ -15,10 +15,13 @@ import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.filter.predicate.permanent.PermanentIdPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author jeffwadsworth */ @@ -29,7 +32,7 @@ public final class PublicExecution extends CardImpl { // Destroy target creature an opponent controls. Each other creature that player controls gets -2/-0 until end of turn. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.getSpellAbility().addEffect(new PublicExecutionEffect()); } diff --git a/Mage.Sets/src/mage/cards/p/PuncturingLight.java b/Mage.Sets/src/mage/cards/p/PuncturingLight.java index 4e4a2f88670..18faaf075cb 100644 --- a/Mage.Sets/src/mage/cards/p/PuncturingLight.java +++ b/Mage.Sets/src/mage/cards/p/PuncturingLight.java @@ -10,6 +10,7 @@ import mage.constants.ComparisonType; import mage.filter.common.FilterAttackingOrBlockingCreature; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class PuncturingLight extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/p/Purge.java b/Mage.Sets/src/mage/cards/p/Purge.java index e3d989598ac..232a6c5e5e7 100644 --- a/Mage.Sets/src/mage/cards/p/Purge.java +++ b/Mage.Sets/src/mage/cards/p/Purge.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class Purge extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); // Destroy target artifact creature or black creature. It can't be regenerated. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); } diff --git a/Mage.Sets/src/mage/cards/p/PusKami.java b/Mage.Sets/src/mage/cards/p/PusKami.java index ac715e4c406..02496217b8b 100644 --- a/Mage.Sets/src/mage/cards/p/PusKami.java +++ b/Mage.Sets/src/mage/cards/p/PusKami.java @@ -15,8 +15,11 @@ import mage.constants.SubType; import mage.constants.ColoredManaSymbol; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author Loki @@ -32,7 +35,7 @@ public final class PusKami extends CardImpl { // {B}, Sacrifice Pus Kami: Destroy target nonblack creature. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ColoredManaCost(ColoredManaSymbol.B)); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); this.addAbility(new SoulshiftAbility(6)); } diff --git a/Mage.Sets/src/mage/cards/p/PushPull.java b/Mage.Sets/src/mage/cards/p/PushPull.java index e0a55f6c229..956e3f5c8cd 100644 --- a/Mage.Sets/src/mage/cards/p/PushPull.java +++ b/Mage.Sets/src/mage/cards/p/PushPull.java @@ -22,6 +22,7 @@ import mage.filter.predicate.permanent.TappedPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInASingleGraveyard; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTargets; @@ -49,7 +50,7 @@ public final class PushPull extends SplitCard { // Push // Destroy target tapped creature. getLeftHalfCard().getSpellAbility().addEffect(new DestroyTargetEffect()); - getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + getLeftHalfCard().getSpellAbility().addTarget(new TargetPermanent(filter)); // Pull // Put up to two target creature cards from a single graveyard onto the battlefield under your control. They gain haste until end of turn. Sacrifice them at the beginning of the next end step. diff --git a/Mage.Sets/src/mage/cards/q/Quicksand.java b/Mage.Sets/src/mage/cards/q/Quicksand.java index 9229168c64e..434e50ad3a9 100644 --- a/Mage.Sets/src/mage/cards/q/Quicksand.java +++ b/Mage.Sets/src/mage/cards/q/Quicksand.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class Quicksand extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new BoostTargetEffect(-1, -2, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/q/QuietContemplation.java b/Mage.Sets/src/mage/cards/q/QuietContemplation.java index 5d3358c991c..c19f2be85da 100644 --- a/Mage.Sets/src/mage/cards/q/QuietContemplation.java +++ b/Mage.Sets/src/mage/cards/q/QuietContemplation.java @@ -12,8 +12,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -30,7 +33,7 @@ public final class QuietContemplation extends CardImpl { effect.setText("and it doesn't untap during its controller's next untap step"); doIfCostPaid.addEffect(effect); Ability ability = new SpellCastControllerTriggeredAbility(doIfCostPaid, StaticFilters.FILTER_SPELL_A_NON_CREATURE, false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/q/QuillmaneBaku.java b/Mage.Sets/src/mage/cards/q/QuillmaneBaku.java index ffd15b4f2cf..6466c942f14 100644 --- a/Mage.Sets/src/mage/cards/q/QuillmaneBaku.java +++ b/Mage.Sets/src/mage/cards/q/QuillmaneBaku.java @@ -17,6 +17,7 @@ import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.XManaValueTargetAdjuster; @@ -43,7 +44,7 @@ public final class QuillmaneBaku extends CardImpl { Ability ability = new SimpleActivatedAbility(new ReturnToHandTargetEffect(), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); ability.addCost(new RemoveVariableCountersSourceCost(CounterType.KI)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.setTargetAdjuster(new XManaValueTargetAdjuster(ComparisonType.OR_LESS)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RabidBite.java b/Mage.Sets/src/mage/cards/r/RabidBite.java index 7344f543dd9..7a9b21225fe 100644 --- a/Mage.Sets/src/mage/cards/r/RabidBite.java +++ b/Mage.Sets/src/mage/cards/r/RabidBite.java @@ -5,11 +5,14 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author fireshoes */ @@ -21,7 +24,7 @@ public final class RabidBite extends CardImpl { // Target creature you control deals damage equal to its power to target creature you don't control. this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private RabidBite(final RabidBite card) { diff --git a/Mage.Sets/src/mage/cards/r/RabidRats.java b/Mage.Sets/src/mage/cards/r/RabidRats.java index 77a86379821..c407e560fff 100644 --- a/Mage.Sets/src/mage/cards/r/RabidRats.java +++ b/Mage.Sets/src/mage/cards/r/RabidRats.java @@ -14,6 +14,7 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -30,7 +31,7 @@ public final class RabidRats extends CardImpl { // {tap}: Target blocking creature gets -1/-1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(-1, -1, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RadiantsJudgment.java b/Mage.Sets/src/mage/cards/r/RadiantsJudgment.java index 8ce18659009..db92762efa3 100644 --- a/Mage.Sets/src/mage/cards/r/RadiantsJudgment.java +++ b/Mage.Sets/src/mage/cards/r/RadiantsJudgment.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class RadiantsJudgment extends CardImpl { // Destroy target creature with power 4 or greater. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Cycling {2} this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}"))); } diff --git a/Mage.Sets/src/mage/cards/r/RageWeaver.java b/Mage.Sets/src/mage/cards/r/RageWeaver.java index 293a3e8f18e..cdcce1908bb 100644 --- a/Mage.Sets/src/mage/cards/r/RageWeaver.java +++ b/Mage.Sets/src/mage/cards/r/RageWeaver.java @@ -18,6 +18,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -42,7 +43,7 @@ public final class RageWeaver extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RakeclawGargantuan.java b/Mage.Sets/src/mage/cards/r/RakeclawGargantuan.java index 2d6361b7812..eef9b352c95 100644 --- a/Mage.Sets/src/mage/cards/r/RakeclawGargantuan.java +++ b/Mage.Sets/src/mage/cards/r/RakeclawGargantuan.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class RakeclawGargantuan extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{1}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RamThrough.java b/Mage.Sets/src/mage/cards/r/RamThrough.java index 0dbccc0a842..582f0ccb988 100644 --- a/Mage.Sets/src/mage/cards/r/RamThrough.java +++ b/Mage.Sets/src/mage/cards/r/RamThrough.java @@ -11,11 +11,14 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -27,7 +30,7 @@ public final class RamThrough extends CardImpl { // Target creature you control deals damage equal to its power to target creature you don't control. If the creature you control has trample, excess damage is dealt to that creature's controller instead. this.getSpellAbility().addEffect(new RamThroughEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private RamThrough(final RamThrough card) { diff --git a/Mage.Sets/src/mage/cards/r/RamsesOverdark.java b/Mage.Sets/src/mage/cards/r/RamsesOverdark.java index 93a86234a2a..458b4a8f126 100644 --- a/Mage.Sets/src/mage/cards/r/RamsesOverdark.java +++ b/Mage.Sets/src/mage/cards/r/RamsesOverdark.java @@ -15,6 +15,7 @@ import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.EnchantedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class RamsesOverdark extends CardImpl { // {tap}: Destroy target enchanted creature. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RashidaScalebane.java b/Mage.Sets/src/mage/cards/r/RashidaScalebane.java index 9e93758cf35..aa4bdce442d 100644 --- a/Mage.Sets/src/mage/cards/r/RashidaScalebane.java +++ b/Mage.Sets/src/mage/cards/r/RashidaScalebane.java @@ -20,6 +20,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.AttackingPredicate; import mage.filter.predicate.permanent.BlockingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -48,7 +49,7 @@ public final class RashidaScalebane extends CardImpl { Effect effect = new GainLifeEffect(TargetPermanentPowerCount.instance); effect.setText("You gain life equal to its power"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RathiAssassin.java b/Mage.Sets/src/mage/cards/r/RathiAssassin.java index 7e5ae73b63b..6f70b089eeb 100644 --- a/Mage.Sets/src/mage/cards/r/RathiAssassin.java +++ b/Mage.Sets/src/mage/cards/r/RathiAssassin.java @@ -23,6 +23,7 @@ import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCreaturePermanent; @@ -55,7 +56,7 @@ public final class RathiAssassin extends CardImpl { // {1}{B}{B}, {T}: Destroy target tapped nonblack creature. Ability destroyAbility = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{1}{B}{B}")); destroyAbility.addCost(new TapSourceCost()); - destroyAbility.addTarget(new TargetCreaturePermanent(destroyFilter)); + destroyAbility.addTarget(new TargetPermanent(destroyFilter)); this.addAbility(destroyAbility); // {3}, {T}: Search your library for a Mercenary permanent card with converted mana cost 3 or less and put it onto the battlefield. Then shuffle your library. diff --git a/Mage.Sets/src/mage/cards/r/Rattlechains.java b/Mage.Sets/src/mage/cards/r/Rattlechains.java index d26b1938ae8..5d12df82102 100644 --- a/Mage.Sets/src/mage/cards/r/Rattlechains.java +++ b/Mage.Sets/src/mage/cards/r/Rattlechains.java @@ -19,6 +19,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -49,7 +50,7 @@ public final class Rattlechains extends CardImpl { // When Rattlechains enters the battlefield, target spirit gains hexproof until end of turn. Ability ability = new EntersBattlefieldTriggeredAbility(new GainAbilityTargetEffect(HexproofAbility.getInstance(), Duration.EndOfTurn), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // You may cast Spirit spells as though they had flash. diff --git a/Mage.Sets/src/mage/cards/r/RavenousChupacabra.java b/Mage.Sets/src/mage/cards/r/RavenousChupacabra.java index 32fad1fc866..b48c7c2bfd0 100644 --- a/Mage.Sets/src/mage/cards/r/RavenousChupacabra.java +++ b/Mage.Sets/src/mage/cards/r/RavenousChupacabra.java @@ -11,8 +11,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author L_J @@ -28,7 +31,7 @@ public final class RavenousChupacabra extends CardImpl { // When Ravenous Chupacabra enters the battlefield, destroy target creature an opponent controls. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RayOfCommand.java b/Mage.Sets/src/mage/cards/r/RayOfCommand.java index dc57a6e4f06..def359df27c 100644 --- a/Mage.Sets/src/mage/cards/r/RayOfCommand.java +++ b/Mage.Sets/src/mage/cards/r/RayOfCommand.java @@ -16,8 +16,11 @@ import mage.constants.Duration; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -32,7 +35,7 @@ public final class RayOfCommand extends CardImpl { this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn).setText("and gain control of it until end of turn")); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("that creature gains haste until end of turn")); this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new RayOfCommandDelayedTriggeredAbility(), true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); } private RayOfCommand(final RayOfCommand card) { diff --git a/Mage.Sets/src/mage/cards/r/RaziaBorosArchangel.java b/Mage.Sets/src/mage/cards/r/RaziaBorosArchangel.java index efe756e5831..319e6cd964d 100644 --- a/Mage.Sets/src/mage/cards/r/RaziaBorosArchangel.java +++ b/Mage.Sets/src/mage/cards/r/RaziaBorosArchangel.java @@ -24,6 +24,7 @@ import mage.filter.predicate.other.AnotherTargetPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -59,7 +60,7 @@ public final class RaziaBorosArchangel extends CardImpl { FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature (damage is redirected to)"); filter.add(new AnotherTargetPredicate(2)); - target = new TargetCreaturePermanent(filter); + target = new TargetPermanent(filter); target.setTargetTag(2); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/r/RazorfinAbolisher.java b/Mage.Sets/src/mage/cards/r/RazorfinAbolisher.java index 5eb4ebe3cbf..8b97aa063d4 100644 --- a/Mage.Sets/src/mage/cards/r/RazorfinAbolisher.java +++ b/Mage.Sets/src/mage/cards/r/RazorfinAbolisher.java @@ -16,6 +16,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.CounterAnyPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class RazorfinAbolisher extends CardImpl { // {1}{U}, {tap}: Return target creature with a counter on it to its owner's hand. Ability ability = new SimpleActivatedAbility(new ReturnToHandTargetEffect(), new ManaCostsImpl<>("{1}{U}")); ability.addCost(new TapSourceCost()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/r/ReachOfShadows.java b/Mage.Sets/src/mage/cards/r/ReachOfShadows.java index a956f8e6fd2..679bda0f4cc 100644 --- a/Mage.Sets/src/mage/cards/r/ReachOfShadows.java +++ b/Mage.Sets/src/mage/cards/r/ReachOfShadows.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorlessPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class ReachOfShadows extends CardImpl { // Destroy target creature that's one or more colors. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private ReachOfShadows(final ReachOfShadows card) { diff --git a/Mage.Sets/src/mage/cards/r/ReaveSoul.java b/Mage.Sets/src/mage/cards/r/ReaveSoul.java index f128744f362..84095ae479e 100644 --- a/Mage.Sets/src/mage/cards/r/ReaveSoul.java +++ b/Mage.Sets/src/mage/cards/r/ReaveSoul.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class ReaveSoul extends CardImpl { // Destroy target creature with power 3 or less. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private ReaveSoul(final ReaveSoul card) { diff --git a/Mage.Sets/src/mage/cards/r/ReaverAmbush.java b/Mage.Sets/src/mage/cards/r/ReaverAmbush.java index c9724a11924..8a273c9ba5c 100644 --- a/Mage.Sets/src/mage/cards/r/ReaverAmbush.java +++ b/Mage.Sets/src/mage/cards/r/ReaverAmbush.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -27,7 +28,7 @@ public final class ReaverAmbush extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}"); // Exile target creature with power 3 or less. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new ExileTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/r/RecklessRage.java b/Mage.Sets/src/mage/cards/r/RecklessRage.java index 452aeb78886..79b30f0ec35 100644 --- a/Mage.Sets/src/mage/cards/r/RecklessRage.java +++ b/Mage.Sets/src/mage/cards/r/RecklessRage.java @@ -5,12 +5,15 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.SecondTargetPointer; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author JayDi85 */ @@ -20,7 +23,7 @@ public final class RecklessRage extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}"); // Reckless Rage deals 4 damage to target creature you don't control and 2 damage to target creature you control. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().addEffect(new DamageTargetEffect(4).setUseOnlyTargetPointer(true)); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); this.getSpellAbility().addEffect(new DamageTargetEffect(2).setUseOnlyTargetPointer(true) diff --git a/Mage.Sets/src/mage/cards/r/ReflectorMage.java b/Mage.Sets/src/mage/cards/r/ReflectorMage.java index df5dc5d9021..da145860a07 100644 --- a/Mage.Sets/src/mage/cards/r/ReflectorMage.java +++ b/Mage.Sets/src/mage/cards/r/ReflectorMage.java @@ -15,6 +15,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; @@ -41,7 +42,7 @@ public final class ReflectorMage extends CardImpl { // When Reflector Mage enters the battlefield, return target creature an opponent controls to its owner's hand. That creature's owner can't cast spells with the same name as that creature until your next turn. Ability ability = new EntersBattlefieldTriggeredAbility(new ReflectorMageEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RendFlesh.java b/Mage.Sets/src/mage/cards/r/RendFlesh.java index 8c4a95520b6..6997f245a38 100644 --- a/Mage.Sets/src/mage/cards/r/RendFlesh.java +++ b/Mage.Sets/src/mage/cards/r/RendFlesh.java @@ -10,6 +10,7 @@ import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -30,7 +31,7 @@ public final class RendFlesh extends CardImpl { this.subtype.add(SubType.ARCANE); // Destroy target non-Spirit creature. - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); this.getSpellAbility().addTarget(target); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/r/RendingVolley.java b/Mage.Sets/src/mage/cards/r/RendingVolley.java index 7a877174423..2d547010c04 100644 --- a/Mage.Sets/src/mage/cards/r/RendingVolley.java +++ b/Mage.Sets/src/mage/cards/r/RendingVolley.java @@ -15,6 +15,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class RendingVolley extends CardImpl { // Rending Volley deals 4 damage to target white or blue creature. this.getSpellAbility().addEffect(new DamageTargetEffect(4)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private RendingVolley(final RendingVolley card) { diff --git a/Mage.Sets/src/mage/cards/r/RenegadeSilent.java b/Mage.Sets/src/mage/cards/r/RenegadeSilent.java index 7ce19daa21f..a6fef0d7585 100644 --- a/Mage.Sets/src/mage/cards/r/RenegadeSilent.java +++ b/Mage.Sets/src/mage/cards/r/RenegadeSilent.java @@ -12,10 +12,13 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author Susucr */ @@ -33,7 +36,7 @@ public final class RenegadeSilent extends CardImpl { Ability ability = new BeginningOfEndStepTriggeredAbility( new GoadTargetEffect().setText("goad up to one target creature you don't control") ); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()) .concatBy("and")); ability.addEffect(new PhaseOutSourceEffect()); diff --git a/Mage.Sets/src/mage/cards/r/RepentantVampire.java b/Mage.Sets/src/mage/cards/r/RepentantVampire.java index 1cfb1d451f9..6be51e84ac0 100644 --- a/Mage.Sets/src/mage/cards/r/RepentantVampire.java +++ b/Mage.Sets/src/mage/cards/r/RepentantVampire.java @@ -23,6 +23,7 @@ import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -59,7 +60,7 @@ public final class RepentantVampire extends CardImpl { ThresholdCondition.instance, "As long as seven or more cards are in your graveyard, {this} is white" )); Ability gainedAbility = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); - gainedAbility.addTarget(new TargetCreaturePermanent(filter)); + gainedAbility.addTarget(new TargetPermanent(filter)); ability.addEffect(new ConditionalContinuousEffect( new GainAbilitySourceEffect(gainedAbility, Duration.WhileOnBattlefield), ThresholdCondition.instance, "and has \"{T}: Destroy target black creature.\"" diff --git a/Mage.Sets/src/mage/cards/r/Reprisal.java b/Mage.Sets/src/mage/cards/r/Reprisal.java index 0d51718bf2f..219a8a605af 100644 --- a/Mage.Sets/src/mage/cards/r/Reprisal.java +++ b/Mage.Sets/src/mage/cards/r/Reprisal.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class Reprisal extends CardImpl { // Destroy target creature with power 4 or greater. It can't be regenerated. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Reprisal(final Reprisal card) { diff --git a/Mage.Sets/src/mage/cards/r/RevealingWind.java b/Mage.Sets/src/mage/cards/r/RevealingWind.java index e57804aa3c8..d02d9e8f212 100644 --- a/Mage.Sets/src/mage/cards/r/RevealingWind.java +++ b/Mage.Sets/src/mage/cards/r/RevealingWind.java @@ -17,6 +17,7 @@ import mage.filter.predicate.card.FaceDownPredicate; import mage.game.Game; import mage.players.Player; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -77,7 +78,7 @@ class RevealingWindEffect extends OneShotEffect { if (!controller.canRespond()) { return false; } - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); if (controller.chooseTarget(outcome, target, source, game)) { Card card = game.getCard(target.getFirstTarget()); if (card != null) { diff --git a/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java b/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java index 34ac88a308b..54386f927d0 100644 --- a/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java +++ b/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java @@ -22,10 +22,13 @@ import mage.filter.predicate.mageobject.AnotherPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author fireshoes */ @@ -55,7 +58,7 @@ public final class RhonasTheIndomitable extends CardImpl { effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn); effect.setText("and gains trample until end of turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RiddlemasterSphinx.java b/Mage.Sets/src/mage/cards/r/RiddlemasterSphinx.java index dd84c95e107..3e575d469bf 100644 --- a/Mage.Sets/src/mage/cards/r/RiddlemasterSphinx.java +++ b/Mage.Sets/src/mage/cards/r/RiddlemasterSphinx.java @@ -11,8 +11,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author TheElk801 @@ -31,7 +34,7 @@ public final class RiddlemasterSphinx extends CardImpl { // When Riddlemaster Sphinx enters the battlefield, you may return target creature an opponent controls to its owner's hand. Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RideDown.java b/Mage.Sets/src/mage/cards/r/RideDown.java index aa53517e959..ba2b17c53a7 100644 --- a/Mage.Sets/src/mage/cards/r/RideDown.java +++ b/Mage.Sets/src/mage/cards/r/RideDown.java @@ -17,6 +17,7 @@ import mage.game.Game; import mage.game.combat.CombatGroup; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -37,7 +38,7 @@ public final class RideDown extends CardImpl { // Destroy target blocking creature. Creatures that were blocked by that creature this combat gain trample until end of turn. this.getSpellAbility().addEffect(new RideDownEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } diff --git a/Mage.Sets/src/mage/cards/r/Righteousness.java b/Mage.Sets/src/mage/cards/r/Righteousness.java index 70cbd275712..0a6c6294ede 100644 --- a/Mage.Sets/src/mage/cards/r/Righteousness.java +++ b/Mage.Sets/src/mage/cards/r/Righteousness.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterBlockingCreature; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -24,7 +25,7 @@ public final class Righteousness extends CardImpl { this.getSpellAbility().addEffect(new BoostTargetEffect(7, 7, Duration.EndOfTurn)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Righteousness(final Righteousness card) { diff --git a/Mage.Sets/src/mage/cards/r/RilingDawnbreaker.java b/Mage.Sets/src/mage/cards/r/RilingDawnbreaker.java index 21921919b2b..fdb12b8eb59 100644 --- a/Mage.Sets/src/mage/cards/r/RilingDawnbreaker.java +++ b/Mage.Sets/src/mage/cards/r/RilingDawnbreaker.java @@ -16,6 +16,7 @@ import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.game.permanent.token.Soldier22Token; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class RilingDawnbreaker extends OmenCard { // At the beginning of combat on your turn, another target creature you control gets +1/+0 until end of turn. Ability ability = new BeginningOfCombatTriggeredAbility(new BoostTargetEffect(1, 0)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Signaling Roar diff --git a/Mage.Sets/src/mage/cards/r/RimehornAurochs.java b/Mage.Sets/src/mage/cards/r/RimehornAurochs.java index 36926fd0039..a31e80e47e7 100644 --- a/Mage.Sets/src/mage/cards/r/RimehornAurochs.java +++ b/Mage.Sets/src/mage/cards/r/RimehornAurochs.java @@ -20,6 +20,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.BlockedAttackerWatcher; @@ -53,8 +54,8 @@ public final class RimehornAurochs extends CardImpl { // {2}{S}: Target creature blocks target creature this turn if able. Ability ability = new SimpleActivatedAbility(new RimehornAurochsEffect(), new ManaCostsImpl<>("{2}{S}")); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature that must block"))); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature that is to be blocked"))); + ability.addTarget(new TargetPermanent(new FilterCreaturePermanent("creature that must block"))); + ability.addTarget(new TargetPermanent(new FilterCreaturePermanent("creature that is to be blocked"))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RimescaleDragon.java b/Mage.Sets/src/mage/cards/r/RimescaleDragon.java index ebfd7ba63f1..0d6218c7bf2 100644 --- a/Mage.Sets/src/mage/cards/r/RimescaleDragon.java +++ b/Mage.Sets/src/mage/cards/r/RimescaleDragon.java @@ -20,7 +20,6 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; /** - * * @author JRHerlehy */ public final class RimescaleDragon extends CardImpl { @@ -33,7 +32,7 @@ public final class RimescaleDragon extends CardImpl { public RimescaleDragon(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}"); - + this.supertype.add(SuperType.SNOW); this.subtype.add(SubType.DRAGON); this.power = new MageInt(5); @@ -50,7 +49,7 @@ public final class RimescaleDragon extends CardImpl { Effect effect = new AddCountersTargetEffect(CounterType.ICE.createInstance()); effect.setText("and put an ice counter on it"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(1)); + ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); // Creatures with ice counters on them don't untap during their controllers' untap steps. diff --git a/Mage.Sets/src/mage/cards/r/RitesOfReaping.java b/Mage.Sets/src/mage/cards/r/RitesOfReaping.java index f44dd378d39..42a3bce85af 100644 --- a/Mage.Sets/src/mage/cards/r/RitesOfReaping.java +++ b/Mage.Sets/src/mage/cards/r/RitesOfReaping.java @@ -1,45 +1,31 @@ - package mage.cards.r; -import java.util.UUID; -import mage.abilities.Ability; -import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; -import mage.game.Game; -import mage.game.permanent.Permanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.SecondTargetPointer; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class RitesOfReaping extends CardImpl { public RitesOfReaping(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}{G}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{G}"); // Target creature gets +3/+3 until end of turn. Another target creature gets -3/-3 until end of turn. - this.getSpellAbility().addEffect(new RitesOfReapingEffect()); - - FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature (gets +3/+3 until end of turn)"); - TargetCreaturePermanent target1 = new TargetCreaturePermanent(filter1); - target1.setTargetTag(1); - this.getSpellAbility().addTarget(target1); - - FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another creature (gets -3/-3 until end of turn)"); - filter2.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter2); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addEffect(new BoostTargetEffect(3, 3)); + this.getSpellAbility().addEffect(new BoostTargetEffect(-3, -3) + .setTargetPointer(new SecondTargetPointer()) + .setText("Another target creature gets -3/-3 until end of turn")); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("+3/+3").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).withChooseHint("-3/-3").setTargetTag(2)); } private RitesOfReaping(final RitesOfReaping card) { @@ -51,35 +37,3 @@ public final class RitesOfReaping extends CardImpl { return new RitesOfReaping(this); } } - -class RitesOfReapingEffect extends ContinuousEffectImpl { - - RitesOfReapingEffect() { - super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature); - this.staticText = "Target creature gets +3/+3 until end of turn. Another target creature gets -3/-3 until end of turn"; - } - - private RitesOfReapingEffect(final RitesOfReapingEffect effect) { - super(effect); - } - - @Override - public RitesOfReapingEffect copy() { - return new RitesOfReapingEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(source.getFirstTarget()); - if (permanent != null) { - permanent.addPower(3); - permanent.addToughness(3); - } - permanent = game.getPermanent(source.getTargets().get(1).getFirstTarget()); - if (permanent != null) { - permanent.addPower(-3); - permanent.addToughness(-3); - } - return true; - } -} diff --git a/Mage.Sets/src/mage/cards/r/RitualOfTheMachine.java b/Mage.Sets/src/mage/cards/r/RitualOfTheMachine.java index e53f1fd0d7a..f341cf356c1 100644 --- a/Mage.Sets/src/mage/cards/r/RitualOfTheMachine.java +++ b/Mage.Sets/src/mage/cards/r/RitualOfTheMachine.java @@ -13,6 +13,7 @@ import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -36,7 +37,7 @@ public final class RitualOfTheMachine extends CardImpl { this.getSpellAbility().addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE)); // Gain control of target nonartifact, nonblack creature. this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfGame)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private RitualOfTheMachine(final RitualOfTheMachine card) { diff --git a/Mage.Sets/src/mage/cards/r/RixMaadiGuildmage.java b/Mage.Sets/src/mage/cards/r/RixMaadiGuildmage.java index d1e671cd5fb..56e662f6d52 100644 --- a/Mage.Sets/src/mage/cards/r/RixMaadiGuildmage.java +++ b/Mage.Sets/src/mage/cards/r/RixMaadiGuildmage.java @@ -19,6 +19,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicate; import mage.game.Game; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.PlayerLostLifeWatcher; @@ -45,7 +46,7 @@ public final class RixMaadiGuildmage extends CardImpl { // {B}{R}: Target blocking creature gets -1/-1 until end of turn. SimpleActivatedAbility ability = new SimpleActivatedAbility(new BoostTargetEffect(-1, -1, Duration.EndOfTurn),new ManaCostsImpl<>("{B}{R}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // {B}{R}: Target player who lost life this turn loses 1 life. diff --git a/Mage.Sets/src/mage/cards/r/Roast.java b/Mage.Sets/src/mage/cards/r/Roast.java index 2a1f2d55e15..a030625ce49 100644 --- a/Mage.Sets/src/mage/cards/r/Roast.java +++ b/Mage.Sets/src/mage/cards/r/Roast.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class Roast extends CardImpl { // Roast deals 5 damage to target creature without flying. this.getSpellAbility().addEffect(new DamageTargetEffect(5)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Roast(final Roast card) { diff --git a/Mage.Sets/src/mage/cards/r/RocCharger.java b/Mage.Sets/src/mage/cards/r/RocCharger.java index 7a7212decae..1dee9925353 100644 --- a/Mage.Sets/src/mage/cards/r/RocCharger.java +++ b/Mage.Sets/src/mage/cards/r/RocCharger.java @@ -14,6 +14,7 @@ import mage.constants.Duration; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class RocCharger extends CardImpl { Duration.EndOfTurn ), false ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RoonOfTheHiddenRealm.java b/Mage.Sets/src/mage/cards/r/RoonOfTheHiddenRealm.java index b28621a44f0..16e517a6fd9 100644 --- a/Mage.Sets/src/mage/cards/r/RoonOfTheHiddenRealm.java +++ b/Mage.Sets/src/mage/cards/r/RoonOfTheHiddenRealm.java @@ -15,10 +15,13 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author LevelX2 */ @@ -39,7 +42,7 @@ public final class RoonOfTheHiddenRealm extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // {2}, {tap}: Exile another target creature. Return that card to the battlefield under its owner's control at the beginning of the next end step. Ability ability = new SimpleActivatedAbility(new ExileReturnBattlefieldNextEndStepTargetEffect(), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); ability.addCost(new TapSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/r/Roots.java b/Mage.Sets/src/mage/cards/r/Roots.java index de83cbf0074..d142c1bd402 100644 --- a/Mage.Sets/src/mage/cards/r/Roots.java +++ b/Mage.Sets/src/mage/cards/r/Roots.java @@ -38,7 +38,7 @@ public final class Roots extends CardImpl { this.subtype.add(SubType.AURA); // Enchant creature without flying - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); this.addAbility(new EnchantAbility(auraTarget)); diff --git a/Mage.Sets/src/mage/cards/r/RoyalAssassin.java b/Mage.Sets/src/mage/cards/r/RoyalAssassin.java index f806d427d94..5f49fe6c56e 100644 --- a/Mage.Sets/src/mage/cards/r/RoyalAssassin.java +++ b/Mage.Sets/src/mage/cards/r/RoyalAssassin.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class RoyalAssassin extends CardImpl { this.toughness = new MageInt(1); Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java b/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java index b1890609b7b..5968ca5623d 100644 --- a/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java +++ b/Mage.Sets/src/mage/cards/r/RuinsOfOranRief.java @@ -16,6 +16,7 @@ import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorlessPredicate; import mage.filter.predicate.permanent.EnteredThisTurnPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class RuinsOfOranRief extends CardImpl { this.addAbility(new ColorlessManaAbility()); // {T}: Put a +1/+1 counter on target colorless creature that entered the battlefield this turn. Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RunnersBane.java b/Mage.Sets/src/mage/cards/r/RunnersBane.java index 3de7e89bb96..03b3372293f 100644 --- a/Mage.Sets/src/mage/cards/r/RunnersBane.java +++ b/Mage.Sets/src/mage/cards/r/RunnersBane.java @@ -37,7 +37,7 @@ public final class RunnersBane extends CardImpl { // Enchant creature with power 3 or less - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.UnboostCreature)); Ability ability = new EnchantAbility(auraTarget); diff --git a/Mage.Sets/src/mage/cards/r/RuthlessInstincts.java b/Mage.Sets/src/mage/cards/r/RuthlessInstincts.java index f71007635d8..5f8044691ef 100644 --- a/Mage.Sets/src/mage/cards/r/RuthlessInstincts.java +++ b/Mage.Sets/src/mage/cards/r/RuthlessInstincts.java @@ -18,6 +18,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.AttackingPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -48,7 +49,7 @@ public final class RuthlessInstincts extends CardImpl { effect = new UntapTargetEffect(); effect.setText("Untap it"); this.getSpellAbility().addEffect(effect); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); this.getSpellAbility().addTarget(target); // * Target attacking creature gets +2/+2 and gains trample until end of turn. effect = new BoostTargetEffect(2,2,Duration.EndOfTurn); @@ -57,7 +58,7 @@ public final class RuthlessInstincts extends CardImpl { effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn); effect.setText("and gains trample until end of turn"); mode.addEffect(effect); - mode.addTarget(new TargetCreaturePermanent(filterAttacking)); + mode.addTarget(new TargetPermanent(filterAttacking)); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/r/RuthlessPredation.java b/Mage.Sets/src/mage/cards/r/RuthlessPredation.java index 16e460c17d2..fcbb3bf8a07 100644 --- a/Mage.Sets/src/mage/cards/r/RuthlessPredation.java +++ b/Mage.Sets/src/mage/cards/r/RuthlessPredation.java @@ -11,9 +11,12 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * * @author @stwalsh4118 @@ -33,7 +36,7 @@ public final class RuthlessPredation extends CardImpl { "(Each deals damage equal to its power to the other.)"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL); + Target target = new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL); this.getSpellAbility().addTarget(target); } diff --git a/Mage.Sets/src/mage/cards/s/SamutVoiceOfDissent.java b/Mage.Sets/src/mage/cards/s/SamutVoiceOfDissent.java index f3439375be3..965ab22d815 100644 --- a/Mage.Sets/src/mage/cards/s/SamutVoiceOfDissent.java +++ b/Mage.Sets/src/mage/cards/s/SamutVoiceOfDissent.java @@ -24,6 +24,7 @@ import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -65,7 +66,7 @@ public final class SamutVoiceOfDissent extends CardImpl { //W, Tap: Untap another target creature. Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new ManaCostsImpl<>("{W}")); - ability.addTarget(new TargetCreaturePermanent(filter2)); + ability.addTarget(new TargetPermanent(filter2)); ability.addCost(new TapSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SapphireCharm.java b/Mage.Sets/src/mage/cards/s/SapphireCharm.java index e62200aa6d5..25139ec272a 100644 --- a/Mage.Sets/src/mage/cards/s/SapphireCharm.java +++ b/Mage.Sets/src/mage/cards/s/SapphireCharm.java @@ -15,9 +15,12 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author fireshoes @@ -41,7 +44,7 @@ public final class SapphireCharm extends CardImpl { // or target creature an opponent controls phases out. mode = new Mode(new PhaseOutTargetEffect()); - mode.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + mode.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/s/SatyrFiredancer.java b/Mage.Sets/src/mage/cards/s/SatyrFiredancer.java index 95ad9e5b92d..894acc8f25e 100644 --- a/Mage.Sets/src/mage/cards/s/SatyrFiredancer.java +++ b/Mage.Sets/src/mage/cards/s/SatyrFiredancer.java @@ -19,6 +19,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.TargetAdjuster; import mage.target.targetpointer.FixedTarget; @@ -136,7 +137,7 @@ enum SatyrFiredancerAdjuster implements TargetAdjuster { if (opponent != null) { FilterCreaturePermanent filter = new FilterCreaturePermanent("creature controlled by " + opponent.getLogName()); filter.add(new ControllerIdPredicate(opponent.getId())); - ability.getTargets().add(new TargetCreaturePermanent(filter)); + ability.getTargets().add(new TargetPermanent(filter)); } } } diff --git a/Mage.Sets/src/mage/cards/s/SavageAlliance.java b/Mage.Sets/src/mage/cards/s/SavageAlliance.java index e63f2b86dd5..5f262f47e58 100644 --- a/Mage.Sets/src/mage/cards/s/SavageAlliance.java +++ b/Mage.Sets/src/mage/cards/s/SavageAlliance.java @@ -22,6 +22,7 @@ import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; @@ -59,7 +60,7 @@ public final class SavageAlliance extends CardImpl { Effect effect = new DamageTargetEffect(2); effect.setText("{this} deals 2 damage to target creature"); Mode mode = new Mode(effect); - mode.addTarget(new TargetCreaturePermanent(filterCreature).withChooseHint("deals 2 damage to")); + mode.addTarget(new TargetPermanent(filterCreature).withChooseHint("deals 2 damage to")); this.getSpellAbility().addMode(mode); // Savage Alliance deals 1 damage to each creature target opponent controls. diff --git a/Mage.Sets/src/mage/cards/s/SavagePunch.java b/Mage.Sets/src/mage/cards/s/SavagePunch.java index d20283338f1..c9105cbb8a8 100644 --- a/Mage.Sets/src/mage/cards/s/SavagePunch.java +++ b/Mage.Sets/src/mage/cards/s/SavagePunch.java @@ -13,11 +13,14 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -39,7 +42,7 @@ public final class SavagePunch extends CardImpl { effect.setText("
Target creature you control fights target creature you don't control"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL); + Target target = new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL); this.getSpellAbility().addTarget(target); } diff --git a/Mage.Sets/src/mage/cards/s/SavageSmash.java b/Mage.Sets/src/mage/cards/s/SavageSmash.java index 80892289ee5..0ceb8408337 100644 --- a/Mage.Sets/src/mage/cards/s/SavageSmash.java +++ b/Mage.Sets/src/mage/cards/s/SavageSmash.java @@ -7,11 +7,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -27,7 +30,7 @@ public final class SavageSmash extends CardImpl { " (Each deals damage equal to its power to the other.)") ); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private SavageSmash(final SavageSmash card) { diff --git a/Mage.Sets/src/mage/cards/s/SavageStomp.java b/Mage.Sets/src/mage/cards/s/SavageStomp.java index a054c9082f0..b1c8fed2f58 100644 --- a/Mage.Sets/src/mage/cards/s/SavageStomp.java +++ b/Mage.Sets/src/mage/cards/s/SavageStomp.java @@ -16,11 +16,14 @@ import mage.counters.CounterType; import mage.filter.FilterPermanent; import mage.filter.StaticFilters; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -47,7 +50,7 @@ public final class SavageStomp extends CardImpl { "(Each deals damage equal to its power to the other.)"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private SavageStomp(final SavageStomp card) { diff --git a/Mage.Sets/src/mage/cards/s/SavingGrasp.java b/Mage.Sets/src/mage/cards/s/SavingGrasp.java index 0c6ff824a9a..dffd345b392 100644 --- a/Mage.Sets/src/mage/cards/s/SavingGrasp.java +++ b/Mage.Sets/src/mage/cards/s/SavingGrasp.java @@ -8,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -27,7 +28,7 @@ public final class SavingGrasp extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}"); // Return target creature you own to your hand. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new ReturnToHandTargetEffect().setText("return target creature you own to your hand")); // Flashback {W} this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{W}"))); diff --git a/Mage.Sets/src/mage/cards/s/ScabClanGiant.java b/Mage.Sets/src/mage/cards/s/ScabClanGiant.java index 7c85ea2260e..4781aa08854 100644 --- a/Mage.Sets/src/mage/cards/s/ScabClanGiant.java +++ b/Mage.Sets/src/mage/cards/s/ScabClanGiant.java @@ -11,10 +11,13 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author LevelX2 */ @@ -31,7 +34,7 @@ public final class ScabClanGiant extends CardImpl { // When Scab-Clan Giant enters the battlefield, it fights target creature an opponent controls chosen at random. Ability ability = new EntersBattlefieldTriggeredAbility(new FightTargetSourceEffect() .setText("it fights target creature an opponent controls chosen at random")); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); + Target target = new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE); target.setRandom(true); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/Schismotivate.java b/Mage.Sets/src/mage/cards/s/Schismotivate.java index da6a4158968..f5236523498 100644 --- a/Mage.Sets/src/mage/cards/s/Schismotivate.java +++ b/Mage.Sets/src/mage/cards/s/Schismotivate.java @@ -1,44 +1,31 @@ - package mage.cards.s; -import java.util.UUID; -import mage.abilities.Ability; -import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; -import mage.game.Game; -import mage.game.permanent.Permanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.SecondTargetPointer; + +import java.util.UUID; /** - * * @author fireshoes */ public final class Schismotivate extends CardImpl { public Schismotivate(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{R}"); // Target creature gets +4/+0 until end of turn. Another target creature gets -4/-0 until end of turn. - this.getSpellAbility().addEffect(new SchismotivateEffect()); - - FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature (gets +4/+0 until end of turn)"); - TargetCreaturePermanent target1 = new TargetCreaturePermanent(filter1); - target1.setTargetTag(1); - this.getSpellAbility().addTarget(target1); - - FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another creature (gets -4/-0 until end of turn)"); - filter2.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter2); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addEffect(new BoostTargetEffect(4, 0)); + this.getSpellAbility().addEffect(new BoostTargetEffect(-4, 0) + .setTargetPointer(new SecondTargetPointer()) + .setText("Another target creature gets -4/-0 until end of turn")); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("+4/+0").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).withChooseHint("-4/-0").setTargetTag(2)); } private Schismotivate(final Schismotivate card) { @@ -50,33 +37,3 @@ public final class Schismotivate extends CardImpl { return new Schismotivate(this); } } - -class SchismotivateEffect extends ContinuousEffectImpl { - - SchismotivateEffect() { - super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature); - this.staticText = "Target creature gets +4/+0 until end of turn. Another target creature gets -4/-0 until end of turn"; - } - - private SchismotivateEffect(final SchismotivateEffect effect) { - super(effect); - } - - @Override - public SchismotivateEffect copy() { - return new SchismotivateEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(source.getFirstTarget()); - if (permanent != null) { - permanent.addPower(4); - } - permanent = game.getPermanent(source.getTargets().get(1).getFirstTarget()); - if (permanent != null) { - permanent.addPower(-4); - } - return true; - } -} diff --git a/Mage.Sets/src/mage/cards/s/ScroungingBandar.java b/Mage.Sets/src/mage/cards/s/ScroungingBandar.java index 6d9fb216110..108102b4edd 100644 --- a/Mage.Sets/src/mage/cards/s/ScroungingBandar.java +++ b/Mage.Sets/src/mage/cards/s/ScroungingBandar.java @@ -17,8 +17,11 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author Styxo @@ -38,7 +41,7 @@ public final class ScroungingBandar extends CardImpl { // At the beginning of you upkeep, you may move any number of +1/+1 counters from Scrounging Bandar onto another target creature. Ability ability = new BeginningOfUpkeepTriggeredAbility(new ScroungingBandarEffect(), true); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/ScrybRanger.java b/Mage.Sets/src/mage/cards/s/ScrybRanger.java index 8f55de220dd..7ed87770afb 100644 --- a/Mage.Sets/src/mage/cards/s/ScrybRanger.java +++ b/Mage.Sets/src/mage/cards/s/ScrybRanger.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; @@ -15,13 +13,13 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author Plopman */ public final class ScrybRanger extends CardImpl { @@ -42,12 +40,17 @@ public final class ScrybRanger extends CardImpl { // Flash this.addAbility(FlashAbility.getInstance()); + // Flying this.addAbility(FlyingAbility.getInstance()); + // protection from blue this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); + // Return a Forest you control to its owner's hand: Untap target creature. Activate this ability only once each turn. - Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(filterForest))); + Ability ability = new LimitedTimesPerTurnActivatedAbility( + new UntapTargetEffect(), new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(filterForest)) + ); ability.addTarget(new TargetCreaturePermanent(1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SealOfDoom.java b/Mage.Sets/src/mage/cards/s/SealOfDoom.java index 64ca2f487eb..be3544f7a0b 100644 --- a/Mage.Sets/src/mage/cards/s/SealOfDoom.java +++ b/Mage.Sets/src/mage/cards/s/SealOfDoom.java @@ -10,8 +10,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * @author Loki */ @@ -21,7 +24,7 @@ public final class SealOfDoom extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}"); Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(true), new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SearingLight.java b/Mage.Sets/src/mage/cards/s/SearingLight.java index b1758315024..08bd54f8a41 100644 --- a/Mage.Sets/src/mage/cards/s/SearingLight.java +++ b/Mage.Sets/src/mage/cards/s/SearingLight.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterAttackingOrBlockingCreature; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -27,7 +28,7 @@ public final class SearingLight extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}"); // Destroying target attacking or blocking creature with power 2 or less. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/s/SeizeTheSoul.java b/Mage.Sets/src/mage/cards/s/SeizeTheSoul.java index bffe087601a..d417ef78e77 100644 --- a/Mage.Sets/src/mage/cards/s/SeizeTheSoul.java +++ b/Mage.Sets/src/mage/cards/s/SeizeTheSoul.java @@ -12,6 +12,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.SpiritWhiteToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -34,13 +35,13 @@ public final class SeizeTheSoul extends CardImpl { // Destroy target nonwhite, nonblack creature. Put a 1/1 white Spirit creature token with flying onto the battlefield. this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new CreateTokenEffect(new SpiritWhiteToken())); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Haunt // When the creature Seize the Soul haunts dies, destroy target nonwhite, nonblack creature. Put a 1/1 white Spirit creature token with flying onto the battlefield. Ability ability = new HauntAbility(this, new DestroyTargetEffect()); ability.addEffect(new CreateTokenEffect(new SpiritWhiteToken())); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SelectForInspection.java b/Mage.Sets/src/mage/cards/s/SelectForInspection.java index d5d7e8a0a81..350aaf21852 100644 --- a/Mage.Sets/src/mage/cards/s/SelectForInspection.java +++ b/Mage.Sets/src/mage/cards/s/SelectForInspection.java @@ -9,6 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class SelectForInspection extends CardImpl { // Return target tapped creature to its owner's hand. Scry 1. this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new ScryEffect(1)); } diff --git a/Mage.Sets/src/mage/cards/s/SelesnyaCharm.java b/Mage.Sets/src/mage/cards/s/SelesnyaCharm.java index 2c996db5cc3..5e497797990 100644 --- a/Mage.Sets/src/mage/cards/s/SelesnyaCharm.java +++ b/Mage.Sets/src/mage/cards/s/SelesnyaCharm.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.permanent.token.KnightToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class SelesnyaCharm extends CardImpl { // or exile target creature with power 5 or greater; Mode mode = new Mode(new ExileTargetEffect()); - mode.addTarget(new TargetCreaturePermanent(filter)); + mode.addTarget(new TargetPermanent(filter)); this.getSpellAbility().addMode(mode); // or create a 2/2 white Knight creature token with vigilance. diff --git a/Mage.Sets/src/mage/cards/s/SerendibSorcerer.java b/Mage.Sets/src/mage/cards/s/SerendibSorcerer.java index 32afdb747a2..e52caae46cd 100644 --- a/Mage.Sets/src/mage/cards/s/SerendibSorcerer.java +++ b/Mage.Sets/src/mage/cards/s/SerendibSorcerer.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class SerendibSorcerer extends CardImpl { // {tap}: Target creature other than Serendib Sorcerer becomes 0/2 until end of turn. Ability ability = new SimpleActivatedAbility(new SetBasePowerToughnessTargetEffect(0, 2, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SereneMaster.java b/Mage.Sets/src/mage/cards/s/SereneMaster.java index 380d30a4f0d..6ad0063c779 100644 --- a/Mage.Sets/src/mage/cards/s/SereneMaster.java +++ b/Mage.Sets/src/mage/cards/s/SereneMaster.java @@ -18,6 +18,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.BlockingOrBlockedBySourcePredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -44,7 +45,7 @@ public final class SereneMaster extends CardImpl { // Whenever Serene Master blocks, exchange its power and the power of target creature it's blocking until end of combat. Ability ability = new BlocksSourceTriggeredAbility(new SereneMasterEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SerpentAssassin.java b/Mage.Sets/src/mage/cards/s/SerpentAssassin.java index 18d32d8794f..f8f668249c2 100644 --- a/Mage.Sets/src/mage/cards/s/SerpentAssassin.java +++ b/Mage.Sets/src/mage/cards/s/SerpentAssassin.java @@ -10,8 +10,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author fireshoes @@ -27,7 +30,7 @@ public final class SerpentAssassin extends CardImpl { // When Serpent Assassin enters the battlefield, you may destroy target nonblack creature. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SerpentineSpike.java b/Mage.Sets/src/mage/cards/s/SerpentineSpike.java index 62841f30aad..b1eedebb8a7 100644 --- a/Mage.Sets/src/mage/cards/s/SerpentineSpike.java +++ b/Mage.Sets/src/mage/cards/s/SerpentineSpike.java @@ -1,9 +1,6 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.replacement.DealtDamageToCreatureBySourceDies; import mage.abilities.keyword.DevoidAbility; @@ -12,19 +9,29 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; +import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.other.AnotherTargetPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.DamagedByWatcher; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class SerpentineSpike extends CardImpl { + private static final FilterPermanent filter = new FilterCreaturePermanent("another creature"); + + static { + filter.add(new AnotherTargetPredicate(3)); + } + public SerpentineSpike(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{R}{R}"); @@ -33,26 +40,12 @@ public final class SerpentineSpike extends CardImpl { // Serpentine Spike deals 2 damage to target creature, 3 damage to another target creature, and 4 damage to a third target creature. If a creature dealt damage this way would die this turn, exile it instead. this.getSpellAbility().addEffect(new SerpentineSpikeEffect()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("2 damage").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).withChooseHint("3 damage").setTargetTag(2)); + this.getSpellAbility().addTarget(new TargetPermanent(filter).withChooseHint("4 damage").setTargetTag(3)); - TargetCreaturePermanent target = new TargetCreaturePermanent(new FilterCreaturePermanent("creature (2 damage)")); - target.setTargetTag(1); - this.getSpellAbility().addTarget(target); - - FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature (3 damage)"); - filter.add(new AnotherTargetPredicate(2)); - target = new TargetCreaturePermanent(filter); - target.setTargetTag(2); - this.getSpellAbility().addTarget(target); - - filter = new FilterCreaturePermanent("another target creature (4 damage)"); - filter.add(new AnotherTargetPredicate(3)); - target = new TargetCreaturePermanent(filter); - target.setTargetTag(3); - this.getSpellAbility().addTarget(target); - - Effect effect = new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn); - effect.setText("If a creature dealt damage this way would die this turn, exile it instead"); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn) + .setText("If a creature dealt damage this way would die this turn, exile it instead")); this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } diff --git a/Mage.Sets/src/mage/cards/s/SerraAdvocate.java b/Mage.Sets/src/mage/cards/s/SerraAdvocate.java index fedb8c4d002..9a3291dade6 100644 --- a/Mage.Sets/src/mage/cards/s/SerraAdvocate.java +++ b/Mage.Sets/src/mage/cards/s/SerraAdvocate.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class SerraAdvocate extends CardImpl { // {tap}: Target attacking or blocking creature gets +2/+2 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SetessanTactics.java b/Mage.Sets/src/mage/cards/s/SetessanTactics.java index 9a2ab8bb6f9..63e244f25a1 100644 --- a/Mage.Sets/src/mage/cards/s/SetessanTactics.java +++ b/Mage.Sets/src/mage/cards/s/SetessanTactics.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -42,7 +43,7 @@ public final class SetessanTactics extends CardImpl { effect.setText("Until end of turn, any number of target creatures each get +1/+1"); this.getSpellAbility().addEffect(effect); Ability gainedAbility = new SimpleActivatedAbility(new FightTargetSourceEffect(), new TapSourceCost()); - gainedAbility.addTarget(new TargetCreaturePermanent(filter)); + gainedAbility.addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(gainedAbility, Duration.EndOfTurn, "and gain \"{T}: This creature fights another target creature.\"")); } diff --git a/Mage.Sets/src/mage/cards/s/SeverSoul.java b/Mage.Sets/src/mage/cards/s/SeverSoul.java index 2bb08849296..80c1a99f6ea 100644 --- a/Mage.Sets/src/mage/cards/s/SeverSoul.java +++ b/Mage.Sets/src/mage/cards/s/SeverSoul.java @@ -12,8 +12,11 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author dustinconrad @@ -24,7 +27,7 @@ public final class SeverSoul extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}"); // Destroy target nonblack creature. It can't be regenerated. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); // You gain life equal to its toughness. this.getSpellAbility().addEffect(new GainLifeEqualToToughnessEffect()); diff --git a/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java b/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java index e350e6d1288..b4550127ce1 100644 --- a/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java +++ b/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java @@ -17,6 +17,7 @@ import mage.constants.SubType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -49,7 +50,7 @@ public final class ShadowbornDemon extends CardImpl { // When Shadowborn Demon enters the battlefield, destroy target non-Demon creature. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // At the beginning of your upkeep, if there are fewer than six creature cards in your graveyard, sacrifice a creature. diff --git a/Mage.Sets/src/mage/cards/s/ShaileDeanOfRadiance.java b/Mage.Sets/src/mage/cards/s/ShaileDeanOfRadiance.java index a825384c496..50e56b506c4 100644 --- a/Mage.Sets/src/mage/cards/s/ShaileDeanOfRadiance.java +++ b/Mage.Sets/src/mage/cards/s/ShaileDeanOfRadiance.java @@ -24,6 +24,7 @@ import mage.filter.predicate.Predicate; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.permanent.EnteredThisTurnPredicate; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -72,7 +73,7 @@ public final class ShaileDeanOfRadiance extends ModalDoubleFacedCard { // {T}: Put a +1/+1 counter on another target creature, then Embrose, Dean of Shadow deals 2 damage to that creature. Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new TapSourceCost()); ability.addEffect(new DamageTargetEffect(2).concatBy(", then").setText("{this} deals 2 damage to that creature")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.getRightHalfCard().addAbility(ability); // Whenever a creature you control with a +1/+1 counter on it dies, draw a card. @@ -87,4 +88,4 @@ public final class ShaileDeanOfRadiance extends ModalDoubleFacedCard { public ShaileDeanOfRadiance copy() { return new ShaileDeanOfRadiance(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/s/ShamblingGoblin.java b/Mage.Sets/src/mage/cards/s/ShamblingGoblin.java index 4b6137c2fc8..1a474fb4edb 100644 --- a/Mage.Sets/src/mage/cards/s/ShamblingGoblin.java +++ b/Mage.Sets/src/mage/cards/s/ShamblingGoblin.java @@ -12,8 +12,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -29,7 +32,7 @@ public final class ShamblingGoblin extends CardImpl { // When Shambling Goblin dies, target creature an opponent controls gets -1/-1 until end of turn. Ability ability = new DiesSourceTriggeredAbility(new BoostTargetEffect(-1,-1, Duration.EndOfTurn)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/ShaukusMinion.java b/Mage.Sets/src/mage/cards/s/ShaukusMinion.java index e5bf360d0ca..9fc8c2fdcec 100644 --- a/Mage.Sets/src/mage/cards/s/ShaukusMinion.java +++ b/Mage.Sets/src/mage/cards/s/ShaukusMinion.java @@ -16,6 +16,7 @@ import mage.constants.CardType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class ShaukusMinion extends CardImpl { // {B}{R}, {tap}: Shauku's Minion deals 2 damage to target white creature. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2), new ManaCostsImpl<>("{B}{R}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SheerDrop.java b/Mage.Sets/src/mage/cards/s/SheerDrop.java index 105adfa8300..173031379d7 100644 --- a/Mage.Sets/src/mage/cards/s/SheerDrop.java +++ b/Mage.Sets/src/mage/cards/s/SheerDrop.java @@ -9,6 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class SheerDrop extends CardImpl { // Destroy target tapped creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Awaken 3-{5}{W} (If you cast this spell for {5}{W}, also put three +1/+1 counters on target land you control and it becomes a 0/0 Elemental creature with haste. It's still a land.) this.addAbility(new AwakenAbility(this, 3, "{5}{W}")); diff --git a/Mage.Sets/src/mage/cards/s/ShellSkulkin.java b/Mage.Sets/src/mage/cards/s/ShellSkulkin.java index 216337992b3..ba563ac5e19 100644 --- a/Mage.Sets/src/mage/cards/s/ShellSkulkin.java +++ b/Mage.Sets/src/mage/cards/s/ShellSkulkin.java @@ -17,6 +17,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class ShellSkulkin extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(2); Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(ShroudAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(3)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/ShieldBroker.java b/Mage.Sets/src/mage/cards/s/ShieldBroker.java index 57327cfb91b..b8589726155 100644 --- a/Mage.Sets/src/mage/cards/s/ShieldBroker.java +++ b/Mage.Sets/src/mage/cards/s/ShieldBroker.java @@ -17,6 +17,7 @@ import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CommanderPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -47,7 +48,7 @@ public class ShieldBroker extends CardImpl { gainControlEffect.setText("You gain control of that creature for as long as it has a shield counter on it. " + "(If it would be dealt damage or destroyed, remove a shield counter from it instead.)"); etbAbility.addEffect(gainControlEffect); - etbAbility.addTarget(new TargetCreaturePermanent(filter)); + etbAbility.addTarget(new TargetPermanent(filter)); this.addAbility(etbAbility); } diff --git a/Mage.Sets/src/mage/cards/s/ShiftingGrift.java b/Mage.Sets/src/mage/cards/s/ShiftingGrift.java index ac26c1d043b..b01634609ca 100644 --- a/Mage.Sets/src/mage/cards/s/ShiftingGrift.java +++ b/Mage.Sets/src/mage/cards/s/ShiftingGrift.java @@ -22,7 +22,6 @@ public final class ShiftingGrift extends CardImpl { public ShiftingGrift(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}{U}"); - // Spree this.addAbility(new SpreeAbility(this)); diff --git a/Mage.Sets/src/mage/cards/s/ShimianNightStalker.java b/Mage.Sets/src/mage/cards/s/ShimianNightStalker.java index 2dcf1f9f60c..8d841cf5656 100644 --- a/Mage.Sets/src/mage/cards/s/ShimianNightStalker.java +++ b/Mage.Sets/src/mage/cards/s/ShimianNightStalker.java @@ -43,7 +43,7 @@ public final class ShimianNightStalker extends CardImpl { // {B}, {T}: All damage that would be dealt to you this turn by target attacking creature is dealt to Shimian Night Stalker instead. Ability ability = new SimpleActivatedAbility(new ShimianNightStalkerRedirectDamageEffect(), new ManaCostsImpl<>("{B}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/ShipwreckSinger.java b/Mage.Sets/src/mage/cards/s/ShipwreckSinger.java index f2c1eb321b2..8db43f3430b 100644 --- a/Mage.Sets/src/mage/cards/s/ShipwreckSinger.java +++ b/Mage.Sets/src/mage/cards/s/ShipwreckSinger.java @@ -16,8 +16,11 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -35,7 +38,7 @@ public final class ShipwreckSinger extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // {1}{U}: Target creature an opponent controls attacks this turn if able. Ability ability = new SimpleActivatedAbility(new AttacksIfAbleTargetEffect(Duration.EndOfTurn), new ManaCostsImpl<>("{1}{U}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); // {1}{B}, {T}: Attacking creatures get -1/-1 until end of turn. ability = new SimpleActivatedAbility(new BoostAllEffect(-1,-1, Duration.EndOfTurn, StaticFilters.FILTER_ATTACKING_CREATURES, false), new ManaCostsImpl<>("{1}{B}")); diff --git a/Mage.Sets/src/mage/cards/s/ShivanEmissary.java b/Mage.Sets/src/mage/cards/s/ShivanEmissary.java index 25ddd5a3bb3..77c75594652 100644 --- a/Mage.Sets/src/mage/cards/s/ShivanEmissary.java +++ b/Mage.Sets/src/mage/cards/s/ShivanEmissary.java @@ -11,10 +11,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * @author LoneFox */ @@ -32,7 +35,7 @@ public final class ShivanEmissary extends CardImpl { // When Shivan Emissary enters the battlefield, if it was kicked, destroy target nonblack creature. It can't be regenerated. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(true)).withInterveningIf(KickedCondition.ONCE); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Showstopper.java b/Mage.Sets/src/mage/cards/s/Showstopper.java index 8022d15ff01..23cad696a3b 100644 --- a/Mage.Sets/src/mage/cards/s/Showstopper.java +++ b/Mage.Sets/src/mage/cards/s/Showstopper.java @@ -12,8 +12,11 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -27,7 +30,7 @@ public final class Showstopper extends CardImpl { // Until end of turn, creatures you control gain "When this creature dies, it deals 2 damage to target creature an opponent controls." TriggeredAbility ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(2, "it"), false); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); + Target target = new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE); ability.addTarget(target); Effect effect = new GainAbilityControlledEffect(ability, Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES); effect.setText("Until end of turn, creatures you control gain \"When this creature dies, it deals 2 damage to target creature an opponent controls.\""); diff --git a/Mage.Sets/src/mage/cards/s/ShreddingWinds.java b/Mage.Sets/src/mage/cards/s/ShreddingWinds.java index dc1ac4f1751..90d61a2adb1 100644 --- a/Mage.Sets/src/mage/cards/s/ShreddingWinds.java +++ b/Mage.Sets/src/mage/cards/s/ShreddingWinds.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class ShreddingWinds extends CardImpl { // Shredding Winds deals 7 damage to target creature with flying. this.getSpellAbility().addEffect(new DamageTargetEffect(7)); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); this.getSpellAbility().addTarget(target); } diff --git a/Mage.Sets/src/mage/cards/s/Shriekmaw.java b/Mage.Sets/src/mage/cards/s/Shriekmaw.java index f8d144380a1..ac0eea14dcb 100644 --- a/Mage.Sets/src/mage/cards/s/Shriekmaw.java +++ b/Mage.Sets/src/mage/cards/s/Shriekmaw.java @@ -17,6 +17,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -44,7 +45,7 @@ public final class Shriekmaw extends CardImpl { // When Shriekmaw enters the battlefield, destroy target nonartifact, nonblack creature. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(),false); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SickAndTired.java b/Mage.Sets/src/mage/cards/s/SickAndTired.java index 84b789d74fd..d57f9a2e661 100644 --- a/Mage.Sets/src/mage/cards/s/SickAndTired.java +++ b/Mage.Sets/src/mage/cards/s/SickAndTired.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -9,15 +7,15 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author Plopman */ public final class SickAndTired extends CardImpl { public SickAndTired(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}"); - + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}"); // Two target creatures each get -1/-1 until end of turn. this.getSpellAbility().addEffect(new BoostTargetEffect(-1, -1, Duration.EndOfTurn)); diff --git a/Mage.Sets/src/mage/cards/s/SidarJabari.java b/Mage.Sets/src/mage/cards/s/SidarJabari.java index 9f8a8296c23..6793de24bf4 100644 --- a/Mage.Sets/src/mage/cards/s/SidarJabari.java +++ b/Mage.Sets/src/mage/cards/s/SidarJabari.java @@ -14,6 +14,7 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class SidarJabari extends CardImpl { // Whenever Sidar Jabari attacks, tap target creature defending player controls. Ability ability = new AttacksTriggeredAbility(new TapTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SigilOfSleep.java b/Mage.Sets/src/mage/cards/s/SigilOfSleep.java index 7856263da01..eac14995734 100644 --- a/Mage.Sets/src/mage/cards/s/SigilOfSleep.java +++ b/Mage.Sets/src/mage/cards/s/SigilOfSleep.java @@ -39,7 +39,7 @@ public final class SigilOfSleep extends CardImpl { // Whenever enchanted creature deals damage to a player, return target creature that player controls to its owner's hand. Effect effect = new ReturnToHandTargetEffect(); ability = new DealsDamageToAPlayerAttachedTriggeredAbility(effect, "enchanted", false, true, false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.setTargetAdjuster(new ThatPlayerControlsTargetAdjuster()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SignatureSlam.java b/Mage.Sets/src/mage/cards/s/SignatureSlam.java index 792a6f86a86..51fd55fb010 100644 --- a/Mage.Sets/src/mage/cards/s/SignatureSlam.java +++ b/Mage.Sets/src/mage/cards/s/SignatureSlam.java @@ -14,12 +14,15 @@ import mage.filter.predicate.permanent.ModifiedPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.SecondTargetPointer; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author Susucr */ @@ -32,7 +35,7 @@ public final class SignatureSlam extends CardImpl { this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); this.getSpellAbility().addEffect(new SignatureSlamEffect().setTargetPointer(new SecondTargetPointer())); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private SignatureSlam(final SignatureSlam card) { diff --git a/Mage.Sets/src/mage/cards/s/SilumgarAssassin.java b/Mage.Sets/src/mage/cards/s/SilumgarAssassin.java index b5df7d8bec5..4e5536ac131 100644 --- a/Mage.Sets/src/mage/cards/s/SilumgarAssassin.java +++ b/Mage.Sets/src/mage/cards/s/SilumgarAssassin.java @@ -19,6 +19,7 @@ import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -49,7 +50,7 @@ public final class SilumgarAssassin extends CardImpl { // When Silumgar Assassin is turned face up, destroy target creature with power 3 or less an opponent controls. Ability ability = new TurnedFaceUpSourceTriggeredAbility(new DestroyTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SimicBasilisk.java b/Mage.Sets/src/mage/cards/s/SimicBasilisk.java index 67e5997661d..1415f80933d 100644 --- a/Mage.Sets/src/mage/cards/s/SimicBasilisk.java +++ b/Mage.Sets/src/mage/cards/s/SimicBasilisk.java @@ -20,8 +20,11 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_A_CREATURE_P1P1; + /** * * @author JotaPeRL @@ -46,7 +49,7 @@ public final class SimicBasilisk extends CardImpl { new DealsDamageToACreatureTriggeredAbility(effect, true, false, true), Duration.EndOfTurn) .setText("Until end of turn, target creature with a +1/+1 counter on it gains \"Whenever this creature deals combat damage to a creature, destroy that creature at end of combat.\""), new ManaCostsImpl<>("{1}{G}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_A_CREATURE_P1P1)); + ability.addTarget(new TargetPermanent(FILTER_A_CREATURE_P1P1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SimicManipulator.java b/Mage.Sets/src/mage/cards/s/SimicManipulator.java index 74b39998a51..1283e6f49c7 100644 --- a/Mage.Sets/src/mage/cards/s/SimicManipulator.java +++ b/Mage.Sets/src/mage/cards/s/SimicManipulator.java @@ -13,6 +13,7 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.PowerTargetAdjuster; @@ -47,7 +48,7 @@ public final class SimicManipulator extends CardImpl { // {T}, Remove one or more +1/+1 counters from Simic Manipulator: Gain control of target creature with power less than or equal to the number of +1/+1 counters removed this way. Ability ability = new SimpleActivatedAbility(new GainControlTargetEffect(Duration.Custom, true), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.addCost(new RemoveVariableCountersSourceCost(CounterType.P1P1, 1, "Remove one or more +1/+1 counters from {this}")); ability.setTargetAdjuster(new PowerTargetAdjuster(GetXValue.instance, ComparisonType.OR_LESS)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SithAssassin.java b/Mage.Sets/src/mage/cards/s/SithAssassin.java index af5f02d43c9..84f38e04fa8 100644 --- a/Mage.Sets/src/mage/cards/s/SithAssassin.java +++ b/Mage.Sets/src/mage/cards/s/SithAssassin.java @@ -11,11 +11,14 @@ import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.LifeLossOtherFromCombatWatcher; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * @author Styxo */ @@ -30,7 +33,7 @@ public final class SithAssassin extends CardImpl { // Hate — When Sith Assassin enters the battlefield, if opponent lost life from source other than combat damage this turn, you may destroy target nonblack creature. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true).withInterveningIf(HateCondition.instance); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability.setAbilityWord(AbilityWord.HATE), new LifeLossOtherFromCombatWatcher()); } diff --git a/Mage.Sets/src/mage/cards/s/Skinthinner.java b/Mage.Sets/src/mage/cards/s/Skinthinner.java index dda8978f95e..43eebdb9d6d 100644 --- a/Mage.Sets/src/mage/cards/s/Skinthinner.java +++ b/Mage.Sets/src/mage/cards/s/Skinthinner.java @@ -12,8 +12,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LoneFox @@ -30,7 +33,7 @@ public final class Skinthinner extends CardImpl { this.addAbility(new MorphAbility(this, new ManaCostsImpl<>("{3}{B}{B}"))); // When Skinthinner is turned face up, destroy target nonblack creature. It can't be regenerated. Ability ability = new TurnedFaceUpSourceTriggeredAbility(new DestroyTargetEffect(true)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + ability.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SkirkAlarmist.java b/Mage.Sets/src/mage/cards/s/SkirkAlarmist.java index 22acf7450c3..e389c7ec213 100644 --- a/Mage.Sets/src/mage/cards/s/SkirkAlarmist.java +++ b/Mage.Sets/src/mage/cards/s/SkirkAlarmist.java @@ -22,6 +22,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.card.FaceDownPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -52,7 +53,7 @@ public final class SkirkAlarmist extends CardImpl { // {tap}: Turn target face-down creature you control face up. At the beginning of the next end step, sacrifice it. Ability ability = new SimpleActivatedAbility(new TurnFaceUpTargetEffect(), new TapSourceCost()); ability.addEffect(new SkirkAlarmistEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Skulduggery.java b/Mage.Sets/src/mage/cards/s/Skulduggery.java index 6241a7da838..a18dc256c48 100644 --- a/Mage.Sets/src/mage/cards/s/Skulduggery.java +++ b/Mage.Sets/src/mage/cards/s/Skulduggery.java @@ -14,10 +14,13 @@ import mage.constants.Outcome; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author TheElk801 @@ -30,7 +33,7 @@ public final class Skulduggery extends CardImpl { // Until end of turn, target creature you control gets +1/+1 and target creature an opponent controls gets -1/-1. this.getSpellAbility().addEffect(new SkulduggeryEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); } private Skulduggery(final Skulduggery card) { diff --git a/Mage.Sets/src/mage/cards/s/SkyWeaver.java b/Mage.Sets/src/mage/cards/s/SkyWeaver.java index d94cae2c327..1d745ca6288 100644 --- a/Mage.Sets/src/mage/cards/s/SkyWeaver.java +++ b/Mage.Sets/src/mage/cards/s/SkyWeaver.java @@ -18,6 +18,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -42,7 +43,7 @@ public final class SkyWeaver extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SkylineCascade.java b/Mage.Sets/src/mage/cards/s/SkylineCascade.java index 65f3c2c43bb..df393a141c4 100644 --- a/Mage.Sets/src/mage/cards/s/SkylineCascade.java +++ b/Mage.Sets/src/mage/cards/s/SkylineCascade.java @@ -11,8 +11,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author fireshoes @@ -27,7 +30,7 @@ public final class SkylineCascade extends CardImpl { // When Skyline Cascade enters the battlefield, target creature an opponent controls doesn't untap during its controller's next untap step. Ability ability = new EntersBattlefieldTriggeredAbility(new DontUntapInControllersNextUntapStepTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); // {T}: Add {U}. diff --git a/Mage.Sets/src/mage/cards/s/SkymarkRoc.java b/Mage.Sets/src/mage/cards/s/SkymarkRoc.java index b9bc17a294a..30456421ff6 100644 --- a/Mage.Sets/src/mage/cards/s/SkymarkRoc.java +++ b/Mage.Sets/src/mage/cards/s/SkymarkRoc.java @@ -2,7 +2,6 @@ package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.ReturnToHandTargetEffect; @@ -10,24 +9,25 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.ComparisonType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ToughnessPredicate; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; import mage.game.events.GameEvent; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class SkymarkRoc extends CardImpl { public SkymarkRoc(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}"); this.subtype.add(SubType.BIRD); this.power = new MageInt(3); @@ -74,8 +74,7 @@ class SkymarkRocAbility extends TriggeredAbilityImpl { filter.add(new ToughnessPredicate(ComparisonType.FEWER_THAN, 3)); this.getTargets().clear(); - TargetCreaturePermanent target = new TargetCreaturePermanent(filter); - this.addTarget(target); + this.addTarget(new TargetPermanent(filter)); return true; } return false; @@ -90,4 +89,4 @@ class SkymarkRocAbility extends TriggeredAbilityImpl { public SkymarkRocAbility copy() { return new SkymarkRocAbility(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudArcher.java b/Mage.Sets/src/mage/cards/s/SkyshroudArcher.java index def019a5a0b..3a953a4d172 100644 --- a/Mage.Sets/src/mage/cards/s/SkyshroudArcher.java +++ b/Mage.Sets/src/mage/cards/s/SkyshroudArcher.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class SkyshroudArcher extends CardImpl { // {tap}: Target creature with flying gets -1/-1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(-1, -1, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SkywhalersShot.java b/Mage.Sets/src/mage/cards/s/SkywhalersShot.java index 2feaca01741..96a767a2446 100644 --- a/Mage.Sets/src/mage/cards/s/SkywhalersShot.java +++ b/Mage.Sets/src/mage/cards/s/SkywhalersShot.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class SkywhalersShot extends CardImpl { // Destroy target creature with power 3 or greater. Scry 1. getSpellAbility().addEffect(new DestroyTargetEffect()); - getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + getSpellAbility().addTarget(new TargetPermanent(filter)); getSpellAbility().addEffect(new ScryEffect(1)); } diff --git a/Mage.Sets/src/mage/cards/s/Slaughter.java b/Mage.Sets/src/mage/cards/s/Slaughter.java index e7bfe3deaee..28d269eb55a 100644 --- a/Mage.Sets/src/mage/cards/s/Slaughter.java +++ b/Mage.Sets/src/mage/cards/s/Slaughter.java @@ -8,8 +8,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author Temba21 @@ -24,7 +27,7 @@ public final class Slaughter extends CardImpl { // Destroy target nonblack creature. It can't be regenerated. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); } private Slaughter(final Slaughter card) { diff --git a/Mage.Sets/src/mage/cards/s/SlaughterPact.java b/Mage.Sets/src/mage/cards/s/SlaughterPact.java index 80ae58690b5..57761c98a1b 100644 --- a/Mage.Sets/src/mage/cards/s/SlaughterPact.java +++ b/Mage.Sets/src/mage/cards/s/SlaughterPact.java @@ -9,8 +9,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author Plopman @@ -23,7 +26,7 @@ public final class SlaughterPact extends CardImpl { this.color.setBlack(true); // Destroy target nonblack creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); // At the beginning of your next upkeep, pay {2}{B}. If you don't, you lose the game. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new PactDelayedTriggeredAbility(new ManaCostsImpl<>("{2}{B}")),false)); diff --git a/Mage.Sets/src/mage/cards/s/Slay.java b/Mage.Sets/src/mage/cards/s/Slay.java index f76c49fe73a..d27d8e9237e 100644 --- a/Mage.Sets/src/mage/cards/s/Slay.java +++ b/Mage.Sets/src/mage/cards/s/Slay.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class Slay extends CardImpl { // Destroy target green creature. It can't be regenerated. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java b/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java index d816915ae33..df5b5762239 100644 --- a/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java +++ b/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class SlayerOfTheWicked extends CardImpl { // When Slayer of the Wicked enters the battlefield, you may destroy target Vampire, Werewolf, or Zombie. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SlingshotGoblin.java b/Mage.Sets/src/mage/cards/s/SlingshotGoblin.java index 16cd0477d76..71031f1e7b2 100644 --- a/Mage.Sets/src/mage/cards/s/SlingshotGoblin.java +++ b/Mage.Sets/src/mage/cards/s/SlingshotGoblin.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class SlingshotGoblin extends CardImpl { // {R}, {tap}: Slingshot Goblin deals 2 damage to target blue creature. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2), new ManaCostsImpl<>("{R}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SlipOnTheRing.java b/Mage.Sets/src/mage/cards/s/SlipOnTheRing.java index 236b405d3b2..98c80fc5587 100644 --- a/Mage.Sets/src/mage/cards/s/SlipOnTheRing.java +++ b/Mage.Sets/src/mage/cards/s/SlipOnTheRing.java @@ -9,6 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -27,7 +28,7 @@ public final class SlipOnTheRing extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}"); // Exile target creature you own, then return it to the battlefield under your control. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new ExileThenReturnTargetEffect(true, false)); // The Ring tempts you. this.getSpellAbility().addEffect(new TheRingTemptsYouEffect()); diff --git a/Mage.Sets/src/mage/cards/s/SmeltWardIgnus.java b/Mage.Sets/src/mage/cards/s/SmeltWardIgnus.java index 2a7a7220155..1467a4a06b0 100644 --- a/Mage.Sets/src/mage/cards/s/SmeltWardIgnus.java +++ b/Mage.Sets/src/mage/cards/s/SmeltWardIgnus.java @@ -14,6 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -48,7 +49,7 @@ public final class SmeltWardIgnus extends CardImpl { HasteAbility.getInstance(), Duration.EndOfTurn ).setText("It gains haste until end of turn")); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Smite.java b/Mage.Sets/src/mage/cards/s/Smite.java index 442335ce236..e30744e8355 100644 --- a/Mage.Sets/src/mage/cards/s/Smite.java +++ b/Mage.Sets/src/mage/cards/s/Smite.java @@ -8,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.BlockedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -27,7 +28,7 @@ public final class Smite extends CardImpl { // Destroy target blocked creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect(false)); } diff --git a/Mage.Sets/src/mage/cards/s/SmokeTeller.java b/Mage.Sets/src/mage/cards/s/SmokeTeller.java index 77efc054b4e..7ddaebac3f0 100644 --- a/Mage.Sets/src/mage/cards/s/SmokeTeller.java +++ b/Mage.Sets/src/mage/cards/s/SmokeTeller.java @@ -18,6 +18,7 @@ import mage.filter.predicate.card.FaceDownPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -44,7 +45,7 @@ public final class SmokeTeller extends CardImpl { // 1U: Look at target face-down creature. Ability ability = new SimpleActivatedAbility(new SmokeTellerLookFaceDownEffect(), new ManaCostsImpl<>("{1}{U}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Smother.java b/Mage.Sets/src/mage/cards/s/Smother.java index 05b6892795a..9c3b204c490 100644 --- a/Mage.Sets/src/mage/cards/s/Smother.java +++ b/Mage.Sets/src/mage/cards/s/Smother.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ManaValuePredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -27,7 +28,7 @@ public final class Smother extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}"); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); } diff --git a/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java b/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java index c9e393437e2..97b19a55261 100644 --- a/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java +++ b/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class SnarlingUndorak extends CardImpl { // {2}{G}: Target Beast creature gets +1/+1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{2}{G}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Morph {1}{G}{G} this.addAbility(new MorphAbility(this, new ManaCostsImpl<>("{1}{G}{G}"))); diff --git a/Mage.Sets/src/mage/cards/s/SnowFortress.java b/Mage.Sets/src/mage/cards/s/SnowFortress.java index 1276c396fdf..7a45faf73e4 100644 --- a/Mage.Sets/src/mage/cards/s/SnowFortress.java +++ b/Mage.Sets/src/mage/cards/s/SnowFortress.java @@ -19,6 +19,7 @@ import mage.constants.Zone; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.common.FilterCreatureAttackingYou; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -51,7 +52,7 @@ public final class SnowFortress extends CardImpl { // {3}: Snow Fortress deals 1 damage to target creature without flying that's attacking you. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new GenericManaCost(3)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SnuffOut.java b/Mage.Sets/src/mage/cards/s/SnuffOut.java index 2d22affd606..03a750a1f52 100644 --- a/Mage.Sets/src/mage/cards/s/SnuffOut.java +++ b/Mage.Sets/src/mage/cards/s/SnuffOut.java @@ -10,10 +10,13 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; import mage.filter.common.FilterLandPermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LevelX2 @@ -36,7 +39,7 @@ public final class SnuffOut extends CardImpl { // // Destroy target nonblack creature. It can't be regenerated. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); } private SnuffOut(final SnuffOut card) { diff --git a/Mage.Sets/src/mage/cards/s/SoldierReplica.java b/Mage.Sets/src/mage/cards/s/SoldierReplica.java index 302d0c9aa97..f98e0f7b6cc 100644 --- a/Mage.Sets/src/mage/cards/s/SoldierReplica.java +++ b/Mage.Sets/src/mage/cards/s/SoldierReplica.java @@ -14,6 +14,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class SoldierReplica extends CardImpl { this.toughness = new MageInt(3); Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(3, "it"), new ManaCostsImpl<>("{1}{W}")); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterAttackingOrBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SomberwaldStag.java b/Mage.Sets/src/mage/cards/s/SomberwaldStag.java index 3d3e33fda47..c308b1a6e1e 100644 --- a/Mage.Sets/src/mage/cards/s/SomberwaldStag.java +++ b/Mage.Sets/src/mage/cards/s/SomberwaldStag.java @@ -10,10 +10,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -29,7 +32,7 @@ public final class SomberwaldStag extends CardImpl { Effect effect = new FightTargetSourceEffect(); effect.setText("you may have it fight target creature you don't control"); Ability ability = new EntersBattlefieldTriggeredAbility(effect, true); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Somnophore.java b/Mage.Sets/src/mage/cards/s/Somnophore.java index cca5c21f436..cf65ad0ca5f 100644 --- a/Mage.Sets/src/mage/cards/s/Somnophore.java +++ b/Mage.Sets/src/mage/cards/s/Somnophore.java @@ -23,6 +23,7 @@ import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -91,7 +92,7 @@ class SomnophoreTriggeredAbility extends TriggeredAbilityImpl { filter.add(new ControllerIdPredicate(opponent.getId())); this.getTargets().clear(); - this.addTarget(new TargetCreaturePermanent(filter)); + this.addTarget(new TargetPermanent(filter)); return true; } } diff --git a/Mage.Sets/src/mage/cards/s/Songstitcher.java b/Mage.Sets/src/mage/cards/s/Songstitcher.java index 6d5a8e93dd1..13cb7d6112d 100644 --- a/Mage.Sets/src/mage/cards/s/Songstitcher.java +++ b/Mage.Sets/src/mage/cards/s/Songstitcher.java @@ -15,6 +15,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class Songstitcher extends CardImpl { // {1}{W}: Prevent all combat damage that would be dealt this turn by target attacking creature with flying. Ability ability = new SimpleActivatedAbility(new PreventDamageByTargetEffect(Duration.EndOfTurn, true) .withTextOptions(true, false), new ManaCostsImpl<>("{1}{W}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SootstokeKindler.java b/Mage.Sets/src/mage/cards/s/SootstokeKindler.java index c6cf8cf842a..d23d40e26e6 100644 --- a/Mage.Sets/src/mage/cards/s/SootstokeKindler.java +++ b/Mage.Sets/src/mage/cards/s/SootstokeKindler.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class SootstokeKindler extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SoratamiMirrorGuard.java b/Mage.Sets/src/mage/cards/s/SoratamiMirrorGuard.java index fad971a7a4b..7f888ef5bc4 100644 --- a/Mage.Sets/src/mage/cards/s/SoratamiMirrorGuard.java +++ b/Mage.Sets/src/mage/cards/s/SoratamiMirrorGuard.java @@ -20,6 +20,7 @@ import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -49,7 +50,7 @@ public final class SoratamiMirrorGuard extends CardImpl { // {2}, Return a land you control to its owner's hand: Target creature with power 2 or less can't be blocked this turn. Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(), new GenericManaCost(2)); ability.addCost(new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(filter))); - ability.addTarget(new TargetCreaturePermanent(filterCreature)); + ability.addTarget(new TargetPermanent(filterCreature)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SorayaTheFalconer.java b/Mage.Sets/src/mage/cards/s/SorayaTheFalconer.java index 7548831e065..9727f7bdf80 100644 --- a/Mage.Sets/src/mage/cards/s/SorayaTheFalconer.java +++ b/Mage.Sets/src/mage/cards/s/SorayaTheFalconer.java @@ -18,8 +18,11 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.constants.SubType.BIRD; + /** * * @author L_J @@ -39,7 +42,7 @@ public final class SorayaTheFalconer extends CardImpl { // {1}{W}: Target Bird creature gains banding until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(BandingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}")); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent(SubType.BIRD, "Bird creature"))); + ability.addTarget(new TargetPermanent(new FilterCreaturePermanent(BIRD, "Bird creature"))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SorceressQueen.java b/Mage.Sets/src/mage/cards/s/SorceressQueen.java index 1c7f147aefe..21dacda5a1e 100644 --- a/Mage.Sets/src/mage/cards/s/SorceressQueen.java +++ b/Mage.Sets/src/mage/cards/s/SorceressQueen.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class SorceressQueen extends CardImpl { // {tap}: Target creature other than Sorceress Queen becomes 0/2 until end of turn. Ability ability = new SimpleActivatedAbility(new SetBasePowerToughnessTargetEffect(0, 2, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SoulReap.java b/Mage.Sets/src/mage/cards/s/SoulReap.java index 0a8ed8ac482..974447cffe7 100644 --- a/Mage.Sets/src/mage/cards/s/SoulReap.java +++ b/Mage.Sets/src/mage/cards/s/SoulReap.java @@ -18,6 +18,7 @@ import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.game.stack.Spell; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.Watcher; @@ -39,7 +40,7 @@ public final class SoulReap extends CardImpl { // Destroy target nongreen creature. Its controller loses 3 life if you've cast another black spell this turn. this.getSpellAbility().addEffect(new SoulReapEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addWatcher(new SoulReapWatcher()); } diff --git a/Mage.Sets/src/mage/cards/s/SoulSeizer.java b/Mage.Sets/src/mage/cards/s/SoulSeizer.java index 43db8c735ff..f7e7b786183 100644 --- a/Mage.Sets/src/mage/cards/s/SoulSeizer.java +++ b/Mage.Sets/src/mage/cards/s/SoulSeizer.java @@ -19,6 +19,7 @@ import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -84,7 +85,7 @@ class SoulSeizerTriggeredAbility extends TriggeredAbilityImpl { filter.add(new ControllerIdPredicate(opponent.getId())); this.getTargets().clear(); - this.addTarget(new TargetCreaturePermanent(filter)); + this.addTarget(new TargetPermanent(filter)); return true; } } diff --git a/Mage.Sets/src/mage/cards/s/SoulShred.java b/Mage.Sets/src/mage/cards/s/SoulShred.java index 32bc68bb3de..c938ec8f5e7 100644 --- a/Mage.Sets/src/mage/cards/s/SoulShred.java +++ b/Mage.Sets/src/mage/cards/s/SoulShred.java @@ -7,8 +7,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author fireshoes @@ -20,7 +23,7 @@ public final class SoulShred extends CardImpl { // Soul Shred deals 3 damage to target nonblack creature. You gain 3 life. this.getSpellAbility().addEffect(new DamageTargetEffect(3)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new GainLifeEffect(3)); } diff --git a/Mage.Sets/src/mage/cards/s/SoulSnare.java b/Mage.Sets/src/mage/cards/s/SoulSnare.java index caa87d4258c..9e9bfb02baa 100644 --- a/Mage.Sets/src/mage/cards/s/SoulSnare.java +++ b/Mage.Sets/src/mage/cards/s/SoulSnare.java @@ -12,6 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; import mage.filter.common.FilterCreatureAttackingYou; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -28,7 +29,7 @@ public final class SoulSnare extends CardImpl { Ability ability = new SimpleActivatedAbility( new ExileTargetEffect(), new ManaCostsImpl<>("{W}")); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterCreatureAttackingYou(true))); + ability.addTarget(new TargetPermanent(new FilterCreatureAttackingYou(true))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SoulswornSpirit.java b/Mage.Sets/src/mage/cards/s/SoulswornSpirit.java index fbde9965605..145c1e407b8 100644 --- a/Mage.Sets/src/mage/cards/s/SoulswornSpirit.java +++ b/Mage.Sets/src/mage/cards/s/SoulswornSpirit.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -11,17 +9,17 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.StaticFilters; -import mage.target.common.TargetCreaturePermanent; +import mage.target.common.TargetOpponentsCreaturePermanent; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class SoulswornSpirit extends CardImpl { - + public SoulswornSpirit(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}"); this.subtype.add(SubType.SPIRIT); this.power = new MageInt(2); @@ -29,12 +27,11 @@ public final class SoulswornSpirit extends CardImpl { // Soulsworn Spirit can't be blocked. this.addAbility(new CantBeBlockedSourceAbility()); - + // When Soulsworn Spirit enters the battlefield, detain target creature an opponent controls. //(Until your next turn, that creature can't attack or block and its activated abilities can't be activated.) Ability ability = new EntersBattlefieldTriggeredAbility(new DetainTargetEffect()); - TargetCreaturePermanent target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); - ability.addTarget(target); + ability.addTarget(new TargetOpponentsCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SpearOfHeliod.java b/Mage.Sets/src/mage/cards/s/SpearOfHeliod.java index 9222b5f5eaa..85de10c7bbd 100644 --- a/Mage.Sets/src/mage/cards/s/SpearOfHeliod.java +++ b/Mage.Sets/src/mage/cards/s/SpearOfHeliod.java @@ -17,6 +17,7 @@ import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.other.DamagedPlayerThisTurnPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -44,7 +45,7 @@ public final class SpearOfHeliod extends CardImpl { // {1}{W}{W}, {T}: Destroy target creature that dealt damage to you this turn. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{1}{W}{W}")); ability.addCost(new TapSourceCost()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SpearbreakerBehemoth.java b/Mage.Sets/src/mage/cards/s/SpearbreakerBehemoth.java index 6c1c66b5f8d..ecbc1fc64d5 100644 --- a/Mage.Sets/src/mage/cards/s/SpearbreakerBehemoth.java +++ b/Mage.Sets/src/mage/cards/s/SpearbreakerBehemoth.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -43,7 +44,7 @@ public final class SpearbreakerBehemoth extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{1}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SpellweaverDuo.java b/Mage.Sets/src/mage/cards/s/SpellweaverDuo.java index 56d4e05bd79..8bb8dc88462 100644 --- a/Mage.Sets/src/mage/cards/s/SpellweaverDuo.java +++ b/Mage.Sets/src/mage/cards/s/SpellweaverDuo.java @@ -13,6 +13,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class SpellweaverDuo extends CardImpl { // When Spellweaver Duo enters the battlefield, you may return target tapped creature to its owner's hand. Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SpinalVillain.java b/Mage.Sets/src/mage/cards/s/SpinalVillain.java index 024d66d413c..939bbe18f1e 100644 --- a/Mage.Sets/src/mage/cards/s/SpinalVillain.java +++ b/Mage.Sets/src/mage/cards/s/SpinalVillain.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class SpinalVillain extends CardImpl { // {tap}: Destroy target blue creature. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SpinningDarkness.java b/Mage.Sets/src/mage/cards/s/SpinningDarkness.java index 5d69e872bc7..11fccebbb95 100644 --- a/Mage.Sets/src/mage/cards/s/SpinningDarkness.java +++ b/Mage.Sets/src/mage/cards/s/SpinningDarkness.java @@ -22,8 +22,11 @@ import mage.filter.StaticFilters; import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author emerald000 @@ -39,7 +42,7 @@ public final class SpinningDarkness extends CardImpl { // Spinning Darkness deals 3 damage to target nonblack creature. You gain 3 life. this.getSpellAbility().addEffect(new DamageTargetEffect(3)); this.getSpellAbility().addEffect(new GainLifeEffect(3)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); } private SpinningDarkness(final SpinningDarkness card) { diff --git a/Mage.Sets/src/mage/cards/s/SpiresOfOrazca.java b/Mage.Sets/src/mage/cards/s/SpiresOfOrazca.java index 09c1026c17e..2e8945aa7e9 100644 --- a/Mage.Sets/src/mage/cards/s/SpiresOfOrazca.java +++ b/Mage.Sets/src/mage/cards/s/SpiresOfOrazca.java @@ -16,6 +16,7 @@ import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -45,7 +46,7 @@ public final class SpiresOfOrazca extends CardImpl { effect = new RemoveFromCombatTargetEffect(); effect.setText(" "); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SpiritBonds.java b/Mage.Sets/src/mage/cards/s/SpiritBonds.java index d421a43a230..5bdf691fdc3 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritBonds.java +++ b/Mage.Sets/src/mage/cards/s/SpiritBonds.java @@ -20,6 +20,7 @@ import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.game.permanent.token.SpiritWhiteToken; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -49,7 +50,7 @@ public final class SpiritBonds extends CardImpl { Ability ability = new SimpleActivatedAbility( new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}")); ability.addCost(new SacrificeTargetCost(filterSpirit)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SpiritWeaver.java b/Mage.Sets/src/mage/cards/s/SpiritWeaver.java index 15767aca4b7..97f81729947 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritWeaver.java +++ b/Mage.Sets/src/mage/cards/s/SpiritWeaver.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class SpiritWeaver extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(0, 1, Duration.EndOfTurn), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SpiteMalice.java b/Mage.Sets/src/mage/cards/s/SpiteMalice.java index 27a4b2fc5fd..dd4cf56a26c 100644 --- a/Mage.Sets/src/mage/cards/s/SpiteMalice.java +++ b/Mage.Sets/src/mage/cards/s/SpiteMalice.java @@ -8,9 +8,12 @@ import mage.cards.SplitCard; import mage.constants.CardType; import mage.constants.SpellAbilityType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.TargetSpell; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author FenrisulfrX @@ -28,7 +31,7 @@ public final class SpiteMalice extends SplitCard { // Malice // Destroy target nonblack creature. It can't be regenerated. this.getRightHalfCard().getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getRightHalfCard().getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); } private SpiteMalice(final SpiteMalice card) { diff --git a/Mage.Sets/src/mage/cards/s/SporebackTroll.java b/Mage.Sets/src/mage/cards/s/SporebackTroll.java index d5ef05423f6..361679077be 100644 --- a/Mage.Sets/src/mage/cards/s/SporebackTroll.java +++ b/Mage.Sets/src/mage/cards/s/SporebackTroll.java @@ -14,8 +14,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_P1P1; + /** * * @author fireshoes @@ -34,7 +37,7 @@ public final class SporebackTroll extends CardImpl { // {1}{G}: Regenerate target creature with a +1/+1 counter on it. Ability ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new ManaCostsImpl<>("{1}{G}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_P1P1)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_P1P1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Sporogenesis.java b/Mage.Sets/src/mage/cards/s/Sporogenesis.java index 61960d3cf7c..29d093f1613 100644 --- a/Mage.Sets/src/mage/cards/s/Sporogenesis.java +++ b/Mage.Sets/src/mage/cards/s/Sporogenesis.java @@ -23,6 +23,7 @@ import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; import mage.game.permanent.token.SaprolingToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -44,7 +45,7 @@ public final class Sporogenesis extends CardImpl { // At the beginning of your upkeep, you may put a fungus counter on target nontoken creature. Ability ability = new BeginningOfUpkeepTriggeredAbility(new AddCountersTargetEffect(CounterType.FUNGUS.createInstance()), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Whenever a creature with a fungus counter on it dies, create a 1/1 green Saproling creature token for each fungus counter on that creature. diff --git a/Mage.Sets/src/mage/cards/s/StalkingAssassin.java b/Mage.Sets/src/mage/cards/s/StalkingAssassin.java index f0dfc6a5b67..506107506ec 100644 --- a/Mage.Sets/src/mage/cards/s/StalkingAssassin.java +++ b/Mage.Sets/src/mage/cards/s/StalkingAssassin.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -46,7 +47,7 @@ public final class StalkingAssassin extends CardImpl { // {3}{B}, {T}: Destroy target tapped creature. ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{3}{B}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/StarCrownedStag.java b/Mage.Sets/src/mage/cards/s/StarCrownedStag.java index ca39f3e5089..f83d6e64c96 100644 --- a/Mage.Sets/src/mage/cards/s/StarCrownedStag.java +++ b/Mage.Sets/src/mage/cards/s/StarCrownedStag.java @@ -12,6 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class StarCrownedStag extends CardImpl { // Whenever attacks, tap target creature defending player controls. Ability ability = new AttacksTriggeredAbility(new TapTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/StarDestroyer.java b/Mage.Sets/src/mage/cards/s/StarDestroyer.java index 053c255db34..f3a3ffc6a85 100644 --- a/Mage.Sets/src/mage/cards/s/StarDestroyer.java +++ b/Mage.Sets/src/mage/cards/s/StarDestroyer.java @@ -16,6 +16,7 @@ import mage.filter.common.FilterCreatureOrPlayer; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.game.permanent.token.TIEFighterToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetPermanentOrPlayer; @@ -45,7 +46,7 @@ public final class StarDestroyer extends CardImpl { // {2}{U}: Tap target artifact creature. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{2}{U}")); - ability.addTarget(new TargetCreaturePermanent(filter1)); + ability.addTarget(new TargetPermanent(filter1)); this.addAbility(ability); // {2}{B}: Create a 1/1 black Starship artifact creature token with spaceflight named TIE Fighter. diff --git a/Mage.Sets/src/mage/cards/s/StartFinish.java b/Mage.Sets/src/mage/cards/s/StartFinish.java index 1a80fefa46e..85ea7fd1390 100644 --- a/Mage.Sets/src/mage/cards/s/StartFinish.java +++ b/Mage.Sets/src/mage/cards/s/StartFinish.java @@ -14,6 +14,7 @@ import mage.constants.SpellAbilityType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.game.permanent.token.WarriorVigilantToken; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -37,7 +38,7 @@ public final class StartFinish extends SplitCard { // As an additional cost to cast Finish, sacrifice a creature. Destroy target creature. getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true)); getRightHalfCard().getSpellAbility().addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE)); - getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("creature (to destoy)"))); + getRightHalfCard().getSpellAbility().addTarget(new TargetPermanent(new FilterCreaturePermanent("creature (to destoy)"))); getRightHalfCard().getSpellAbility().addEffect(new DestroyTargetEffect("Destroy target creature")); } diff --git a/Mage.Sets/src/mage/cards/s/StealStrength.java b/Mage.Sets/src/mage/cards/s/StealStrength.java index 9597f4fbbf6..0797db89e1d 100644 --- a/Mage.Sets/src/mage/cards/s/StealStrength.java +++ b/Mage.Sets/src/mage/cards/s/StealStrength.java @@ -1,44 +1,29 @@ - package mage.cards.s; -import java.util.UUID; -import mage.abilities.Ability; -import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.AnotherTargetPredicate; -import mage.game.Game; -import mage.game.permanent.Permanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.SecondTargetPointer; + +import java.util.UUID; /** - * * @author fireshoes */ public final class StealStrength extends CardImpl { public StealStrength(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}"); // Target creature gets +1/+1 until end of turn. Another target creature gets -1/-1 until end of turn. - this.getSpellAbility().addEffect(new StealStrengthEffect()); - - FilterCreaturePermanent filter1 = new FilterCreaturePermanent("creature (gets +1/+1 until end of turn)"); - TargetCreaturePermanent target1 = new TargetCreaturePermanent(filter1); - target1.setTargetTag(1); - this.getSpellAbility().addTarget(target1); - - FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another creature (gets -1/-1 until end of turn)"); - filter2.add(new AnotherTargetPredicate(2)); - TargetCreaturePermanent target2 = new TargetCreaturePermanent(filter2); - target2.setTargetTag(2); - this.getSpellAbility().addTarget(target2); + this.getSpellAbility().addEffect(new BoostTargetEffect(1, 1)); + this.getSpellAbility().addEffect(new BoostTargetEffect(-1, -1).setTargetPointer(new SecondTargetPointer()).setText("Another target creature gets -1/-1 until end of turn")); + this.getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("+1/+1").setTargetTag(1)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).withChooseHint("-1/-1").setTargetTag(2)); } private StealStrength(final StealStrength card) { @@ -50,35 +35,3 @@ public final class StealStrength extends CardImpl { return new StealStrength(this); } } - -class StealStrengthEffect extends ContinuousEffectImpl { - - StealStrengthEffect() { - super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature); - this.staticText = "Target creature gets +1/+1 until end of turn. Another target creature gets -1/-1 until end of turn"; - } - - private StealStrengthEffect(final StealStrengthEffect effect) { - super(effect); - } - - @Override - public StealStrengthEffect copy() { - return new StealStrengthEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(source.getFirstTarget()); - if (permanent != null) { - permanent.addPower(1); - permanent.addToughness(1); - } - permanent = game.getPermanent(source.getTargets().get(1).getFirstTarget()); - if (permanent != null) { - permanent.addPower(-1); - permanent.addToughness(-1); - } - return true; - } -} diff --git a/Mage.Sets/src/mage/cards/s/SteamCatapult.java b/Mage.Sets/src/mage/cards/s/SteamCatapult.java index c21efba7349..e06801fbc1e 100644 --- a/Mage.Sets/src/mage/cards/s/SteamCatapult.java +++ b/Mage.Sets/src/mage/cards/s/SteamCatapult.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -38,7 +39,7 @@ public final class SteamCatapult extends CardImpl { Ability ability = new ActivateIfConditionActivatedAbility( new DestroyTargetEffect(), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SteppeGlider.java b/Mage.Sets/src/mage/cards/s/SteppeGlider.java index 5b01012e024..7b1bd660799 100644 --- a/Mage.Sets/src/mage/cards/s/SteppeGlider.java +++ b/Mage.Sets/src/mage/cards/s/SteppeGlider.java @@ -17,8 +17,11 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_A_CREATURE_P1P1; + /** * * @author fireshoes @@ -44,7 +47,7 @@ public final class SteppeGlider extends CardImpl { effect = new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn); effect.setText("and vigilance until end of turn"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_A_CREATURE_P1P1)); + ability.addTarget(new TargetPermanent(FILTER_A_CREATURE_P1P1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/StingerflingSpider.java b/Mage.Sets/src/mage/cards/s/StingerflingSpider.java index b0b3c981717..2e38bd05cba 100644 --- a/Mage.Sets/src/mage/cards/s/StingerflingSpider.java +++ b/Mage.Sets/src/mage/cards/s/StingerflingSpider.java @@ -15,6 +15,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class StingerflingSpider extends CardImpl { this.toughness = new MageInt(5); this.addAbility(ReachAbility.getInstance()); Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/StingingShot.java b/Mage.Sets/src/mage/cards/s/StingingShot.java index 138a2d01de1..b3fb6f6d770 100644 --- a/Mage.Sets/src/mage/cards/s/StingingShot.java +++ b/Mage.Sets/src/mage/cards/s/StingingShot.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -30,7 +31,7 @@ public final class StingingShot extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}"); // Put three -1/-1 counters on target creature with flying. - getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + getSpellAbility().addTarget(new TargetPermanent(filter)); getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.M1M1.createInstance(3))); // Cycling {2} diff --git a/Mage.Sets/src/mage/cards/s/Stingscourger.java b/Mage.Sets/src/mage/cards/s/Stingscourger.java index ed9b214ad50..f9cefbe112d 100644 --- a/Mage.Sets/src/mage/cards/s/Stingscourger.java +++ b/Mage.Sets/src/mage/cards/s/Stingscourger.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -11,17 +9,17 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.StaticFilters; -import mage.target.common.TargetCreaturePermanent; +import mage.target.common.TargetOpponentsCreaturePermanent; + +import java.util.UUID; /** - * * @author jonubuu */ public final class Stingscourger extends CardImpl { public Stingscourger(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); this.subtype.add(SubType.GOBLIN); this.subtype.add(SubType.WARRIOR); @@ -30,10 +28,10 @@ public final class Stingscourger extends CardImpl { // Echo {3}{R} this.addAbility(new EchoAbility("{3}{R}")); + // When Stingscourger enters the battlefield, return target creature an opponent controls to its owner's hand. Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect()); - TargetCreaturePermanent target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); - ability.addTarget(target); + ability.addTarget(new TargetOpponentsCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/StitchedMangler.java b/Mage.Sets/src/mage/cards/s/StitchedMangler.java index 0487d1754ee..4d6a9a94b1d 100644 --- a/Mage.Sets/src/mage/cards/s/StitchedMangler.java +++ b/Mage.Sets/src/mage/cards/s/StitchedMangler.java @@ -13,8 +13,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -36,7 +39,7 @@ public final class StitchedMangler extends CardImpl { Effect effect = new DontUntapInControllersNextUntapStepTargetEffect(); effect.setText("That creature doesn't untap during its controller's next untap step"); ability.addEffect(effect); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/StormElemental.java b/Mage.Sets/src/mage/cards/s/StormElemental.java index 41673d298e1..3f793bcb1d8 100644 --- a/Mage.Sets/src/mage/cards/s/StormElemental.java +++ b/Mage.Sets/src/mage/cards/s/StormElemental.java @@ -19,6 +19,7 @@ import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -46,7 +47,7 @@ public final class StormElemental extends CardImpl { // {U}, Exile the top card of your library: Tap target creature with flying. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{U}")); ability.addCost(new ExileTopCardLibraryCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // {U}, Exile the top card of your library: If the exiled card is a snow land, Storm Elemental gets +1/+1 until end of turn. diff --git a/Mage.Sets/src/mage/cards/s/StormFront.java b/Mage.Sets/src/mage/cards/s/StormFront.java index c5eebd53499..6ab00a62498 100644 --- a/Mage.Sets/src/mage/cards/s/StormFront.java +++ b/Mage.Sets/src/mage/cards/s/StormFront.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class StormFront extends CardImpl { // {G}{G}: Tap target creature with flying. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{G}{G}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Strafe.java b/Mage.Sets/src/mage/cards/s/Strafe.java index bb69167d509..4fdf5bd5df1 100644 --- a/Mage.Sets/src/mage/cards/s/Strafe.java +++ b/Mage.Sets/src/mage/cards/s/Strafe.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -30,7 +31,7 @@ public final class Strafe extends CardImpl { // Strafe deals 3 damage to target nonred creature. this.getSpellAbility().addEffect(new DamageTargetEffect(3)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Strafe(final Strafe card) { diff --git a/Mage.Sets/src/mage/cards/s/StranglingSoot.java b/Mage.Sets/src/mage/cards/s/StranglingSoot.java index e720e91b118..fe1f37ca4b5 100644 --- a/Mage.Sets/src/mage/cards/s/StranglingSoot.java +++ b/Mage.Sets/src/mage/cards/s/StranglingSoot.java @@ -12,6 +12,7 @@ import mage.constants.ComparisonType; import mage.constants.TimingRule; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class StranglingSoot extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}"); // Destroy target creature with toughness 3 or less. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); // Flashback {5}{R} this.addAbility(new FlashbackAbility(this, new ManaCostsImpl<>("{5}{R}"))); diff --git a/Mage.Sets/src/mage/cards/s/StreambedAquitects.java b/Mage.Sets/src/mage/cards/s/StreambedAquitects.java index 32ba35910ea..e1f85fcb534 100644 --- a/Mage.Sets/src/mage/cards/s/StreambedAquitects.java +++ b/Mage.Sets/src/mage/cards/s/StreambedAquitects.java @@ -14,6 +14,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetLandPermanent; @@ -41,7 +42,7 @@ public final class StreambedAquitects extends CardImpl { ability.addEffect(new GainAbilityTargetEffect( new IslandwalkAbility(false), Duration.EndOfTurn ).setText("and gains islandwalk until end of turn")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // {tap}: Target land becomes an Island until end of turn. diff --git a/Mage.Sets/src/mage/cards/s/StreetSpasm.java b/Mage.Sets/src/mage/cards/s/StreetSpasm.java index 4492e3de0d0..d43add838ba 100644 --- a/Mage.Sets/src/mage/cards/s/StreetSpasm.java +++ b/Mage.Sets/src/mage/cards/s/StreetSpasm.java @@ -15,6 +15,7 @@ import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -35,7 +36,7 @@ public final class StreetSpasm extends CardImpl { // Street Spasm deals X damage to target creature without flying you don't control. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DamageTargetEffect(GetXValue.instance)); // Overload {X}{X}{R}{R} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") @@ -50,4 +51,4 @@ public final class StreetSpasm extends CardImpl { public StreetSpasm copy() { return new StreetSpasm(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/s/StrongholdAssassin.java b/Mage.Sets/src/mage/cards/s/StrongholdAssassin.java index cfa0017f30c..64db08a91e8 100644 --- a/Mage.Sets/src/mage/cards/s/StrongholdAssassin.java +++ b/Mage.Sets/src/mage/cards/s/StrongholdAssassin.java @@ -14,9 +14,12 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author LevelX2 @@ -35,7 +38,7 @@ public final class StrongholdAssassin extends CardImpl { // {tap}, Sacrifice a creature: Destroy target nonblack creature. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new TapSourceCost()); ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE)); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK); + Target target = new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SubterraneanScout.java b/Mage.Sets/src/mage/cards/s/SubterraneanScout.java index 6e9650ec68c..f714f5c1bec 100644 --- a/Mage.Sets/src/mage/cards/s/SubterraneanScout.java +++ b/Mage.Sets/src/mage/cards/s/SubterraneanScout.java @@ -13,6 +13,7 @@ import mage.constants.SubType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class SubterraneanScout extends CardImpl { // When Subterranean Scout enters the battlefield, target creature with power 2 or less can't be blocked this turn. Ability ability = new EntersBattlefieldTriggeredAbility(new CantBeBlockedTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SultaiCharm.java b/Mage.Sets/src/mage/cards/s/SultaiCharm.java index e3857574757..380c7c8377e 100644 --- a/Mage.Sets/src/mage/cards/s/SultaiCharm.java +++ b/Mage.Sets/src/mage/cards/s/SultaiCharm.java @@ -33,7 +33,7 @@ public final class SultaiCharm extends CardImpl { // Choose one - // * Destroy target monocolored creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); // * Destroy target artifact or enchantment. diff --git a/Mage.Sets/src/mage/cards/s/Sunlance.java b/Mage.Sets/src/mage/cards/s/Sunlance.java index 59f69241c1f..29a371bb8a8 100644 --- a/Mage.Sets/src/mage/cards/s/Sunlance.java +++ b/Mage.Sets/src/mage/cards/s/Sunlance.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -30,7 +31,7 @@ public final class Sunlance extends CardImpl { // Sunlance deals 3 damage to target nonwhite creature. this.getSpellAbility().addEffect(new DamageTargetEffect(3)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Sunlance(final Sunlance card) { diff --git a/Mage.Sets/src/mage/cards/s/SunstrikeLegionnaire.java b/Mage.Sets/src/mage/cards/s/SunstrikeLegionnaire.java index 007dad01b53..b076bf3dc5a 100644 --- a/Mage.Sets/src/mage/cards/s/SunstrikeLegionnaire.java +++ b/Mage.Sets/src/mage/cards/s/SunstrikeLegionnaire.java @@ -20,6 +20,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -49,7 +50,7 @@ public final class SunstrikeLegionnaire extends CardImpl { this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), untapFilter, false)); // {tap}: Tap target creature with converted mana cost 3 or less. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(tapFilter)); + ability.addTarget(new TargetPermanent(tapFilter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SupremeLeaderSnoke.java b/Mage.Sets/src/mage/cards/s/SupremeLeaderSnoke.java index a827ad49a06..c58a477800a 100644 --- a/Mage.Sets/src/mage/cards/s/SupremeLeaderSnoke.java +++ b/Mage.Sets/src/mage/cards/s/SupremeLeaderSnoke.java @@ -23,6 +23,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetadjustment.XManaValueTargetAdjuster; import mage.watchers.Watcher; @@ -31,6 +32,8 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE; + /** * @author NinthWorld */ @@ -59,7 +62,7 @@ public final class SupremeLeaderSnoke extends CardImpl { ability3.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield).setText("It gains haste")); ability3.addEffect(new GainAbilityTargetEffect(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new SacrificeSourceEffect()), Duration.WhileOnBattlefield) .setText("Sacrifice that creature at the beginning of the next end step")); - ability3.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE)); + ability3.addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE)); ability3.setTargetAdjuster(new XManaValueTargetAdjuster()); this.addAbility(ability3); } diff --git a/Mage.Sets/src/mage/cards/s/SurgeOfRighteousness.java b/Mage.Sets/src/mage/cards/s/SurgeOfRighteousness.java index b5e8abf1f44..d6d9f80a58b 100644 --- a/Mage.Sets/src/mage/cards/s/SurgeOfRighteousness.java +++ b/Mage.Sets/src/mage/cards/s/SurgeOfRighteousness.java @@ -12,6 +12,7 @@ import mage.filter.common.FilterAttackingOrBlockingCreature; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class SurgeOfRighteousness extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); // Destroy target black or red creature that's attacking or blocking. You gain 2 life. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new GainLifeEffect(2)); } diff --git a/Mage.Sets/src/mage/cards/s/SurrakarBanisher.java b/Mage.Sets/src/mage/cards/s/SurrakarBanisher.java index 0b049c9f53e..b4d473462b8 100644 --- a/Mage.Sets/src/mage/cards/s/SurrakarBanisher.java +++ b/Mage.Sets/src/mage/cards/s/SurrakarBanisher.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class SurrakarBanisher extends CardImpl { this.toughness = new MageInt(3); Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Swarmyard.java b/Mage.Sets/src/mage/cards/s/Swarmyard.java index b1833ba27e9..575fba873aa 100644 --- a/Mage.Sets/src/mage/cards/s/Swarmyard.java +++ b/Mage.Sets/src/mage/cards/s/Swarmyard.java @@ -14,6 +14,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class Swarmyard extends CardImpl { // {tap}: Regenerate target Insect, Rat, Spider, or Squirrel. Ability ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Swat.java b/Mage.Sets/src/mage/cards/s/Swat.java index 336201fd61b..f7d35aed9d9 100644 --- a/Mage.Sets/src/mage/cards/s/Swat.java +++ b/Mage.Sets/src/mage/cards/s/Swat.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -31,7 +32,7 @@ public final class Swat extends CardImpl { // Destroy target creature with power 2 or less. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // Cycling {2} this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}"))); } diff --git a/Mage.Sets/src/mage/cards/s/SwiftKick.java b/Mage.Sets/src/mage/cards/s/SwiftKick.java index d1f50d8462d..9f49a28e41f 100644 --- a/Mage.Sets/src/mage/cards/s/SwiftKick.java +++ b/Mage.Sets/src/mage/cards/s/SwiftKick.java @@ -8,11 +8,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -29,7 +32,7 @@ public final class SwiftKick extends CardImpl { effect = new FightTargetsEffect(); effect.setText("It fights target creature you don't control"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private SwiftKick(final SwiftKick card) { diff --git a/Mage.Sets/src/mage/cards/s/SwiftReckoning.java b/Mage.Sets/src/mage/cards/s/SwiftReckoning.java index 58980f6a871..649fd935d54 100644 --- a/Mage.Sets/src/mage/cards/s/SwiftReckoning.java +++ b/Mage.Sets/src/mage/cards/s/SwiftReckoning.java @@ -13,6 +13,7 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -42,7 +43,7 @@ public final class SwiftReckoning extends CardImpl { // Destroy target tapped creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private SwiftReckoning(final SwiftReckoning card) { diff --git a/Mage.Sets/src/mage/cards/s/Switcheroo.java b/Mage.Sets/src/mage/cards/s/Switcheroo.java index 40bb2a065db..32dda7fe957 100644 --- a/Mage.Sets/src/mage/cards/s/Switcheroo.java +++ b/Mage.Sets/src/mage/cards/s/Switcheroo.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.effects.common.continuous.ExchangeControlTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -9,19 +7,20 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * @author noxx */ public final class Switcheroo extends CardImpl { - private static final String rule = "Exchange control of two target creatures"; - public Switcheroo(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{U}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}"); // Exchange control of two target creatures. - this.getSpellAbility().addEffect(new ExchangeControlTargetEffect(Duration.EndOfGame, rule)); + this.getSpellAbility().addEffect(new ExchangeControlTargetEffect( + Duration.EndOfGame, "exchange control of two target creatures" + )); this.getSpellAbility().addTarget(new TargetCreaturePermanent(2)); } diff --git a/Mage.Sets/src/mage/cards/s/SwoopingPteranodon.java b/Mage.Sets/src/mage/cards/s/SwoopingPteranodon.java index 488c2e5c6bd..0c6b47e941d 100644 --- a/Mage.Sets/src/mage/cards/s/SwoopingPteranodon.java +++ b/Mage.Sets/src/mage/cards/s/SwoopingPteranodon.java @@ -26,6 +26,8 @@ import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author jimga150 @@ -62,7 +64,7 @@ public final class SwoopingPteranodon extends CardImpl { ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("and haste until end of turn.")); ability.addEffect(new SwoopingPteranodonCreateDelayedTriggerEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SwordOfTheChosen.java b/Mage.Sets/src/mage/cards/s/SwordOfTheChosen.java index cdb30c613c3..6ae5cf22d2d 100644 --- a/Mage.Sets/src/mage/cards/s/SwordOfTheChosen.java +++ b/Mage.Sets/src/mage/cards/s/SwordOfTheChosen.java @@ -13,6 +13,7 @@ import mage.constants.Duration; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -33,7 +34,7 @@ public final class SwordOfTheChosen extends CardImpl { // {tap}: Target legendary creature gets +2/+2 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Symbiosis.java b/Mage.Sets/src/mage/cards/s/Symbiosis.java index 00bbedc8898..0cd976e38b7 100644 --- a/Mage.Sets/src/mage/cards/s/Symbiosis.java +++ b/Mage.Sets/src/mage/cards/s/Symbiosis.java @@ -1,27 +1,24 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Duration; import mage.target.common.TargetCreaturePermanent; -/** - * - * @author LoneFox +import java.util.UUID; +/** + * @author LoneFox */ public final class Symbiosis extends CardImpl { public Symbiosis(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}"); // Two target creatures each get +2/+2 until end of turn. + this.getSpellAbility().addEffect(new BoostTargetEffect(2, 2)); this.getSpellAbility().addTarget(new TargetCreaturePermanent(2)); - this.getSpellAbility().addEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn)); } private Symbiosis(final Symbiosis card) { diff --git a/Mage.Sets/src/mage/cards/t/TacticalAdvantage.java b/Mage.Sets/src/mage/cards/t/TacticalAdvantage.java index e63e6f0ea8e..412a4381318 100644 --- a/Mage.Sets/src/mage/cards/t/TacticalAdvantage.java +++ b/Mage.Sets/src/mage/cards/t/TacticalAdvantage.java @@ -10,6 +10,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.BlockedPredicate; import mage.filter.predicate.permanent.BlockingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -36,7 +37,7 @@ public final class TacticalAdvantage extends CardImpl { // Target blocking or blocked creature you control gets +2/+2 until end of turn. this.getSpellAbility().addEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private TacticalAdvantage(final TacticalAdvantage card) { diff --git a/Mage.Sets/src/mage/cards/t/TailSlash.java b/Mage.Sets/src/mage/cards/t/TailSlash.java index bc5f9619427..ad50c57fbbd 100644 --- a/Mage.Sets/src/mage/cards/t/TailSlash.java +++ b/Mage.Sets/src/mage/cards/t/TailSlash.java @@ -5,11 +5,14 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -21,7 +24,7 @@ public final class TailSlash extends CardImpl { // Target creature you control deals damage equal to its power to target creature you don't control. this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private TailSlash(final TailSlash card) { diff --git a/Mage.Sets/src/mage/cards/t/TajuruArcher.java b/Mage.Sets/src/mage/cards/t/TajuruArcher.java index ac1d5cffa70..18fc688065e 100644 --- a/Mage.Sets/src/mage/cards/t/TajuruArcher.java +++ b/Mage.Sets/src/mage/cards/t/TajuruArcher.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class TajuruArcher extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(2); Ability ability = new AllyEntersBattlefieldTriggeredAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter)), true); - ability.addTarget(new TargetCreaturePermanent(filterTarget)); + ability.addTarget(new TargetPermanent(filterTarget)); this.addAbility(ability.setAbilityWord(null)); } diff --git a/Mage.Sets/src/mage/cards/t/TakeDown.java b/Mage.Sets/src/mage/cards/t/TakeDown.java index 7cf0576ccc9..14989740706 100644 --- a/Mage.Sets/src/mage/cards/t/TakeDown.java +++ b/Mage.Sets/src/mage/cards/t/TakeDown.java @@ -11,6 +11,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -31,7 +32,7 @@ public final class TakeDown extends CardImpl { // Choose one — // • Take Down deals 4 damage to target creature with flying. this.getSpellAbility().addEffect(new DamageTargetEffect(4)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); // • Take Down deals 1 damage to each creature with flying Mode mode = new Mode(new DamageAllEffect(1, filter)); diff --git a/Mage.Sets/src/mage/cards/t/TakeIntoCustody.java b/Mage.Sets/src/mage/cards/t/TakeIntoCustody.java index f0fa97252a3..daf8fa68f64 100644 --- a/Mage.Sets/src/mage/cards/t/TakeIntoCustody.java +++ b/Mage.Sets/src/mage/cards/t/TakeIntoCustody.java @@ -1,7 +1,5 @@ - package mage.cards.t; -import java.util.UUID; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect; import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; @@ -9,8 +7,9 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author fireshoes */ public final class TakeIntoCustody extends CardImpl { @@ -20,8 +19,8 @@ public final class TakeIntoCustody extends CardImpl { // Tap target creature. It doesn't untap during its controller's next untap step. this.getSpellAbility().addEffect(new TapTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(1)); this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect("It")); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } private TakeIntoCustody(final TakeIntoCustody card) { diff --git a/Mage.Sets/src/mage/cards/t/TakeVengeance.java b/Mage.Sets/src/mage/cards/t/TakeVengeance.java index 53eb232659f..253cd29bb61 100644 --- a/Mage.Sets/src/mage/cards/t/TakeVengeance.java +++ b/Mage.Sets/src/mage/cards/t/TakeVengeance.java @@ -7,6 +7,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -26,7 +27,7 @@ public final class TakeVengeance extends CardImpl { // Destroy target tapped creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private TakeVengeance(final TakeVengeance card) { diff --git a/Mage.Sets/src/mage/cards/t/Takklemaggot.java b/Mage.Sets/src/mage/cards/t/Takklemaggot.java index d67eb63a0bd..45ccdda4756 100644 --- a/Mage.Sets/src/mage/cards/t/Takklemaggot.java +++ b/Mage.Sets/src/mage/cards/t/Takklemaggot.java @@ -101,7 +101,7 @@ class TakklemaggotEffect extends OneShotEffect { } FilterCreaturePermanent filter = new FilterCreaturePermanent(); filter.add(new CanBeEnchantedByPredicate(auraCard)); - Target target = new TargetCreaturePermanent(filter).withNotTarget(true); + Target target = new TargetPermanent(filter).withNotTarget(true); if (!game.getBattlefield().getActivePermanents(filter, player.getId(), source, game).isEmpty() && player.choose(outcome, target, source, game)) { // return attached to that creature diff --git a/Mage.Sets/src/mage/cards/t/TawnossWand.java b/Mage.Sets/src/mage/cards/t/TawnossWand.java index 34c1271b4e8..b209debabcf 100644 --- a/Mage.Sets/src/mage/cards/t/TawnossWand.java +++ b/Mage.Sets/src/mage/cards/t/TawnossWand.java @@ -14,6 +14,7 @@ import mage.constants.ComparisonType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class TawnossWand extends CardImpl { // {2}, {tap}: Target creature with power 2 or less is unblockable this turn. Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(), new TapSourceCost()); ability.addCost(new ManaCostsImpl<>("{2}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TearsOfValakut.java b/Mage.Sets/src/mage/cards/t/TearsOfValakut.java index 7fb39717873..5eeb74dc09a 100644 --- a/Mage.Sets/src/mage/cards/t/TearsOfValakut.java +++ b/Mage.Sets/src/mage/cards/t/TearsOfValakut.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class TearsOfValakut extends CardImpl { // Tears of Valakut deals 5 damage to target creature with flying. this.getSpellAbility().addEffect(new DamageTargetEffect(5)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private TearsOfValakut(final TearsOfValakut card) { diff --git a/Mage.Sets/src/mage/cards/t/TeganJovanka.java b/Mage.Sets/src/mage/cards/t/TeganJovanka.java index 0ea46909739..760b4a9ff55 100644 --- a/Mage.Sets/src/mage/cards/t/TeganJovanka.java +++ b/Mage.Sets/src/mage/cards/t/TeganJovanka.java @@ -15,6 +15,7 @@ import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.HistoricPredicate; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -45,7 +46,7 @@ public final class TeganJovanka extends CardImpl { .setText("target attacking historic creature gets +1/+1"), 1 ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance()) .setText("and gains indestructible until end of turn")); this.addAbility(ability.withFlavorWord("Brave Heart")); diff --git a/Mage.Sets/src/mage/cards/t/TemurCharm.java b/Mage.Sets/src/mage/cards/t/TemurCharm.java index bc5ccdaf423..37dd4b3203f 100644 --- a/Mage.Sets/src/mage/cards/t/TemurCharm.java +++ b/Mage.Sets/src/mage/cards/t/TemurCharm.java @@ -16,12 +16,15 @@ import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.TargetSpell; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -44,7 +47,7 @@ public final class TemurCharm extends CardImpl { effect.setText("It fights target creature you don't control"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL); + Target target = new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL); this.getSpellAbility().addTarget(target); // Counter target spell unless its controller pays {3}. diff --git a/Mage.Sets/src/mage/cards/t/TemurWarShaman.java b/Mage.Sets/src/mage/cards/t/TemurWarShaman.java index 15f0ea0907c..0b9ded054cb 100644 --- a/Mage.Sets/src/mage/cards/t/TemurWarShaman.java +++ b/Mage.Sets/src/mage/cards/t/TemurWarShaman.java @@ -16,10 +16,13 @@ import mage.filter.StaticFilters; import mage.filter.common.FilterControlledCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author LevelX2 */ @@ -37,7 +40,7 @@ public final class TemurWarShaman extends CardImpl { // Whenever a permanent you control is turned face up, if it is a creature, you may have it fight target creature you don't control. Ability ability = new TemurWarShamanTriggeredAbility(); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TerritorialHammerskull.java b/Mage.Sets/src/mage/cards/t/TerritorialHammerskull.java index f03aa39f640..faabc50cb81 100644 --- a/Mage.Sets/src/mage/cards/t/TerritorialHammerskull.java +++ b/Mage.Sets/src/mage/cards/t/TerritorialHammerskull.java @@ -11,8 +11,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author TheElk801 @@ -28,7 +31,7 @@ public final class TerritorialHammerskull extends CardImpl { // Whenever Territorial Hammerskull attacks, tap target creature an opponent controls. Ability ability = new AttacksTriggeredAbility(new TapTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/Terror.java b/Mage.Sets/src/mage/cards/t/Terror.java index ff4dfbb1d25..50616805905 100644 --- a/Mage.Sets/src/mage/cards/t/Terror.java +++ b/Mage.Sets/src/mage/cards/t/Terror.java @@ -10,6 +10,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class Terror extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}"); // Destroy target nonartifact, nonblack creature. It can't be regenerated. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(FILTER)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER)); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); } diff --git a/Mage.Sets/src/mage/cards/t/TetsuoUmezawa.java b/Mage.Sets/src/mage/cards/t/TetsuoUmezawa.java index 9442bcb7522..b4f9f1b816e 100644 --- a/Mage.Sets/src/mage/cards/t/TetsuoUmezawa.java +++ b/Mage.Sets/src/mage/cards/t/TetsuoUmezawa.java @@ -20,6 +20,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.game.stack.StackObject; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -51,7 +52,7 @@ public final class TetsuoUmezawa extends CardImpl { // {U}{B}{B}{R}, {tap}: Destroy target tapped or blocking creature. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{U}{B}{B}{R}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(creatureFilter)); + ability.addTarget(new TargetPermanent(creatureFilter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TheAbyss.java b/Mage.Sets/src/mage/cards/t/TheAbyss.java index 6dd1e11a16b..ce9607c3d2c 100644 --- a/Mage.Sets/src/mage/cards/t/TheAbyss.java +++ b/Mage.Sets/src/mage/cards/t/TheAbyss.java @@ -16,6 +16,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.players.Player; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -69,7 +70,7 @@ class TheAbyssTriggeredAbility extends TriggeredAbilityImpl { FilterCreaturePermanent filter = new FilterCreaturePermanent("nonartifact creature you control"); filter.add(Predicates.not(CardType.ARTIFACT.getPredicate())); filter.add(new ControllerIdPredicate(player.getId())); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); target.setAbilityController(getControllerId()); target.setTargetController(player.getId()); this.getTargets().clear(); diff --git a/Mage.Sets/src/mage/cards/t/TheCurseOfFenric.java b/Mage.Sets/src/mage/cards/t/TheCurseOfFenric.java index e17de685187..8164333043e 100644 --- a/Mage.Sets/src/mage/cards/t/TheCurseOfFenric.java +++ b/Mage.Sets/src/mage/cards/t/TheCurseOfFenric.java @@ -30,6 +30,9 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +import static mage.constants.Duration.EndOfGame; +import static mage.constants.SagaChapter.CHAPTER_II; + /** * @author padfoothelix */ @@ -72,12 +75,12 @@ public final class TheCurseOfFenric extends CardImpl { // II -- Target nontoken creature becomes a 6/6 legendary Horror creature named Fenric and loses all abilities. sagaAbility.addChapterEffect( - this, SagaChapter.CHAPTER_II, + this, CHAPTER_II, new BecomesCreatureTargetEffect( new TheCurseOfFenricHorrorToken(), - true, false, Duration.EndOfGame, true + true, false, EndOfGame, true ), - new TargetCreaturePermanent(nontokenFilter) + new TargetPermanent(nontokenFilter) ); // III -- Target Mutant fights another target creature named Fenric. @@ -88,7 +91,7 @@ public final class TheCurseOfFenric extends CardImpl { "Target Mutant fights another target creature named Fenric" )); ability.addTarget(new TargetPermanent(mutantFilter).setTargetTag(1)); - ability.addTarget(new TargetCreaturePermanent(fenricFilter).setTargetTag(2)); + ability.addTarget(new TargetPermanent(fenricFilter).setTargetTag(2)); } ); diff --git a/Mage.Sets/src/mage/cards/t/TheRani.java b/Mage.Sets/src/mage/cards/t/TheRani.java index ee7a0524a4d..0b8a8845d3f 100644 --- a/Mage.Sets/src/mage/cards/t/TheRani.java +++ b/Mage.Sets/src/mage/cards/t/TheRani.java @@ -14,10 +14,13 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.GoadedPredicate; import mage.game.Game; import mage.game.permanent.token.MarkOfTheRaniToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_CREATURE; + /** * * @author grimreap124 @@ -42,7 +45,7 @@ public final class TheRani extends CardImpl { // Whenever The Rani enters the battlefield or attacks, create a red Aura enchantment token named Mark of the Rani attached to another target creature. That token has enchant creature and "Enchanted creature gets +2/+2 and is goaded." Ability ability = new EntersBattlefieldOrAttacksSourceTriggeredAbility( new TheRaniEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_CREATURE)); this.addAbility(ability); // Whenever a goaded creature deals combat damage to one of your opponents, investigate. diff --git a/Mage.Sets/src/mage/cards/t/TheRevelationsOfEzio.java b/Mage.Sets/src/mage/cards/t/TheRevelationsOfEzio.java index cc52367e98d..8be85eeb84c 100644 --- a/Mage.Sets/src/mage/cards/t/TheRevelationsOfEzio.java +++ b/Mage.Sets/src/mage/cards/t/TheRevelationsOfEzio.java @@ -21,6 +21,7 @@ import mage.filter.predicate.permanent.TappedPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; @@ -52,7 +53,7 @@ public final class TheRevelationsOfEzio extends CardImpl { this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_I, ability -> { ability.addEffect(new DestroyTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); } ); // II -- Whenever an Assassin you control attacks this turn, put a +1/+1 counter on it. diff --git a/Mage.Sets/src/mage/cards/t/TheScorpionGod.java b/Mage.Sets/src/mage/cards/t/TheScorpionGod.java index 8a03884f9e0..67ecd405fac 100644 --- a/Mage.Sets/src/mage/cards/t/TheScorpionGod.java +++ b/Mage.Sets/src/mage/cards/t/TheScorpionGod.java @@ -29,9 +29,12 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author spjspj @@ -51,7 +54,7 @@ public final class TheScorpionGod extends CardImpl { // {1}{B}{R}: Put a -1/-1 counter on another target creature. Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.M1M1.createInstance()), new ManaCostsImpl<>("{1}{B}{R}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); // When The Scorpion God dies, return it to its owner's hand at the beginning of the next end step. diff --git a/Mage.Sets/src/mage/cards/t/TheSeaDevils.java b/Mage.Sets/src/mage/cards/t/TheSeaDevils.java index 09a21f3471d..213074a76eb 100644 --- a/Mage.Sets/src/mage/cards/t/TheSeaDevils.java +++ b/Mage.Sets/src/mage/cards/t/TheSeaDevils.java @@ -21,6 +21,7 @@ import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.game.permanent.token.AlienSalamanderToken; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; import mage.util.GameLog; @@ -106,7 +107,7 @@ class TheSeaDevilsTrigger extends DelayedTriggeredAbility { this.getTargets().clear(); FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("creature " + player.getName() + " controls"); filterTarget.add(new ControllerIdPredicate(player.getId())); - this.addTarget(new TargetCreaturePermanent(filterTarget)); + this.addTarget(new TargetPermanent(filterTarget)); int amount = event.getAmount(); @@ -175,4 +176,4 @@ class TheSeaDevilsEffect extends OneShotEffect { target.damage(amount, salamander.getId(), source, game); return true; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/t/TheSeedcore.java b/Mage.Sets/src/mage/cards/t/TheSeedcore.java index 4ef25b3b429..de8b134f54c 100644 --- a/Mage.Sets/src/mage/cards/t/TheSeedcore.java +++ b/Mage.Sets/src/mage/cards/t/TheSeedcore.java @@ -20,6 +20,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.ToughnessPredicate; import mage.game.Game; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -52,7 +53,7 @@ public final class TheSeedcore extends CardImpl { new BoostTargetEffect(2, 1, Duration.EndOfTurn), new TapSourceCost(), CorruptedCondition.instance ).setAbilityWord(AbilityWord.CORRUPTED).addHint(CorruptedCondition.getHint()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TheTricksterGodsHeist.java b/Mage.Sets/src/mage/cards/t/TheTricksterGodsHeist.java index 6edf1d308f4..a4eb35e9231 100644 --- a/Mage.Sets/src/mage/cards/t/TheTricksterGodsHeist.java +++ b/Mage.Sets/src/mage/cards/t/TheTricksterGodsHeist.java @@ -22,6 +22,9 @@ import java.util.HashSet; import java.util.Set; import java.util.UUID; +import static mage.constants.Duration.EndOfGame; +import static mage.constants.SagaChapter.CHAPTER_I; + /** * @author TheElk801 */ @@ -37,9 +40,9 @@ public final class TheTricksterGodsHeist extends CardImpl { // I — You may exchange control of two target creatures. sagaAbility.addChapterEffect( - this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_I, + this, CHAPTER_I, CHAPTER_I, new ExchangeControlTargetEffect( - Duration.EndOfGame, "exchange control of two target creatures" + EndOfGame, "exchange control of two target creatures" ), new TargetCreaturePermanent(2), true ); diff --git a/Mage.Sets/src/mage/cards/t/ThreadsOfDisloyalty.java b/Mage.Sets/src/mage/cards/t/ThreadsOfDisloyalty.java index ce924743d93..c4e82d6e750 100644 --- a/Mage.Sets/src/mage/cards/t/ThreadsOfDisloyalty.java +++ b/Mage.Sets/src/mage/cards/t/ThreadsOfDisloyalty.java @@ -38,7 +38,7 @@ public final class ThreadsOfDisloyalty extends CardImpl { this.subtype.add(SubType.AURA); // Enchant creature with converted mana cost 2 or less - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.GainControl)); Ability ability = new EnchantAbility(auraTarget); diff --git a/Mage.Sets/src/mage/cards/t/ThrowFromTheSaddle.java b/Mage.Sets/src/mage/cards/t/ThrowFromTheSaddle.java index e010cdcca59..c0de0f4535c 100644 --- a/Mage.Sets/src/mage/cards/t/ThrowFromTheSaddle.java +++ b/Mage.Sets/src/mage/cards/t/ThrowFromTheSaddle.java @@ -13,12 +13,15 @@ import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author Susucr */ @@ -29,7 +32,7 @@ public final class ThrowFromTheSaddle extends CardImpl { // Target creature you control gets +1/+1 until end of turn. Put a +1/+1 counter on it instead if it's a Mount. Then it deals damage equal to its power to target creature you don't control. this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().addEffect(new ThrowFromTheSaddleEffect()); this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect("it").concatBy("Then")); } diff --git a/Mage.Sets/src/mage/cards/t/Thunderbolt.java b/Mage.Sets/src/mage/cards/t/Thunderbolt.java index 3f82a044ce4..453a29b60c2 100644 --- a/Mage.Sets/src/mage/cards/t/Thunderbolt.java +++ b/Mage.Sets/src/mage/cards/t/Thunderbolt.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetPlayerOrPlaneswalker; @@ -32,7 +33,7 @@ public final class Thunderbolt extends CardImpl { this.getSpellAbility().addEffect(new DamageTargetEffect(3)); this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker()); Mode mode = new Mode(new DamageTargetEffect(4)); - mode.addTarget(new TargetCreaturePermanent(filter)); + mode.addTarget(new TargetPermanent(filter)); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/t/TidebinderMage.java b/Mage.Sets/src/mage/cards/t/TidebinderMage.java index ebf8ae0c759..6741c857be3 100644 --- a/Mage.Sets/src/mage/cards/t/TidebinderMage.java +++ b/Mage.Sets/src/mage/cards/t/TidebinderMage.java @@ -16,6 +16,7 @@ import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -48,7 +49,7 @@ public final class TidebinderMage extends CardImpl { // That creature doesn't untap during its controller's untap step for as long as you control Tidebinder Mage. Ability ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect(), false); ability.addEffect(new DontUntapInControllersUntapStepTargetEffect(Duration.WhileControlled)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TideforceElemental.java b/Mage.Sets/src/mage/cards/t/TideforceElemental.java index f1028901dfd..2368549edc4 100644 --- a/Mage.Sets/src/mage/cards/t/TideforceElemental.java +++ b/Mage.Sets/src/mage/cards/t/TideforceElemental.java @@ -17,8 +17,11 @@ import mage.constants.SubType; import mage.constants.ColoredManaSymbol; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author Loki @@ -37,7 +40,7 @@ public final class TideforceElemental extends CardImpl { new MayTapOrUntapTargetEffect(), new ColoredManaCost(ColoredManaSymbol.U)); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); // Landfall - Whenever a land you control enters, you may untap Tideforce Elemental. this.addAbility(new LandfallAbility(new UntapSourceEffect(), true)); diff --git a/Mage.Sets/src/mage/cards/t/TimeOfIce.java b/Mage.Sets/src/mage/cards/t/TimeOfIce.java index 4b66573aafb..816d39c49ce 100644 --- a/Mage.Sets/src/mage/cards/t/TimeOfIce.java +++ b/Mage.Sets/src/mage/cards/t/TimeOfIce.java @@ -15,10 +15,15 @@ import mage.constants.SubType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.constants.SagaChapter.CHAPTER_I; +import static mage.constants.SagaChapter.CHAPTER_II; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author TheElk801 */ @@ -43,8 +48,8 @@ public final class TimeOfIce extends CardImpl { effects.add(new TapTargetEffect()); effects.add(new DontUntapInControllersUntapStepTargetEffect(Duration.WhileControlled, "It")); sagaAbility.addChapterEffect( - this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II, effects, - new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE) + this, CHAPTER_I, CHAPTER_II, effects, + new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE) ); // III — Return all tapped creatures to their owners' hands. diff --git a/Mage.Sets/src/mage/cards/t/TimeToReflect.java b/Mage.Sets/src/mage/cards/t/TimeToReflect.java index bd873cff303..1d0ea5e1497 100644 --- a/Mage.Sets/src/mage/cards/t/TimeToReflect.java +++ b/Mage.Sets/src/mage/cards/t/TimeToReflect.java @@ -63,7 +63,7 @@ enum TimeToReflectAdjuster implements TargetAdjuster { } filter.add(Predicates.or(creaturesThatBlockedOrWereBlockedByAZombie)); ability.getTargets().clear(); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); } } diff --git a/Mage.Sets/src/mage/cards/t/TinWingChimera.java b/Mage.Sets/src/mage/cards/t/TinWingChimera.java index 82860ddb9fc..ec1cb34f951 100644 --- a/Mage.Sets/src/mage/cards/t/TinWingChimera.java +++ b/Mage.Sets/src/mage/cards/t/TinWingChimera.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -45,7 +46,7 @@ public final class TinWingChimera extends CardImpl { Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.P2P2.createInstance()), new SacrificeSourceCost()); ability.addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield) .setText("It gains flying. (This effect lasts indefinitely.)")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TitanicBrawl.java b/Mage.Sets/src/mage/cards/t/TitanicBrawl.java index e42199ec912..bb682069167 100644 --- a/Mage.Sets/src/mage/cards/t/TitanicBrawl.java +++ b/Mage.Sets/src/mage/cards/t/TitanicBrawl.java @@ -10,11 +10,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -33,7 +36,7 @@ public final class TitanicBrawl extends CardImpl { // Target creature you control fights target creature you don't control. this.getSpellAbility().addEffect(new FightTargetsEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private TitanicBrawl(final TitanicBrawl card) { diff --git a/Mage.Sets/src/mage/cards/t/ToothCollector.java b/Mage.Sets/src/mage/cards/t/ToothCollector.java index 99288243f42..87753466bb7 100644 --- a/Mage.Sets/src/mage/cards/t/ToothCollector.java +++ b/Mage.Sets/src/mage/cards/t/ToothCollector.java @@ -18,6 +18,8 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author fireshoes */ @@ -38,7 +40,7 @@ public final class ToothCollector extends CardImpl { // When Tooth Collector enters the battlefield, target creature an opponent controls gets -1/-1 until end of turn. Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(-1, -1, Duration.EndOfTurn)); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); // {Delirium — At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard, diff --git a/Mage.Sets/src/mage/cards/t/Topplegeist.java b/Mage.Sets/src/mage/cards/t/Topplegeist.java index 1ba37c4e766..fc2727d38c3 100644 --- a/Mage.Sets/src/mage/cards/t/Topplegeist.java +++ b/Mage.Sets/src/mage/cards/t/Topplegeist.java @@ -22,6 +22,8 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author fireshoes */ @@ -44,7 +46,7 @@ public final class Topplegeist extends CardImpl { // When Topplegeist enters the battlefield, tap target creature an opponent controls. Ability ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); // Delirium — At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard, diff --git a/Mage.Sets/src/mage/cards/t/ToxicStench.java b/Mage.Sets/src/mage/cards/t/ToxicStench.java index 444de87702e..3749e340633 100644 --- a/Mage.Sets/src/mage/cards/t/ToxicStench.java +++ b/Mage.Sets/src/mage/cards/t/ToxicStench.java @@ -10,10 +10,13 @@ import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * @author TheElk801 */ @@ -31,7 +34,7 @@ public final class ToxicStench extends CardImpl { AbilityWord.THRESHOLD.formatWord() + "If seven or more cards are in your graveyard, " + "instead destroy that creature. It can't be regenerated." )); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); } private ToxicStench(final ToxicStench card) { diff --git a/Mage.Sets/src/mage/cards/t/TraitorsRoar.java b/Mage.Sets/src/mage/cards/t/TraitorsRoar.java index 7b300ac518c..85f3c87571d 100644 --- a/Mage.Sets/src/mage/cards/t/TraitorsRoar.java +++ b/Mage.Sets/src/mage/cards/t/TraitorsRoar.java @@ -12,6 +12,7 @@ import mage.filter.predicate.permanent.TappedPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -31,7 +32,7 @@ public final class TraitorsRoar extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B/R}"); // Tap target untapped creature. It deals damage equal to its power to its controller. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new TraitorsRoarEffect()); // Conspire diff --git a/Mage.Sets/src/mage/cards/t/TrapRunner.java b/Mage.Sets/src/mage/cards/t/TrapRunner.java index 3ceda6c168d..b51e145b59d 100644 --- a/Mage.Sets/src/mage/cards/t/TrapRunner.java +++ b/Mage.Sets/src/mage/cards/t/TrapRunner.java @@ -18,6 +18,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.AttackingPredicate; import mage.filter.predicate.permanent.BlockedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -50,7 +51,7 @@ public final class TrapRunner extends CardImpl { // {T}: Target unblocked attacking creature becomes blocked. Activate this ability only during combat after blockers are declared. Ability ability = new ActivateIfConditionActivatedAbility(new BecomeBlockedTargetEffect(), new TapSourceCost(), condition); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TriadOfFates.java b/Mage.Sets/src/mage/cards/t/TriadOfFates.java index 7018bf840ce..aefb03653b0 100644 --- a/Mage.Sets/src/mage/cards/t/TriadOfFates.java +++ b/Mage.Sets/src/mage/cards/t/TriadOfFates.java @@ -16,10 +16,13 @@ import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * @author LevelX2 */ @@ -43,21 +46,21 @@ public final class TriadOfFates extends CardImpl { // {1}, {T}: Put a fate counter on another target creature. Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.FATE.createInstance()), new ManaCostsImpl<>("{1}")); ability.addCost(new TapSourceCost()); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE); + Target target = new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE); ability.addTarget(target); this.addAbility(ability); // {W}, {T}: Exile target creature that has a fate counter on it, then return it to the battlefield under its owner's control. ability = new SimpleActivatedAbility(new ExileThenReturnTargetEffect(false, false), new ManaCostsImpl<>("{W}")); ability.addCost(new TapSourceCost()); - target = new TargetCreaturePermanent(filterCounter); + target = new TargetPermanent(filterCounter); ability.addTarget(target); this.addAbility(ability); // {B}, {T}: Exile target creature that has a fate counter on it. Its controller draws two cards. ability = new SimpleActivatedAbility(new ExileTargetEffect(), new ManaCostsImpl<>("{B}")); ability.addCost(new TapSourceCost()); - target = new TargetCreaturePermanent(filterCounter); + target = new TargetPermanent(filterCounter); ability.addTarget(target); ability.addEffect(new DrawCardTargetControllerEffect(2)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/t/TriangleOfWar.java b/Mage.Sets/src/mage/cards/t/TriangleOfWar.java index 00161dbaaf4..71aefc637b4 100644 --- a/Mage.Sets/src/mage/cards/t/TriangleOfWar.java +++ b/Mage.Sets/src/mage/cards/t/TriangleOfWar.java @@ -12,9 +12,12 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author fireshoes @@ -30,7 +33,7 @@ public final class TriangleOfWar extends CardImpl { new ManaCostsImpl<>("{2}")); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetControlledCreaturePermanent()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TripWire.java b/Mage.Sets/src/mage/cards/t/TripWire.java index bdaa8cd194b..702896736fb 100644 --- a/Mage.Sets/src/mage/cards/t/TripWire.java +++ b/Mage.Sets/src/mage/cards/t/TripWire.java @@ -9,6 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -26,7 +27,7 @@ public final class TripWire extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}"); // Destroy target creature with horsemanship. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/t/TrollsOfTelJilad.java b/Mage.Sets/src/mage/cards/t/TrollsOfTelJilad.java index 157c8e61170..36f1de7621b 100644 --- a/Mage.Sets/src/mage/cards/t/TrollsOfTelJilad.java +++ b/Mage.Sets/src/mage/cards/t/TrollsOfTelJilad.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -37,7 +38,7 @@ public final class TrollsOfTelJilad extends CardImpl { this.power = new MageInt(5); this.toughness = new MageInt(6); Ability ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new ManaCostsImpl<>("{1}{G}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TrophyHunter.java b/Mage.Sets/src/mage/cards/t/TrophyHunter.java index 2c1fd9962de..260be60922e 100644 --- a/Mage.Sets/src/mage/cards/t/TrophyHunter.java +++ b/Mage.Sets/src/mage/cards/t/TrophyHunter.java @@ -17,6 +17,7 @@ import mage.constants.CardType; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class TrophyHunter extends CardImpl { // {1}{G}: Trophy Hunter deals 1 damage to target creature with flying. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new ManaCostsImpl<>("{1}{G}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Whenever a creature with flying dealt damage by Trophy Hunter this turn dies, put a +1/+1 counter on Trophy Hunter. diff --git a/Mage.Sets/src/mage/cards/t/TsaboTavoc.java b/Mage.Sets/src/mage/cards/t/TsaboTavoc.java index 3d86fcb903b..68f4d62a453 100644 --- a/Mage.Sets/src/mage/cards/t/TsaboTavoc.java +++ b/Mage.Sets/src/mage/cards/t/TsaboTavoc.java @@ -17,6 +17,7 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -49,7 +50,7 @@ public final class TsaboTavoc extends CardImpl { // {B}{B}, {tap}: Destroy target legendary creature. It can't be regenerated. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(true), new ManaCostsImpl<>("{B}{B}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filterDestroy)); + ability.addTarget(new TargetPermanent(filterDestroy)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TwiningTwins.java b/Mage.Sets/src/mage/cards/t/TwiningTwins.java index b0406116218..cb8e36f28a1 100644 --- a/Mage.Sets/src/mage/cards/t/TwiningTwins.java +++ b/Mage.Sets/src/mage/cards/t/TwiningTwins.java @@ -12,6 +12,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TokenPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -46,7 +47,7 @@ public final class TwiningTwins extends AdventureCard { // Swift Spiral // Exile target nontoken creature. Return it to the battlefield under its owner’s control at the beginning of the next end step. this.getSpellCard().getSpellAbility().addEffect(new ExileReturnBattlefieldNextEndStepTargetEffect().withTextThatCard(false)); - this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(filter)); this.finalizeAdventure(); } diff --git a/Mage.Sets/src/mage/cards/t/TwinmawStormbrood.java b/Mage.Sets/src/mage/cards/t/TwinmawStormbrood.java index 41c021b2836..7a8d67bd10f 100644 --- a/Mage.Sets/src/mage/cards/t/TwinmawStormbrood.java +++ b/Mage.Sets/src/mage/cards/t/TwinmawStormbrood.java @@ -14,6 +14,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -44,7 +45,7 @@ public final class TwinmawStormbrood extends OmenCard { // Charring Bite // deals 5 damage to target creature without flying. this.getSpellCard().getSpellAbility().addEffect(new DamageTargetEffect(5)); - this.getSpellCard().getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellCard().getSpellAbility().addTarget(new TargetPermanent(filter)); this.finalizeOmen(); } diff --git a/Mage.Sets/src/mage/cards/u/UlrichsKindred.java b/Mage.Sets/src/mage/cards/u/UlrichsKindred.java index 0f25d20d9e2..65cbf6f93b0 100644 --- a/Mage.Sets/src/mage/cards/u/UlrichsKindred.java +++ b/Mage.Sets/src/mage/cards/u/UlrichsKindred.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -44,7 +45,7 @@ public final class UlrichsKindred extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{3}{G}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/u/UltimatePrice.java b/Mage.Sets/src/mage/cards/u/UltimatePrice.java index c1f7305f23e..4045f770743 100644 --- a/Mage.Sets/src/mage/cards/u/UltimatePrice.java +++ b/Mage.Sets/src/mage/cards/u/UltimatePrice.java @@ -8,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.MonocoloredPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -26,7 +27,7 @@ public final class UltimatePrice extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{B}"); // Destroy target monocolored creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldTracker.java b/Mage.Sets/src/mage/cards/u/UlvenwaldTracker.java index d45b79ca504..d07df3da42d 100644 --- a/Mage.Sets/src/mage/cards/u/UlvenwaldTracker.java +++ b/Mage.Sets/src/mage/cards/u/UlvenwaldTracker.java @@ -12,11 +12,14 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2; + /** * @author North */ @@ -36,7 +39,7 @@ public final class UlvenwaldTracker extends CardImpl { Target controlledTarget = new TargetControlledCreaturePermanent(); controlledTarget.setTargetTag(1); ability.addTarget(controlledTarget); - Target secondTarget = new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2); + Target secondTarget = new TargetPermanent(FILTER_ANOTHER_CREATURE_TARGET_2); secondTarget.setTargetTag(2); ability.addTarget(secondTarget); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/u/UndercityUprising.java b/Mage.Sets/src/mage/cards/u/UndercityUprising.java index a3758ace5ea..bd4739a4b42 100644 --- a/Mage.Sets/src/mage/cards/u/UndercityUprising.java +++ b/Mage.Sets/src/mage/cards/u/UndercityUprising.java @@ -8,11 +8,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -30,7 +33,7 @@ public final class UndercityUprising extends CardImpl { .setText("Then target creature you control fights target creature you don't control. " + "(Each deals damage equal to its power to the other.)")); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private UndercityUprising(final UndercityUprising card) { diff --git a/Mage.Sets/src/mage/cards/u/Undo.java b/Mage.Sets/src/mage/cards/u/Undo.java index 7eaa6d0bceb..3eb44b312ec 100644 --- a/Mage.Sets/src/mage/cards/u/Undo.java +++ b/Mage.Sets/src/mage/cards/u/Undo.java @@ -1,21 +1,20 @@ - package mage.cards.u; -import java.util.UUID; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author fireshoes */ public final class Undo extends CardImpl { public Undo(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{U}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}{U}"); // Return two target creatures to their owners' hands. this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); diff --git a/Mage.Sets/src/mage/cards/u/UnityOfTheDroids.java b/Mage.Sets/src/mage/cards/u/UnityOfTheDroids.java index 75da54f62b6..5f809955b8c 100644 --- a/Mage.Sets/src/mage/cards/u/UnityOfTheDroids.java +++ b/Mage.Sets/src/mage/cards/u/UnityOfTheDroids.java @@ -12,6 +12,7 @@ import mage.constants.Duration; import mage.constants.PutCards; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class UnityOfTheDroids extends CardImpl { // Choose one - Prevent all damage that would be dealt to target artifact creature this turn. this.getSpellAbility().addEffect(new PreventDamageToTargetEffect(Duration.EndOfTurn)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(artifactCreatureFilter)); + this.getSpellAbility().addTarget(new TargetPermanent(artifactCreatureFilter)); // Look at the top four cards of your library. Put one of them into your hand and the rest into your graveyard. Mode mode = new Mode(new LookLibraryAndPickControllerEffect(4, 1, PutCards.HAND, PutCards.GRAVEYARD)); @@ -42,7 +43,7 @@ public final class UnityOfTheDroids extends CardImpl { // Destroy target nonartifact creature. mode = new Mode(new DestroyTargetEffect()); - mode.addTarget(new TargetCreaturePermanent(nonArtifactCreatureFilter)); + mode.addTarget(new TargetPermanent(nonArtifactCreatureFilter)); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/u/UnlikelyAlliance.java b/Mage.Sets/src/mage/cards/u/UnlikelyAlliance.java index 6c0a2e03eb6..ae647da8d25 100644 --- a/Mage.Sets/src/mage/cards/u/UnlikelyAlliance.java +++ b/Mage.Sets/src/mage/cards/u/UnlikelyAlliance.java @@ -15,6 +15,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.AttackingPredicate; import mage.filter.predicate.permanent.BlockingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -35,7 +36,7 @@ public final class UnlikelyAlliance extends CardImpl { // {1}{W}: Target nonattacking, nonblocking creature gets +0/+2 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(0, 2, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java b/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java index 1e41474d493..66b30b179d0 100644 --- a/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java +++ b/Mage.Sets/src/mage/cards/u/UnlivingPsychopath.java @@ -21,6 +21,7 @@ import mage.filter.predicate.ObjectSourcePlayer; import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -49,7 +50,7 @@ public final class UnlivingPsychopath extends CardImpl { // {B}, {tap}: Destroy target creature with power less than Unliving Psychopath's power. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ColoredManaCost(ColoredManaSymbol.B)); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/u/UnnaturalAggression.java b/Mage.Sets/src/mage/cards/u/UnnaturalAggression.java index cd97cbce9d8..12d8f02b206 100644 --- a/Mage.Sets/src/mage/cards/u/UnnaturalAggression.java +++ b/Mage.Sets/src/mage/cards/u/UnnaturalAggression.java @@ -10,10 +10,13 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.SecondTargetPointer; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -29,7 +32,7 @@ public final class UnnaturalAggression extends CardImpl { // Target creature you control fights target creature an opponent controls. this.getSpellAbility().addEffect(new FightTargetsEffect(false)); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); // If the creature an opponent controls would die this turn, exile it instead. Effect effect = new ExileTargetIfDiesEffect(); effect.setText("If the creature an opponent controls would die this turn, exile it instead"); diff --git a/Mage.Sets/src/mage/cards/u/UnravelingMummy.java b/Mage.Sets/src/mage/cards/u/UnravelingMummy.java index 2badbfe8d63..d20d9886022 100644 --- a/Mage.Sets/src/mage/cards/u/UnravelingMummy.java +++ b/Mage.Sets/src/mage/cards/u/UnravelingMummy.java @@ -18,6 +18,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -44,14 +45,14 @@ public final class UnravelingMummy extends CardImpl { Effect effect = new GainAbilityTargetEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn); effect.setText("Target attacking Zombie gains lifelink until end of turn."); Ability ability = new SimpleActivatedAbility(effect, new ManaCostsImpl<>("{1}{W}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // {1}{B}: Target attacking Zombie gains deathtouch until end of turn. effect = new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn); effect.setText("Target attacking Zombie gains deathtouch until end of turn. (Any amount of damage it deals to a creature is enough to destroy it.)"); ability = new SimpleActivatedAbility(effect, new ManaCostsImpl<>("{1}{B}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/u/UnrulySureshot.java b/Mage.Sets/src/mage/cards/u/UnrulySureshot.java index 6facccb4e29..1713ba71d8d 100644 --- a/Mage.Sets/src/mage/cards/u/UnrulySureshot.java +++ b/Mage.Sets/src/mage/cards/u/UnrulySureshot.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetOpponentsCreaturePermanent; @@ -45,7 +46,7 @@ public final class UnrulySureshot extends CardImpl { // {3}{R}: Unruly Sureshot deals 2 damage to target creature with a bounty counter on it. ability = new SimpleActivatedAbility(new DamageTargetEffect(2), new ManaCostsImpl<>("{3}{R}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/u/UnstableGlyphbridge.java b/Mage.Sets/src/mage/cards/u/UnstableGlyphbridge.java index 9f9176e3c4b..2115fe4af1a 100644 --- a/Mage.Sets/src/mage/cards/u/UnstableGlyphbridge.java +++ b/Mage.Sets/src/mage/cards/u/UnstableGlyphbridge.java @@ -19,7 +19,7 @@ import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; import java.util.UUID; @@ -82,7 +82,7 @@ class UnstableGlyphbridgeEffect extends OneShotEffect { FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less"); filter.add(new PowerPredicate(ComparisonType.OR_LESS, 2)); filter.add(new ControllerIdPredicate(playerId)); - TargetCreaturePermanent target = new TargetCreaturePermanent(filter); + TargetPermanent target = new TargetPermanent(filter); target.withNotTarget(true); target.withChooseHint(player.getName() + " controls"); diff --git a/Mage.Sets/src/mage/cards/v/VadersCommand.java b/Mage.Sets/src/mage/cards/v/VadersCommand.java index a1aa2db0f09..4e9181879af 100644 --- a/Mage.Sets/src/mage/cards/v/VadersCommand.java +++ b/Mage.Sets/src/mage/cards/v/VadersCommand.java @@ -51,7 +51,7 @@ public final class VadersCommand extends CardImpl { // Destroy target nonartifact creature. mode = new Mode(new DestroyTargetEffect()); - mode.addTarget(new TargetCreaturePermanent(filterNonArtifact)); + mode.addTarget(new TargetPermanent(filterNonArtifact)); this.getSpellAbility().addMode(mode); // Gain 5 life. diff --git a/Mage.Sets/src/mage/cards/v/VagrantPlowbeasts.java b/Mage.Sets/src/mage/cards/v/VagrantPlowbeasts.java index 86f874ec94f..59c5021cced 100644 --- a/Mage.Sets/src/mage/cards/v/VagrantPlowbeasts.java +++ b/Mage.Sets/src/mage/cards/v/VagrantPlowbeasts.java @@ -14,6 +14,7 @@ import mage.constants.ComparisonType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -38,7 +39,7 @@ public final class VagrantPlowbeasts extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility( new RegenerateTargetEffect(), new ManaCostsImpl<>("{1}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/ValorousStance.java b/Mage.Sets/src/mage/cards/v/ValorousStance.java index 873f94cf3a4..bd1172f1687 100644 --- a/Mage.Sets/src/mage/cards/v/ValorousStance.java +++ b/Mage.Sets/src/mage/cards/v/ValorousStance.java @@ -14,6 +14,7 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -39,7 +40,7 @@ public final class ValorousStance extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent()); // or destroy target creature with toughness 4 or greater. Mode mode1 = new Mode(new DestroyTargetEffect()); - mode1.addTarget(new TargetCreaturePermanent(filter)); + mode1.addTarget(new TargetPermanent(filter)); this.getSpellAbility().addMode(mode1); } diff --git a/Mage.Sets/src/mage/cards/v/Vanquish.java b/Mage.Sets/src/mage/cards/v/Vanquish.java index b23f8e6ca95..2be4b3340fc 100644 --- a/Mage.Sets/src/mage/cards/v/Vanquish.java +++ b/Mage.Sets/src/mage/cards/v/Vanquish.java @@ -7,6 +7,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -21,7 +22,7 @@ public final class Vanquish extends CardImpl { // Destroy target blocking creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterBlockingCreature())); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterBlockingCreature())); } private Vanquish(final Vanquish card) { diff --git a/Mage.Sets/src/mage/cards/v/VanquishTheFoul.java b/Mage.Sets/src/mage/cards/v/VanquishTheFoul.java index 9786d09d236..b132119e2d2 100644 --- a/Mage.Sets/src/mage/cards/v/VanquishTheFoul.java +++ b/Mage.Sets/src/mage/cards/v/VanquishTheFoul.java @@ -11,6 +11,7 @@ import mage.constants.ComparisonType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -30,7 +31,7 @@ public final class VanquishTheFoul extends CardImpl { // Destroy target creature with power 4 or greater. Scry 1. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); this.getSpellAbility().addTarget(target); this.getSpellAbility().addEffect(new ScryEffect(1)); } diff --git a/Mage.Sets/src/mage/cards/v/Vault87ForcedEvolution.java b/Mage.Sets/src/mage/cards/v/Vault87ForcedEvolution.java index d5346befc1f..845eafcc52a 100644 --- a/Mage.Sets/src/mage/cards/v/Vault87ForcedEvolution.java +++ b/Mage.Sets/src/mage/cards/v/Vault87ForcedEvolution.java @@ -18,11 +18,15 @@ import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.constants.Duration.WhileControlled; +import static mage.constants.SagaChapter.CHAPTER_I; + /** * @author Cguy7777 */ @@ -54,9 +58,9 @@ public final class Vault87ForcedEvolution extends CardImpl { // I -- Gain control of target non-Mutant creature for as long as you control Vault 87. sagaAbility.addChapterEffect( this, - SagaChapter.CHAPTER_I, - new GainControlTargetEffect(Duration.WhileControlled), - new TargetCreaturePermanent(filterNonMutant)); + CHAPTER_I, + new GainControlTargetEffect(WhileControlled), + new TargetPermanent(filterNonMutant)); // II -- Put a +1/+1 counter on target creature you control. It becomes a Mutant in addition to its other types. sagaAbility.addChapterEffect( @@ -85,4 +89,4 @@ public final class Vault87ForcedEvolution extends CardImpl { public Vault87ForcedEvolution copy() { return new Vault87ForcedEvolution(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/v/VedalkenShackles.java b/Mage.Sets/src/mage/cards/v/VedalkenShackles.java index 7bf323c778e..81705dd6f62 100644 --- a/Mage.Sets/src/mage/cards/v/VedalkenShackles.java +++ b/Mage.Sets/src/mage/cards/v/VedalkenShackles.java @@ -22,6 +22,7 @@ import mage.filter.predicate.ObjectSourcePlayer; import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -48,7 +49,7 @@ public final class VedalkenShackles extends CardImpl { "Gain control of target creature with power less than or equal to the number of Islands you control for as long as {this} remains tapped"); Ability ability = new SimpleActivatedAbility(effect, new GenericManaCost(2)); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(controllableCreatures)); + ability.addTarget(new TargetPermanent(controllableCreatures)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/Vendetta.java b/Mage.Sets/src/mage/cards/v/Vendetta.java index e643f7395f5..94280219839 100644 --- a/Mage.Sets/src/mage/cards/v/Vendetta.java +++ b/Mage.Sets/src/mage/cards/v/Vendetta.java @@ -12,8 +12,11 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author North, Loki @@ -24,7 +27,7 @@ public final class Vendetta extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}"); // Destroy target nonblack creature. It can't be regenerated. You lose life equal to that creature's toughness. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); this.getSpellAbility().addEffect(new VendettaEffect()); } diff --git a/Mage.Sets/src/mage/cards/v/Vengeance.java b/Mage.Sets/src/mage/cards/v/Vengeance.java index b2c7b6185c2..bd1c4ca4530 100644 --- a/Mage.Sets/src/mage/cards/v/Vengeance.java +++ b/Mage.Sets/src/mage/cards/v/Vengeance.java @@ -8,6 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -26,7 +27,7 @@ public final class Vengeance extends CardImpl { // Destroy target tapped creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/v/VengeantVampire.java b/Mage.Sets/src/mage/cards/v/VengeantVampire.java index 528316fc75c..91d783f056c 100644 --- a/Mage.Sets/src/mage/cards/v/VengeantVampire.java +++ b/Mage.Sets/src/mage/cards/v/VengeantVampire.java @@ -11,10 +11,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * @author JayDi85 */ @@ -32,7 +35,7 @@ public final class VengeantVampire extends CardImpl { // When Vengeant Vampire dies, destroy target creature an opponent controls and you gain 4 life. Ability ability = new DiesSourceTriggeredAbility(new DestroyTargetEffect()); ability.addEffect(new GainLifeEffect(4).concatBy("and")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VenomspoutBrackus.java b/Mage.Sets/src/mage/cards/v/VenomspoutBrackus.java index 8c42d93e58b..36775b55f29 100644 --- a/Mage.Sets/src/mage/cards/v/VenomspoutBrackus.java +++ b/Mage.Sets/src/mage/cards/v/VenomspoutBrackus.java @@ -17,6 +17,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -42,7 +43,7 @@ public final class VenomspoutBrackus extends CardImpl { // {1}{G}, {tap}: Venomspout Brackus deals 5 damage to target attacking or blocking creature with flying. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(5), new ManaCostsImpl<>("{1}{G}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // Morph {3}{G}{G} this.addAbility(new MorphAbility(this, new ManaCostsImpl<>("{3}{G}{G}"))); diff --git a/Mage.Sets/src/mage/cards/v/VerityCircle.java b/Mage.Sets/src/mage/cards/v/VerityCircle.java index f34265717bc..9cebaf64cc7 100644 --- a/Mage.Sets/src/mage/cards/v/VerityCircle.java +++ b/Mage.Sets/src/mage/cards/v/VerityCircle.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -36,7 +37,7 @@ public final class VerityCircle extends CardImpl { // {4}{U}: Tap target creature without flying. Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{4}{U}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/Vertigo.java b/Mage.Sets/src/mage/cards/v/Vertigo.java index 37d06241451..4e51ad30f95 100644 --- a/Mage.Sets/src/mage/cards/v/Vertigo.java +++ b/Mage.Sets/src/mage/cards/v/Vertigo.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -33,7 +34,7 @@ public final class Vertigo extends CardImpl { this.getSpellAbility().addEffect(new DamageTargetEffect(2)); this.getSpellAbility().addEffect(new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn) .setText("That creature loses flying until end of turn")); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Vertigo(final Vertigo card) { diff --git a/Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java b/Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java index 7286e6f419a..5e213c26ee9 100644 --- a/Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java +++ b/Mage.Sets/src/mage/cards/v/VeryCrypticCommandD.java @@ -69,7 +69,7 @@ public final class VeryCrypticCommandD extends CardImpl { // Turn over target nontoken creature. mode = new Mode(new TurnOverEffect()); - mode.addTarget(new TargetCreaturePermanent(filter2)); + mode.addTarget(new TargetPermanent(filter2)); this.getSpellAbility().getModes().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/v/VeteranCathar.java b/Mage.Sets/src/mage/cards/v/VeteranCathar.java index 916d21e0def..d25272fd073 100644 --- a/Mage.Sets/src/mage/cards/v/VeteranCathar.java +++ b/Mage.Sets/src/mage/cards/v/VeteranCathar.java @@ -15,8 +15,11 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.constants.SubType.HUMAN; + /** * * @author LevelX2 @@ -32,7 +35,7 @@ public final class VeteranCathar extends CardImpl { // {3}{W}: Target Human gains double strike until end of turn. Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{3}{W}")); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent(SubType.HUMAN, "Human"))); + ability.addTarget(new TargetPermanent(new FilterCreaturePermanent(HUMAN, "Human"))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VictimOfNight.java b/Mage.Sets/src/mage/cards/v/VictimOfNight.java index bf58f605bfa..c127f2d6d90 100644 --- a/Mage.Sets/src/mage/cards/v/VictimOfNight.java +++ b/Mage.Sets/src/mage/cards/v/VictimOfNight.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -30,7 +31,7 @@ public final class VictimOfNight extends CardImpl { // Destroy target non-Vampire, non-Werewolf, non-Zombie creature. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/v/VigeanGraftmage.java b/Mage.Sets/src/mage/cards/v/VigeanGraftmage.java index eeb6f55a359..5001b126f5a 100644 --- a/Mage.Sets/src/mage/cards/v/VigeanGraftmage.java +++ b/Mage.Sets/src/mage/cards/v/VigeanGraftmage.java @@ -14,8 +14,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_P1P1; + /** * * @author JotaPeRL @@ -35,7 +38,7 @@ public final class VigeanGraftmage extends CardImpl { // {1}{U}: Untap target creature with a +1/+1 counter on it. Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new ManaCostsImpl<>("{1}{U}")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_P1P1)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_P1P1)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VioletPall.java b/Mage.Sets/src/mage/cards/v/VioletPall.java index 66184057da8..d7ba6b14b41 100644 --- a/Mage.Sets/src/mage/cards/v/VioletPall.java +++ b/Mage.Sets/src/mage/cards/v/VioletPall.java @@ -9,8 +9,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; import mage.game.permanent.token.FaerieRogueToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author Loki @@ -22,7 +25,7 @@ public final class VioletPall extends CardImpl { this.subtype.add(SubType.FAERIE); this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK)); this.getSpellAbility().addEffect(new CreateTokenEffect(new FaerieRogueToken(), 1)); } diff --git a/Mage.Sets/src/mage/cards/v/ViridianScout.java b/Mage.Sets/src/mage/cards/v/ViridianScout.java index e42e1048ae3..3cbf66865ef 100644 --- a/Mage.Sets/src/mage/cards/v/ViridianScout.java +++ b/Mage.Sets/src/mage/cards/v/ViridianScout.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class ViridianScout extends CardImpl { // {2}{G}, Sacrifice Viridian Scout: Viridian Scout deals 2 damage to target creature with flying. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2, "it"), new ManaCostsImpl<>("{2}{G}")); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VisceridDrone.java b/Mage.Sets/src/mage/cards/v/VisceridDrone.java index ea684250281..c3f01ae7ef8 100644 --- a/Mage.Sets/src/mage/cards/v/VisceridDrone.java +++ b/Mage.Sets/src/mage/cards/v/VisceridDrone.java @@ -18,6 +18,7 @@ import mage.filter.StaticFilters; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -54,7 +55,7 @@ public final class VisceridDrone extends CardImpl { new SacrificeTargetCost(filter2), "Sacrifice a creature and a Swamp" )); - ability.addTarget(new TargetCreaturePermanent(filter1)); + ability.addTarget(new TargetPermanent(filter1)); this.addAbility(ability); // {tap}, Sacrifice a creature and a snow Swamp: Destroy target creature. It can't be regenerated. diff --git a/Mage.Sets/src/mage/cards/v/VitalSplicer.java b/Mage.Sets/src/mage/cards/v/VitalSplicer.java index 4b180c3a4e1..e0c186fd8b5 100644 --- a/Mage.Sets/src/mage/cards/v/VitalSplicer.java +++ b/Mage.Sets/src/mage/cards/v/VitalSplicer.java @@ -15,6 +15,7 @@ import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.game.permanent.token.PhyrexianGolemToken; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -46,7 +47,7 @@ public final class VitalSplicer extends CardImpl { // {1}: Regenerate target Golem you control. Ability ability = new SimpleActivatedAbility(new RegenerateTargetEffect(), new ManaCostsImpl<>("{1}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VivienOfTheArkbow.java b/Mage.Sets/src/mage/cards/v/VivienOfTheArkbow.java index f53d67f5017..5ca61378564 100644 --- a/Mage.Sets/src/mage/cards/v/VivienOfTheArkbow.java +++ b/Mage.Sets/src/mage/cards/v/VivienOfTheArkbow.java @@ -15,11 +15,14 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.counters.CounterType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * @author TheElk801 */ @@ -40,7 +43,7 @@ public final class VivienOfTheArkbow extends CardImpl { // −3: Target creature you control deals damage equal to its power to target creature you don't control. ability = new LoyaltyAbility(new DamageWithPowerFromOneToAnotherTargetEffect(), -3); ability.addTarget(new TargetControlledCreaturePermanent()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + ability.addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.addAbility(ability); // −9: Creatures you control get +4/+4 and gain trample until end of turn. diff --git a/Mage.Sets/src/mage/cards/v/VoltaicConstruct.java b/Mage.Sets/src/mage/cards/v/VoltaicConstruct.java index 7d08ba87a9c..6d00a6e0d0c 100644 --- a/Mage.Sets/src/mage/cards/v/VoltaicConstruct.java +++ b/Mage.Sets/src/mage/cards/v/VoltaicConstruct.java @@ -14,6 +14,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class VoltaicConstruct extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new GenericManaCost(2)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WalkThePlank.java b/Mage.Sets/src/mage/cards/w/WalkThePlank.java index b719d45c10b..6e5a0183e8b 100644 --- a/Mage.Sets/src/mage/cards/w/WalkThePlank.java +++ b/Mage.Sets/src/mage/cards/w/WalkThePlank.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class WalkThePlank extends CardImpl { // Destroy target non-Merfolk creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private WalkThePlank(final WalkThePlank card) { diff --git a/Mage.Sets/src/mage/cards/w/WallOfVipers.java b/Mage.Sets/src/mage/cards/w/WallOfVipers.java index 014401a77af..6df17ae8c11 100644 --- a/Mage.Sets/src/mage/cards/w/WallOfVipers.java +++ b/Mage.Sets/src/mage/cards/w/WallOfVipers.java @@ -20,6 +20,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.combat.CombatGroup; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class WallOfVipers extends CardImpl { // {3}: Destroy Wall of Vipers and target creature it's blocking. Any player may activate this ability. SimpleActivatedAbility ability = new SimpleActivatedAbility(new DestroySourceEffect(), new ManaCostsImpl<>("{3}")); ability.addEffect(new DestroyTargetEffect(" and target creature it's blocking")); - ability.addTarget(new TargetCreaturePermanent(new WallOfVipersFilter())); + ability.addTarget(new TargetPermanent(new WallOfVipersFilter())); ability.setMayActivate(TargetController.ANY); ability.addEffect(new InfoEffect("Any player may activate this ability")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/w/Wallop.java b/Mage.Sets/src/mage/cards/w/Wallop.java index 065a1add221..84b1732ae45 100644 --- a/Mage.Sets/src/mage/cards/w/Wallop.java +++ b/Mage.Sets/src/mage/cards/w/Wallop.java @@ -12,6 +12,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -33,7 +34,7 @@ public final class Wallop extends CardImpl { // Destroy target blue or black creature with flying. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private Wallop(final Wallop card) { diff --git a/Mage.Sets/src/mage/cards/w/WanderingMage.java b/Mage.Sets/src/mage/cards/w/WanderingMage.java index af772345bdd..662a8afe48d 100644 --- a/Mage.Sets/src/mage/cards/w/WanderingMage.java +++ b/Mage.Sets/src/mage/cards/w/WanderingMage.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetPlayerOrPlaneswalker; @@ -53,7 +54,7 @@ public final class WanderingMage extends CardImpl { // {U}: Prevent the next 1 damage that would be dealt to target Cleric or Wizard creature this turn. ability = new SimpleActivatedAbility( new PreventDamageToTargetEffect(Duration.EndOfTurn, 1), new ManaCostsImpl<>("{U}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); // {B}, Put a -1/-1 counter on a creature you control: Prevent the next 2 damage that would be dealt to target player this turn. diff --git a/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java b/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java index f2563f0242d..bf2af820e32 100644 --- a/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java +++ b/Mage.Sets/src/mage/cards/w/WarTorchGoblin.java @@ -15,6 +15,7 @@ import mage.constants.SubType; import mage.constants.ColoredManaSymbol; import mage.constants.Zone; import mage.filter.common.FilterBlockingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -34,7 +35,7 @@ public final class WarTorchGoblin extends CardImpl { // {R}, Sacrifice War-Torch Goblin: War-Torch Goblin deals 2 damage to target blocking creature. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2, "it"), new ColoredManaCost(ColoredManaSymbol.R)); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature())); + ability.addTarget(new TargetPermanent(new FilterBlockingCreature())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WarkiteMarauder.java b/Mage.Sets/src/mage/cards/w/WarkiteMarauder.java index 6ce6825f1dd..de5f5ca75f6 100644 --- a/Mage.Sets/src/mage/cards/w/WarkiteMarauder.java +++ b/Mage.Sets/src/mage/cards/w/WarkiteMarauder.java @@ -16,6 +16,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -45,7 +46,7 @@ public final class WarkiteMarauder extends CardImpl { .setText("target creature defending player controls loses all abilities"), false); ability.addEffect(new SetBasePowerToughnessTargetEffect(0, 1, Duration.EndOfTurn) .setText("and has base power and toughness 0/1 until end of turn")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WarpingWail.java b/Mage.Sets/src/mage/cards/w/WarpingWail.java index 88f62df69ea..32d44adf4fe 100644 --- a/Mage.Sets/src/mage/cards/w/WarpingWail.java +++ b/Mage.Sets/src/mage/cards/w/WarpingWail.java @@ -16,6 +16,7 @@ import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.ToughnessPredicate; import mage.game.permanent.token.EldraziScionToken; +import mage.target.TargetPermanent; import mage.target.TargetSpell; import mage.target.common.TargetCreaturePermanent; @@ -42,7 +43,7 @@ public final class WarpingWail extends CardImpl { Effect effect = new ExileTargetEffect(); effect.setText("Exile target creature with power or toughness 1 or less."); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterCreature)); + this.getSpellAbility().addTarget(new TargetPermanent(filterCreature)); // Counter target sorcery spell. Mode mode = new Mode(new CounterTargetEffect()); diff --git a/Mage.Sets/src/mage/cards/w/WatertrapWeaver.java b/Mage.Sets/src/mage/cards/w/WatertrapWeaver.java index 69117a4272b..baebf8288df 100644 --- a/Mage.Sets/src/mage/cards/w/WatertrapWeaver.java +++ b/Mage.Sets/src/mage/cards/w/WatertrapWeaver.java @@ -11,8 +11,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author TheElk801 @@ -30,7 +33,7 @@ public final class WatertrapWeaver extends CardImpl { // When Watertrap Weaver enters the battlefield, tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step. EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect()); ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("that creature")); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WavecrashTriton.java b/Mage.Sets/src/mage/cards/w/WavecrashTriton.java index 902c3bfb60d..20dde47ffdf 100644 --- a/Mage.Sets/src/mage/cards/w/WavecrashTriton.java +++ b/Mage.Sets/src/mage/cards/w/WavecrashTriton.java @@ -12,8 +12,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -30,7 +33,7 @@ public final class WavecrashTriton extends CardImpl { // Heroic - Whenever you cast a spell that targets Wavecrash Triton, tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step. Ability ability = new HeroicAbility(new TapTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("That creature")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WaytaTrainerProdigy.java b/Mage.Sets/src/mage/cards/w/WaytaTrainerProdigy.java index c7e7e20a89e..cf67c8fc49c 100644 --- a/Mage.Sets/src/mage/cards/w/WaytaTrainerProdigy.java +++ b/Mage.Sets/src/mage/cards/w/WaytaTrainerProdigy.java @@ -24,12 +24,15 @@ import mage.game.events.GameEvent; import mage.game.events.NumberOfTriggersEvent; import mage.game.permanent.Permanent; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; import java.util.UUID; +import static mage.filter.StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2; + /** * @@ -60,7 +63,7 @@ public final class WaytaTrainerProdigy extends CardImpl { ability.addTarget(controlledTarget); Target secondTarget = - new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2); + new TargetPermanent(FILTER_ANOTHER_CREATURE_TARGET_2).setTargetTag(2); ability.addTarget(secondTarget); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java b/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java index 6e9c4cc3ccd..fe7c2d46ba6 100644 --- a/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java +++ b/Mage.Sets/src/mage/cards/w/WeaverOfLightning.java @@ -11,8 +11,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -30,7 +33,7 @@ public final class WeaverOfLightning extends CardImpl { this.addAbility(ReachAbility.getInstance()); // Whenever you cast an instant or sorcery spell, Weaver of Lightning deals 1 damage to target creature an opponent controls. Ability ability = new SpellCastControllerTriggeredAbility(new DamageTargetEffect(1), StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WeedPrunerPoplar.java b/Mage.Sets/src/mage/cards/w/WeedPrunerPoplar.java index 7e337a7ab21..afcad218844 100644 --- a/Mage.Sets/src/mage/cards/w/WeedPrunerPoplar.java +++ b/Mage.Sets/src/mage/cards/w/WeedPrunerPoplar.java @@ -13,6 +13,7 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -36,7 +37,7 @@ public final class WeedPrunerPoplar extends CardImpl { // At the beginning of your upkeep, target creature other than Weed-Pruner Poplar gets -1/-1 until end of turn. Ability ability = new BeginningOfUpkeepTriggeredAbility(new BoostTargetEffect(-1, -1, Duration.EndOfTurn)); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java b/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java index 82797bc6f4d..19bd97e88bd 100644 --- a/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java +++ b/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java @@ -15,6 +15,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class WellgabberApothecary extends CardImpl { // {1}{W} : Prevent all damage that would be dealt to target tapped Merfolk or Kithkin creatuer this turn SimpleActivatedAbility ability = new SimpleActivatedAbility(new PreventDamageToTargetEffect(Duration.EndOfTurn, Integer.MAX_VALUE), new ManaCostsImpl<>("{1}{W}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WesternPaladin.java b/Mage.Sets/src/mage/cards/w/WesternPaladin.java index 1e814734d85..92a3545c42a 100644 --- a/Mage.Sets/src/mage/cards/w/WesternPaladin.java +++ b/Mage.Sets/src/mage/cards/w/WesternPaladin.java @@ -18,6 +18,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class WesternPaladin extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(3); Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{B}{B}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WhaleboneGlider.java b/Mage.Sets/src/mage/cards/w/WhaleboneGlider.java index c5fec2a8dc1..03492dbb68b 100644 --- a/Mage.Sets/src/mage/cards/w/WhaleboneGlider.java +++ b/Mage.Sets/src/mage/cards/w/WhaleboneGlider.java @@ -15,6 +15,7 @@ import mage.constants.ComparisonType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -41,7 +42,7 @@ public final class WhaleboneGlider extends CardImpl { new GenericManaCost(2) ); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WhiskAway.java b/Mage.Sets/src/mage/cards/w/WhiskAway.java index aeda1bc88c6..93de2b9e7bb 100644 --- a/Mage.Sets/src/mage/cards/w/WhiskAway.java +++ b/Mage.Sets/src/mage/cards/w/WhiskAway.java @@ -11,6 +11,7 @@ import mage.filter.common.FilterAttackingOrBlockingCreature; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -26,7 +27,7 @@ public final class WhiskAway extends CardImpl { // Put target attacking or blocking creature on top of its owner's library. this.getSpellAbility().addEffect(new WhiskAwayEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private WhiskAway(final WhiskAway card) { diff --git a/Mage.Sets/src/mage/cards/w/WildInstincts.java b/Mage.Sets/src/mage/cards/w/WildInstincts.java index eef26a7ebbf..eb6a829f5f3 100644 --- a/Mage.Sets/src/mage/cards/w/WildInstincts.java +++ b/Mage.Sets/src/mage/cards/w/WildInstincts.java @@ -12,9 +12,12 @@ import mage.constants.Duration; import mage.constants.TargetController; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE; + /** * * @author LevelX2 @@ -33,7 +36,7 @@ public final class WildInstincts extends CardImpl { "(Each deals damage equal to its power to the other.)"); getSpellAbility().addEffect(fightTargetsEffect); - getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE)); + getSpellAbility().addTarget(new TargetPermanent(FILTER_OPPONENTS_PERMANENT_CREATURE)); } private WildInstincts(final WildInstincts card) { diff --git a/Mage.Sets/src/mage/cards/w/WildernessHypnotist.java b/Mage.Sets/src/mage/cards/w/WildernessHypnotist.java index 795dd643a1c..f3a367217e3 100644 --- a/Mage.Sets/src/mage/cards/w/WildernessHypnotist.java +++ b/Mage.Sets/src/mage/cards/w/WildernessHypnotist.java @@ -17,6 +17,7 @@ import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class WildernessHypnotist extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(3); Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(-2, 0, Duration.EndOfTurn), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WildwoodMentor.java b/Mage.Sets/src/mage/cards/w/WildwoodMentor.java index 283575f1e72..2c7461131db 100644 --- a/Mage.Sets/src/mage/cards/w/WildwoodMentor.java +++ b/Mage.Sets/src/mage/cards/w/WildwoodMentor.java @@ -18,6 +18,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.permanent.AttackingPredicate; import mage.filter.predicate.permanent.TokenPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -59,7 +60,7 @@ public final class WildwoodMentor extends CardImpl { .setText("another target attacking creature gets +X/+X until end of turn, where X is {this}'s power"), false ); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WillowSatyr.java b/Mage.Sets/src/mage/cards/w/WillowSatyr.java index 21cfb6aff04..f77829df12c 100644 --- a/Mage.Sets/src/mage/cards/w/WillowSatyr.java +++ b/Mage.Sets/src/mage/cards/w/WillowSatyr.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -44,7 +45,7 @@ public final class WillowSatyr extends CardImpl { new GainControlTargetEffect(Duration.WhileControlled), SourceTappedCondition.TAPPED, "Gain control of target legendary creature for as long as you control {this} and {this} remains tapped" ), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WindswiftSlice.java b/Mage.Sets/src/mage/cards/w/WindswiftSlice.java index bb74bc96156..0c9751e1c7a 100644 --- a/Mage.Sets/src/mage/cards/w/WindswiftSlice.java +++ b/Mage.Sets/src/mage/cards/w/WindswiftSlice.java @@ -12,9 +12,12 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.ElfWarriorToken; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * * @author bwsinger @@ -28,7 +31,7 @@ public final class WindswiftSlice extends CardImpl { // Target creature you control deals damage equal to its power to target creature you don't control. Create a number of 1/1 green Elf Warrior creature tokens equal to the amount of excess damage dealt this way. this.getSpellAbility().addEffect(new WindswiftSliceEffect()); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); } private WindswiftSlice(final WindswiftSlice card) { diff --git a/Mage.Sets/src/mage/cards/w/WingPuncture.java b/Mage.Sets/src/mage/cards/w/WingPuncture.java index 8019f2b76ea..33c8f39bdcd 100644 --- a/Mage.Sets/src/mage/cards/w/WingPuncture.java +++ b/Mage.Sets/src/mage/cards/w/WingPuncture.java @@ -14,6 +14,7 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -34,7 +35,7 @@ public final class WingPuncture extends CardImpl { // Target creature you control deals damage equal to its power to target creature with flying. this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new WingPunctureEffect()); } diff --git a/Mage.Sets/src/mage/cards/w/WingSnare.java b/Mage.Sets/src/mage/cards/w/WingSnare.java index 2318052779d..f041ce1f5ea 100644 --- a/Mage.Sets/src/mage/cards/w/WingSnare.java +++ b/Mage.Sets/src/mage/cards/w/WingSnare.java @@ -9,6 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class WingSnare extends CardImpl { // Destroy target creature with flying. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private WingSnare(final WingSnare card) { diff --git a/Mage.Sets/src/mage/cards/w/WitchHunter.java b/Mage.Sets/src/mage/cards/w/WitchHunter.java index 6bf1516ecf8..c8b97743108 100644 --- a/Mage.Sets/src/mage/cards/w/WitchHunter.java +++ b/Mage.Sets/src/mage/cards/w/WitchHunter.java @@ -1,7 +1,5 @@ - package mage.cards.w; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -13,13 +11,12 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; -import mage.filter.StaticFilters; -import mage.target.common.TargetCreaturePermanent; +import mage.target.common.TargetOpponentsCreaturePermanent; import mage.target.common.TargetPlayerOrPlaneswalker; +import java.util.UUID; + /** - * * @author fireshoes */ public final class WitchHunter extends CardImpl { @@ -39,8 +36,7 @@ public final class WitchHunter extends CardImpl { // {1}{W}{W}, {tap}: Return target creature an opponent controls to its owner's hand. Ability returnAbility = new SimpleActivatedAbility(new ReturnToHandTargetEffect(), new ManaCostsImpl<>("{1}{W}{W}")); returnAbility.addCost(new TapSourceCost()); - TargetCreaturePermanent target = new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE); - returnAbility.addTarget(target); + returnAbility.addTarget(new TargetOpponentsCreaturePermanent()); this.addAbility(returnAbility); } diff --git a/Mage.Sets/src/mage/cards/w/Withdraw.java b/Mage.Sets/src/mage/cards/w/Withdraw.java index ca0d10c4a53..01666de77d1 100644 --- a/Mage.Sets/src/mage/cards/w/Withdraw.java +++ b/Mage.Sets/src/mage/cards/w/Withdraw.java @@ -16,6 +16,7 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.target.targetpointer.FixedTarget; import mage.util.ManaUtil; @@ -32,13 +33,13 @@ public final class Withdraw extends CardImpl { // Return target creature to its owner's hand. Then return another target creature to its owner's hand unless its controller pays {1}. this.getSpellAbility().addEffect(new WithdrawEffect()); - Target target = new TargetCreaturePermanent(new FilterCreaturePermanent("creature to return unconditionally")); + Target target = new TargetPermanent(new FilterCreaturePermanent("creature to return unconditionally")); target.setTargetTag(1); this.getSpellAbility().addTarget(target); FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature to return unless {1} is paid"); filter.add(new AnotherTargetPredicate(2)); - target = new TargetCreaturePermanent(filter); + target = new TargetPermanent(filter); target.setTargetTag(2); this.getSpellAbility().addTarget(target); } diff --git a/Mage.Sets/src/mage/cards/w/WolfStrike.java b/Mage.Sets/src/mage/cards/w/WolfStrike.java index 6a7e7288350..552c59514e2 100644 --- a/Mage.Sets/src/mage/cards/w/WolfStrike.java +++ b/Mage.Sets/src/mage/cards/w/WolfStrike.java @@ -13,9 +13,12 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.filter.StaticFilters; import mage.game.Game; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL; + /** * * @author weirddan455 @@ -28,7 +31,7 @@ public final class WolfStrike extends CardImpl { // Target creature you control gets +2/+0 until end of turn if it's night. // Then it deals damage equal to its power to target creature you don't control. this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL)); + this.getSpellAbility().addTarget(new TargetPermanent(FILTER_CREATURE_YOU_DONT_CONTROL)); this.getSpellAbility().addEffect(new WolfStikeEffect()); this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect("it").concatBy("Then")); } diff --git a/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java b/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java index 192954a6937..aa094c3e46a 100644 --- a/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java +++ b/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java @@ -14,6 +14,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetAnyTarget; import mage.target.common.TargetCreaturePermanent; @@ -42,7 +43,7 @@ public final class WolfhuntersQuiver extends CardImpl { // and "{T}: This creature deals 3 damage to target Werewolf creature." abilityToGain = new SimpleActivatedAbility(new DamageTargetEffect(3), new TapSourceCost()); - abilityToGain.addTarget(new TargetCreaturePermanent(filter)); + abilityToGain.addTarget(new TargetPermanent(filter)); effect = new GainAbilityAttachedEffect(abilityToGain, AttachmentType.EQUIPMENT); effect.setText("and \"{T}: This creature deals 3 damage to target Werewolf creature.\""); ability.addEffect(effect); diff --git a/Mage.Sets/src/mage/cards/w/WookieeRaidleader.java b/Mage.Sets/src/mage/cards/w/WookieeRaidleader.java index 55e00ec7391..d783d02f98b 100644 --- a/Mage.Sets/src/mage/cards/w/WookieeRaidleader.java +++ b/Mage.Sets/src/mage/cards/w/WookieeRaidleader.java @@ -13,8 +13,11 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_ANOTHER_TARGET_CREATURE; + /** * * @author Styxo @@ -30,7 +33,7 @@ public final class WookieeRaidleader extends CardImpl { // Whenever Wookiee Raidleader attacks, antoher target creature gains trample until end of turn Ability ability = new AttacksTriggeredAbility(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn), false); - ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE)); + ability.addTarget(new TargetPermanent(FILTER_ANOTHER_TARGET_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/Wrangle.java b/Mage.Sets/src/mage/cards/w/Wrangle.java index ec9db18fbfa..e3503135c8c 100644 --- a/Mage.Sets/src/mage/cards/w/Wrangle.java +++ b/Mage.Sets/src/mage/cards/w/Wrangle.java @@ -14,6 +14,7 @@ import mage.constants.ComparisonType; import mage.constants.Duration; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -32,7 +33,7 @@ public final class Wrangle extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}"); // Gain control of target creature with power 4 or less until end of turn. Untap that creature. It gains haste until end of turn. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn)); Effect effect = new UntapTargetEffect(); effect.setText("Untap that creature"); diff --git a/Mage.Sets/src/mage/cards/w/WurmweaverCoil.java b/Mage.Sets/src/mage/cards/w/WurmweaverCoil.java index 0b005173f1c..9fdb0c32ae8 100644 --- a/Mage.Sets/src/mage/cards/w/WurmweaverCoil.java +++ b/Mage.Sets/src/mage/cards/w/WurmweaverCoil.java @@ -41,7 +41,7 @@ public final class WurmweaverCoil extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}{G}"); this.subtype.add(SubType.AURA); - TargetPermanent auraTarget = new TargetCreaturePermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(filter); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Benefit)); Ability ability = new EnchantAbility(auraTarget); diff --git a/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java b/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java index 165c9c2c20e..6e6c1848776 100644 --- a/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java +++ b/Mage.Sets/src/mage/cards/y/YasovaDragonclaw.java @@ -25,6 +25,7 @@ import mage.filter.predicate.ObjectSourcePlayer; import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -57,7 +58,7 @@ public final class YasovaDragonclaw extends CardImpl { effect.addEffect(effect2); effect.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn, ", and it gains haste until end of turn")); Ability ability = new BeginningOfCombatTriggeredAbility(effect); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/z/ZaskSkitteringSwarmlord.java b/Mage.Sets/src/mage/cards/z/ZaskSkitteringSwarmlord.java index 856abc25f6e..92206d080d9 100644 --- a/Mage.Sets/src/mage/cards/z/ZaskSkitteringSwarmlord.java +++ b/Mage.Sets/src/mage/cards/z/ZaskSkitteringSwarmlord.java @@ -18,6 +18,7 @@ import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -65,7 +66,7 @@ public final class ZaskSkitteringSwarmlord extends CardImpl { ); ability2.addEffect(new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn) .setText(" and gains deathtouch until end of turn")); - ability2.addTarget(new TargetCreaturePermanent(filter3)); + ability2.addTarget(new TargetPermanent(filter3)); this.addAbility(ability2); } diff --git a/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java b/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java index 516b3c24a85..e22f33026ba 100644 --- a/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java +++ b/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java @@ -15,6 +15,7 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -40,7 +41,7 @@ public final class ZhalfirinCommander extends CardImpl { this.addAbility(new FlankingAbility()); // {1}{W}{W}: Target Knight creature gets +1/+1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}{W}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/z/ZombieAssassin.java b/Mage.Sets/src/mage/cards/z/ZombieAssassin.java index d5ef339caf1..4fea3ce2bf8 100644 --- a/Mage.Sets/src/mage/cards/z/ZombieAssassin.java +++ b/Mage.Sets/src/mage/cards/z/ZombieAssassin.java @@ -15,9 +15,12 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCreaturePermanent; +import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK; + /** * * @author cbt33 @@ -33,7 +36,7 @@ public final class ZombieAssassin extends CardImpl { // {tap}, Exile two cards from your graveyard and Zombie Assassin: Destroy target nonblack creature. It can't be regenerated. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(true), new TapSourceCost()); - Target target = new TargetCreaturePermanent(StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK); + Target target = new TargetPermanent(FILTER_PERMANENT_CREATURE_NON_BLACK); ability.addTarget(target); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2,2,StaticFilters.FILTER_CARDS_FROM_YOUR_GRAVEYARD))); ability.addCost(new ExileSourceCost()); diff --git a/Mage/src/main/java/mage/abilities/common/AnimateDeadTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/AnimateDeadTriggeredAbility.java index daaf7e7359d..f81d85be913 100644 --- a/Mage/src/main/java/mage/abilities/common/AnimateDeadTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/AnimateDeadTriggeredAbility.java @@ -16,16 +16,12 @@ import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; import mage.target.targetpointer.FixedTarget; import mage.util.CardUtil; import mage.watchers.Watcher; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.UUID; +import java.util.*; /** * @author LevelX2, awjackson @@ -66,13 +62,13 @@ class AnimateDeadReplaceAbilityEffect extends ContinuousEffectImpl { private final boolean becomesAura; private Ability newAbility; - private TargetCreaturePermanent newTarget; + private TargetPermanent newTarget; public AnimateDeadReplaceAbilityEffect(boolean becomesAura) { super(Duration.Custom, Outcome.AddAbility); this.becomesAura = becomesAura; staticText = (becomesAura ? "it becomes an Aura with" : - "it loses \"enchant creature card in a graveyard\" and gains" + "it loses \"enchant creature card in a graveyard\" and gains" ) + " \"enchant creature put onto the battlefield with {this}.\""; if (becomesAura) { dependencyTypes.add(DependencyType.AuraAddingRemoving); @@ -98,7 +94,7 @@ class AnimateDeadReplaceAbilityEffect extends ContinuousEffectImpl { FilterCreaturePermanent filter = new FilterCreaturePermanent("creature put onto the battlefield with {this}"); filter.add(new AnimateDeadPredicate(source.getSourceId())); - newTarget = new TargetCreaturePermanent(filter); + newTarget = new TargetPermanent(filter); newAbility = new EnchantAbility(newTarget); } diff --git a/Mage/src/main/java/mage/abilities/common/BecomesAuraAttachToManifestSourceEffect.java b/Mage/src/main/java/mage/abilities/common/BecomesAuraAttachToManifestSourceEffect.java index ccf51904b2b..f0f9a747137 100644 --- a/Mage/src/main/java/mage/abilities/common/BecomesAuraAttachToManifestSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/common/BecomesAuraAttachToManifestSourceEffect.java @@ -12,6 +12,7 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; @@ -47,7 +48,7 @@ public class BecomesAuraAttachToManifestSourceEffect extends OneShotEffect { if (enchantedCreature != null) { enchantedCreature.addAttachment(enchantment.getId(), source, game); FilterCreaturePermanent filter = new FilterCreaturePermanent(); - Target target = new TargetCreaturePermanent(filter); + Target target = new TargetPermanent(filter); target.addTarget(enchantedCreature.getId(), source, game); game.addEffect(new BecomesAuraSourceEffect(target), source); } diff --git a/Mage/src/main/java/mage/abilities/keyword/MentorAbility.java b/Mage/src/main/java/mage/abilities/keyword/MentorAbility.java index 7938ccdc3d7..efb24b269e3 100644 --- a/Mage/src/main/java/mage/abilities/keyword/MentorAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/MentorAbility.java @@ -13,6 +13,7 @@ import mage.filter.predicate.permanent.AttackingPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public class MentorAbility extends AttacksTriggeredAbility { public MentorAbility() { super(new MentorEffect(), false); - this.addTarget(new TargetCreaturePermanent(filter)); + this.addTarget(new TargetPermanent(filter)); } protected MentorAbility(final MentorAbility ability) { diff --git a/Mage/src/main/java/mage/abilities/keyword/ProvokeAbility.java b/Mage/src/main/java/mage/abilities/keyword/ProvokeAbility.java index 4d7bd7f0dd6..7c068c514b4 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ProvokeAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ProvokeAbility.java @@ -1,8 +1,6 @@ package mage.abilities.keyword; -import java.util.UUID; - import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.effects.RequirementEffect; @@ -13,7 +11,9 @@ import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; + +import java.util.UUID; /** * 702.38. Provoke 702.38a Provoke is a triggered ability. “Provoke” means @@ -46,8 +46,7 @@ public class ProvokeAbility extends AttacksTriggeredAbility { UUID defendingPlayerId = game.getCombat().getDefendingPlayerId(sourceId, game); filter.add(new ControllerIdPredicate(defendingPlayerId)); this.getTargets().clear(); - TargetCreaturePermanent target = new TargetCreaturePermanent(filter); - this.addTarget(target); + this.addTarget(new TargetPermanent(filter)); return true; } return false; diff --git a/Mage/src/main/java/mage/game/command/planes/AkoumPlane.java b/Mage/src/main/java/mage/game/command/planes/AkoumPlane.java index bcf839a0580..a1892cf8a57 100644 --- a/Mage/src/main/java/mage/game/command/planes/AkoumPlane.java +++ b/Mage/src/main/java/mage/game/command/planes/AkoumPlane.java @@ -16,6 +16,7 @@ import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.EnchantedPredicate; import mage.game.command.Plane; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; import mage.watchers.common.PlanarRollWatcher; @@ -44,7 +45,7 @@ public class AkoumPlane extends Plane { // Active player can roll the planar die: Whenever you roll {CHAOS}, destroy target creature that isn't enchanted Effect chaosEffect = new DestroyTargetEffect("destroy target creature that isn't enchanted"); - Target chaosTarget = new TargetCreaturePermanent(filter); + Target chaosTarget = new TargetPermanent(filter); List chaosEffects = new ArrayList(); chaosEffects.add(chaosEffect); diff --git a/Mage/src/main/java/mage/game/permanent/token/LandMineToken.java b/Mage/src/main/java/mage/game/permanent/token/LandMineToken.java index 7ca06d55e7c..f0da2b9fd4a 100644 --- a/Mage/src/main/java/mage/game/permanent/token/LandMineToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/LandMineToken.java @@ -11,6 +11,7 @@ import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -29,7 +30,7 @@ public final class LandMineToken extends TokenImpl { cardType.add(CardType.ARTIFACT); Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2), new ManaCostsImpl<>("{R}")); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage/src/main/java/mage/target/common/TargetCreaturePermanent.java b/Mage/src/main/java/mage/target/common/TargetCreaturePermanent.java index b6625374533..17efca5ae8d 100644 --- a/Mage/src/main/java/mage/target/common/TargetCreaturePermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetCreaturePermanent.java @@ -1,7 +1,6 @@ package mage.target.common; import mage.filter.StaticFilters; -import mage.filter.common.FilterCreaturePermanent; import mage.target.TargetPermanent; /** @@ -13,10 +12,6 @@ public class TargetCreaturePermanent extends TargetPermanent { this(1); } - public TargetCreaturePermanent(FilterCreaturePermanent filter) { - super(1, 1, filter, false); - } - public TargetCreaturePermanent(int numTargets) { this(numTargets, numTargets); }