diff --git a/Mage.Sets/src/mage/cards/a/AccursedHorde.java b/Mage.Sets/src/mage/cards/a/AccursedHorde.java index 1d88002818d..17ddc940dea 100644 --- a/Mage.Sets/src/mage/cards/a/AccursedHorde.java +++ b/Mage.Sets/src/mage/cards/a/AccursedHorde.java @@ -1,7 +1,6 @@ package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -15,10 +14,11 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author fireshoes */ public final class AccursedHorde extends CardImpl { @@ -38,7 +38,7 @@ public final class AccursedHorde extends CardImpl { // {1}{B}: Target attacking Zombie gains indestructible until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{1}{B}")); - ability.addTarget(new TargetAttackingCreature(1, 1, filter, false)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AerialGuide.java b/Mage.Sets/src/mage/cards/a/AerialGuide.java index 11e1ffbad40..11111cde75a 100644 --- a/Mage.Sets/src/mage/cards/a/AerialGuide.java +++ b/Mage.Sets/src/mage/cards/a/AerialGuide.java @@ -1,7 +1,6 @@ package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; @@ -14,10 +13,11 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.AnotherPredicate; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author ciaccona007 */ public final class AerialGuide extends CardImpl { @@ -27,11 +27,11 @@ public final class AerialGuide extends CardImpl { static { filter.add(AnotherPredicate.instance); } - + public AerialGuide(UUID ownerId, CardSetInfo setInfo) { - + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}"); - + this.subtype.add(SubType.DRAKE); this.power = new MageInt(2); this.toughness = new MageInt(2); @@ -41,9 +41,9 @@ public final class AerialGuide extends CardImpl { // Whenever Aerial Guide attacks, another target attacking creature gains flying until end of turn. Ability ability = new AttacksTriggeredAbility(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), false); - ability.addTarget(new TargetAttackingCreature(1, 1, filter, false)); + ability.addTarget(new TargetPermanent(filter)); addAbility(ability); - + } private AerialGuide(final AerialGuide card) { diff --git a/Mage.Sets/src/mage/cards/a/AloraMerryThief.java b/Mage.Sets/src/mage/cards/a/AloraMerryThief.java new file mode 100644 index 00000000000..c45d14fe638 --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/AloraMerryThief.java @@ -0,0 +1,58 @@ +package mage.cards.a; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksWithCreaturesTriggeredAbility; +import mage.abilities.common.ChooseABackgroundAbility; +import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; +import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; +import mage.abilities.effects.common.ReturnToHandTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.target.common.TargetAttackingCreature; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class AloraMerryThief extends CardImpl { + + public AloraMerryThief(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.HALFLING); + this.subtype.add(SubType.ROGUE); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // Whenever you attack, up to one target attacking creature can't be blocked this turn. Return that creature to its owner's hand at the beginning of the next end step. + Ability ability = new AttacksWithCreaturesTriggeredAbility( + new CantBeBlockedTargetEffect(Duration.EndOfTurn), 1 + ); + ability.addEffect(new CreateDelayedTriggeredAbilityEffect( + new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnToHandTargetEffect() + .setText("return that creature to its owner's hand")), true + ).setText("Return that creature to its owner's hand at the beginning of the next end step")); + ability.addTarget(new TargetAttackingCreature(0, 1)); + this.addAbility(ability); + + // Choose a Background + this.addAbility(ChooseABackgroundAbility.getInstance()); + } + + private AloraMerryThief(final AloraMerryThief card) { + super(card); + } + + @Override + public AloraMerryThief copy() { + return new AloraMerryThief(this); + } +} diff --git a/Mage.Sets/src/mage/cards/b/BalduvianWarlord.java b/Mage.Sets/src/mage/cards/b/BalduvianWarlord.java index 51276efd26e..43aa8dba258 100644 --- a/Mage.Sets/src/mage/cards/b/BalduvianWarlord.java +++ b/Mage.Sets/src/mage/cards/b/BalduvianWarlord.java @@ -22,7 +22,6 @@ import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetPermanent; -import mage.target.common.TargetAttackingCreature; import mage.watchers.common.BlockedByOnlyOneCreatureThisCombatWatcher; import java.util.*; @@ -114,7 +113,8 @@ class BalduvianWarlordUnblockEffect extends OneShotEffect { if (targetsController != null) { FilterAttackingCreature filter = new FilterAttackingCreature("creature attacking " + targetsController.getLogName()); filter.add(new PermanentInListPredicate(list)); - TargetAttackingCreature target = new TargetAttackingCreature(1, 1, filter, true); + TargetPermanent target = new TargetPermanent(filter); + target.setNotTarget(true); if (target.canChoose(controller.getId(), source, game)) { while (!target.isChosen() && target.canChoose(controller.getId(), source, game) && controller.canRespond()) { controller.chooseTarget(outcome, target, source, game); diff --git a/Mage.Sets/src/mage/cards/b/BazaarKrovod.java b/Mage.Sets/src/mage/cards/b/BazaarKrovod.java index 50e59ffe4b2..0e44964ab4d 100644 --- a/Mage.Sets/src/mage/cards/b/BazaarKrovod.java +++ b/Mage.Sets/src/mage/cards/b/BazaarKrovod.java @@ -1,6 +1,5 @@ package mage.cards.b; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; @@ -13,10 +12,11 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.AnotherPredicate; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author jeffwadsworth */ public final class BazaarKrovod extends CardImpl { @@ -28,7 +28,7 @@ public final class BazaarKrovod extends CardImpl { } public BazaarKrovod(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}"); this.subtype.add(SubType.BEAST); this.power = new MageInt(2); @@ -37,7 +37,7 @@ public final class BazaarKrovod extends CardImpl { // Whenever Bazaar Krovod attacks, another target attacking creature gets +0/+2 until end of turn. Untap that creature. Ability ability = new AttacksTriggeredAbility(new BoostTargetEffect(0, 2, Duration.EndOfTurn), false); ability.addEffect(new UntapTargetEffect().setText("Untap that creature")); - ability.addTarget(new TargetAttackingCreature(1, 1, filter, false)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CommandOfUnsummoning.java b/Mage.Sets/src/mage/cards/c/CommandOfUnsummoning.java index f59e145e59c..bf5976b585f 100644 --- a/Mage.Sets/src/mage/cards/c/CommandOfUnsummoning.java +++ b/Mage.Sets/src/mage/cards/c/CommandOfUnsummoning.java @@ -1,7 +1,6 @@ package mage.cards.c; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility; import mage.abilities.condition.common.AttackedThisStepCondition; @@ -11,12 +10,12 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.PhaseStep; import mage.constants.TurnPhase; -import mage.filter.common.FilterAttackingCreature; import mage.target.common.TargetAttackingCreature; import mage.watchers.common.PlayerAttackedStepWatcher; +import java.util.UUID; + /** - * * @author TheElk801 */ public final class CommandOfUnsummoning extends CardImpl { @@ -34,7 +33,7 @@ public final class CommandOfUnsummoning extends CardImpl { // Return one or two target attacking creatures to their owner's hand. this.getSpellAbility().addEffect(new ReturnToHandTargetEffect().setText("Return one or two target attacking creatures to their owner's hand.")); - this.getSpellAbility().addTarget(new TargetAttackingCreature(1, 2, new FilterAttackingCreature(), false)); + this.getSpellAbility().addTarget(new TargetAttackingCreature(1, 2)); } private CommandOfUnsummoning(final CommandOfUnsummoning card) { diff --git a/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java b/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java index b1637f09f63..b98f5e620a9 100644 --- a/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java +++ b/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java @@ -1,6 +1,5 @@ package mage.cards.c; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -14,10 +13,11 @@ import mage.constants.ColoredManaSymbol; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class CrossroadsConsecrator extends CardImpl { @@ -29,7 +29,7 @@ public final class CrossroadsConsecrator extends CardImpl { } public CrossroadsConsecrator(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.CLERIC); this.power = new MageInt(1); @@ -37,7 +37,7 @@ public final class CrossroadsConsecrator extends CardImpl { // {G}, {T}: Target attacking Human gets +1/+1 until end of turn. Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn), new ColoredManaCost(ColoredManaSymbol.G)); - ability.addTarget(new TargetAttackingCreature(1, 1, filter, false)); + ability.addTarget(new TargetPermanent(filter)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FalseOrders.java b/Mage.Sets/src/mage/cards/f/FalseOrders.java index b97db6b90df..64e9ecc0ce0 100644 --- a/Mage.Sets/src/mage/cards/f/FalseOrders.java +++ b/Mage.Sets/src/mage/cards/f/FalseOrders.java @@ -24,7 +24,6 @@ import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetPermanent; -import mage.target.common.TargetAttackingCreature; import mage.watchers.common.BlockedByOnlyOneCreatureThisCombatWatcher; import java.util.*; @@ -138,7 +137,8 @@ class FalseOrdersUnblockEffect extends OneShotEffect { } FilterAttackingCreature filter = new FilterAttackingCreature("creature attacking " + targetsController.getLogName()); filter.add(new PermanentInListPredicate(list)); - TargetAttackingCreature target = new TargetAttackingCreature(1, 1, filter, true); + TargetPermanent target = new TargetPermanent(filter); + target.setNotTarget(true); if (target.canChoose(controller.getId(), source, game)) { while (!target.isChosen() && target.canChoose(controller.getId(), source, game) && controller.canRespond()) { controller.chooseTarget(outcome, target, source, game); diff --git a/Mage.Sets/src/mage/cards/m/MazeOfShadows.java b/Mage.Sets/src/mage/cards/m/MazeOfShadows.java index 5265b2dcfe7..36b3709f7e2 100644 --- a/Mage.Sets/src/mage/cards/m/MazeOfShadows.java +++ b/Mage.Sets/src/mage/cards/m/MazeOfShadows.java @@ -1,7 +1,6 @@ package mage.cards.m; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; @@ -18,21 +17,23 @@ import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.AbilityPredicate; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author emerald000 */ public final class MazeOfShadows extends CardImpl { - + private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with shadow"); + static { filter.add(new AbilityPredicate(ShadowAbility.class)); } public MazeOfShadows(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.LAND},""); + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); // {tap}: Add {C}. this.addAbility(new ColorlessManaAbility()); @@ -45,7 +46,7 @@ public final class MazeOfShadows extends CardImpl { effect = new PreventDamageToTargetEffect(Duration.EndOfTurn, Integer.MAX_VALUE, true); effect.setText("and dealt by that creature this turn"); ability.addEffect(effect); - ability.addTarget(new TargetAttackingCreature(1, 1, filter, false)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PegasusCourser.java b/Mage.Sets/src/mage/cards/p/PegasusCourser.java index f593ca328d8..4ba97bf6cd9 100644 --- a/Mage.Sets/src/mage/cards/p/PegasusCourser.java +++ b/Mage.Sets/src/mage/cards/p/PegasusCourser.java @@ -1,23 +1,23 @@ package mage.cards.p; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; -import mage.constants.SubType; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.AnotherPredicate; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author TheElk801 */ public final class PegasusCourser extends CardImpl { @@ -40,7 +40,7 @@ public final class PegasusCourser extends CardImpl { // Whenever Pegasus Courser attacks, another target attacking creature gains flying until end of turn. Ability ability = new AttacksTriggeredAbility(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), false); - ability.addTarget(new TargetAttackingCreature(1, 1, filter, false)); + ability.addTarget(new TargetPermanent(filter)); addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PitTrap.java b/Mage.Sets/src/mage/cards/p/PitTrap.java index 3204e9eda03..bf3e8d622ed 100644 --- a/Mage.Sets/src/mage/cards/p/PitTrap.java +++ b/Mage.Sets/src/mage/cards/p/PitTrap.java @@ -1,6 +1,5 @@ package mage.cards.p; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; @@ -15,28 +14,29 @@ import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author fireshoes */ public final class PitTrap extends CardImpl { - + private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature without flying"); - + static { filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } public PitTrap(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); // {2}, {tap}, Sacrifice Pit Trap: Destroy target attacking creature without flying. It can't be regenerated. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(true), new GenericManaCost(2)); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetAttackingCreature(1, 1, filter, false)); + ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PitfallTrap.java b/Mage.Sets/src/mage/cards/p/PitfallTrap.java index 72ee7f16cf7..18a6f9e0021 100644 --- a/Mage.Sets/src/mage/cards/p/PitfallTrap.java +++ b/Mage.Sets/src/mage/cards/p/PitfallTrap.java @@ -15,12 +15,11 @@ import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; import java.util.UUID; /** - * * @author jeffwadsworth */ public final class PitfallTrap extends CardImpl { @@ -32,7 +31,7 @@ public final class PitfallTrap extends CardImpl { } public PitfallTrap(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}"); this.subtype.add(SubType.TRAP); // If exactly one creature is attacking, you may pay {W} rather than pay Pitfall Trap's mana cost. @@ -40,7 +39,7 @@ public final class PitfallTrap extends CardImpl { // Destroy target attacking creature without flying. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetAttackingCreature(1, 1, filter, false)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private PitfallTrap(final PitfallTrap card) { @@ -55,7 +54,7 @@ public final class PitfallTrap extends CardImpl { enum PitfallTrapCondition implements Condition { - instance; + instance; @Override public boolean apply(Game game, Ability source) { diff --git a/Mage.Sets/src/mage/cards/r/ResoundingSilence.java b/Mage.Sets/src/mage/cards/r/ResoundingSilence.java index ff073a50df7..ffab78300fe 100644 --- a/Mage.Sets/src/mage/cards/r/ResoundingSilence.java +++ b/Mage.Sets/src/mage/cards/r/ResoundingSilence.java @@ -1,6 +1,5 @@ package mage.cards.r; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.CycleTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; @@ -13,14 +12,15 @@ import mage.filter.StaticFilters; import mage.target.TargetPermanent; import mage.target.common.TargetAttackingCreature; +import java.util.UUID; + /** - * * @author Plopman */ public final class ResoundingSilence extends CardImpl { public ResoundingSilence(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}"); // Exile target attacking creature. this.getSpellAbility().addEffect(new ExileTargetEffect()); @@ -29,8 +29,7 @@ public final class ResoundingSilence extends CardImpl { this.addAbility(new CyclingAbility(new ManaCostsImpl("{5}{G}{W}{U}"))); // When you cycle Resounding Silence, exile up to two target attacking creatures. Ability ability = new CycleTriggeredAbility(new ExileTargetEffect()); - TargetPermanent target = new TargetAttackingCreature(0, 2, StaticFilters.FILTER_ATTACKING_CREATURES, false); - ability.addTarget(target); + ability.addTarget(new TargetPermanent(0, 2, StaticFilters.FILTER_ATTACKING_CREATURES)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SlingbowTrap.java b/Mage.Sets/src/mage/cards/s/SlingbowTrap.java index ec484ad2096..c154c89ccdf 100644 --- a/Mage.Sets/src/mage/cards/s/SlingbowTrap.java +++ b/Mage.Sets/src/mage/cards/s/SlingbowTrap.java @@ -15,7 +15,7 @@ import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.game.Game; import mage.game.permanent.Permanent; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; import java.util.UUID; @@ -39,7 +39,7 @@ public final class SlingbowTrap extends CardImpl { // Destroy target attacking creature with flying. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetAttackingCreature(1, 1, filter, false)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private SlingbowTrap(final SlingbowTrap card) { diff --git a/Mage.Sets/src/mage/cards/t/TerashisVerdict.java b/Mage.Sets/src/mage/cards/t/TerashisVerdict.java index 606b7cfadb0..891fe90ff11 100644 --- a/Mage.Sets/src/mage/cards/t/TerashisVerdict.java +++ b/Mage.Sets/src/mage/cards/t/TerashisVerdict.java @@ -1,19 +1,19 @@ package mage.cards.t; -import java.util.UUID; import mage.abilities.effects.common.DestroyTargetEffect; 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.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.PowerPredicate; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author Loki */ public final class TerashisVerdict extends CardImpl { @@ -25,12 +25,12 @@ public final class TerashisVerdict extends CardImpl { } public TerashisVerdict(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}"); this.subtype.add(SubType.ARCANE); // Destroy target attacking creature with power 3 or less. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetAttackingCreature(1, 1, filter, false)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); } private TerashisVerdict(final TerashisVerdict card) { diff --git a/Mage.Sets/src/mage/cards/t/TrapDigger.java b/Mage.Sets/src/mage/cards/t/TrapDigger.java index e6057710c7f..b9e8dbaff12 100644 --- a/Mage.Sets/src/mage/cards/t/TrapDigger.java +++ b/Mage.Sets/src/mage/cards/t/TrapDigger.java @@ -1,7 +1,6 @@ package mage.cards.t; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -21,11 +20,12 @@ import mage.filter.common.FilterAttackingCreature; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; -import mage.target.common.TargetAttackingCreature; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; +import java.util.UUID; + /** - * * @author LoneFox */ public final class TrapDigger extends CardImpl { @@ -39,7 +39,7 @@ public final class TrapDigger extends CardImpl { } public TrapDigger(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.SOLDIER); this.power = new MageInt(1); @@ -52,7 +52,7 @@ public final class TrapDigger extends CardImpl { this.addAbility(ability); // Sacrifice a land with a trap counter on it: Trap Digger deals 3 damage to target attacking creature without flying. ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new SacrificeTargetCost(new TargetControlledPermanent(filter1))); - ability.addTarget(new TargetAttackingCreature(1, 1, filter2, false)); + ability.addTarget(new TargetPermanent(filter2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java index a9416008ce9..95373a2c803 100644 --- a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java +++ b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java @@ -23,6 +23,7 @@ public final class CommanderLegendsBattleForBaldursGate extends ExpansionSet { cards.add(new SetCardInfo("Aarakocra Sneak", 54, Rarity.COMMON, mage.cards.a.AarakocraSneak.class)); cards.add(new SetCardInfo("Agent of the Iron Throne", 107, Rarity.UNCOMMON, mage.cards.a.AgentOfTheIronThrone.class)); + cards.add(new SetCardInfo("Alora, Merry Thief", 55, Rarity.UNCOMMON, mage.cards.a.AloraMerryThief.class)); cards.add(new SetCardInfo("Ambition's Cost", 110, Rarity.UNCOMMON, mage.cards.a.AmbitionsCost.class)); cards.add(new SetCardInfo("Ancient Brass Dragon", 111, Rarity.MYTHIC, mage.cards.a.AncientBrassDragon.class)); cards.add(new SetCardInfo("Arcane Encyclopedia", 297, Rarity.UNCOMMON, mage.cards.a.ArcaneEncyclopedia.class)); diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index 5abcea8d9ab..ae1d7721b67 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -885,6 +885,12 @@ public final class StaticFilters { FILTER_CREATURE_TOKENS.setLockedFilter(true); } + public static final FilterAttackingCreature FILTER_ATTACKING_CREATURE = new FilterAttackingCreature(); + + static { + FILTER_ATTACKING_CREATURE.setLockedFilter(true); + } + public static final FilterAttackingCreature FILTER_ATTACKING_CREATURES = new FilterAttackingCreature("attacking creatures"); static { diff --git a/Mage/src/main/java/mage/target/common/TargetAttackingCreature.java b/Mage/src/main/java/mage/target/common/TargetAttackingCreature.java index 3f1892b6ab0..691d6b122df 100644 --- a/Mage/src/main/java/mage/target/common/TargetAttackingCreature.java +++ b/Mage/src/main/java/mage/target/common/TargetAttackingCreature.java @@ -1,26 +1,23 @@ - - package mage.target.common; -import mage.filter.common.FilterAttackingCreature; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; /** - * * @author BetaSteward_at_googlemail.com */ public class TargetAttackingCreature extends TargetPermanent { public TargetAttackingCreature() { - this(1, 1, new FilterAttackingCreature(), false); - } - - public TargetAttackingCreature(int numTargets) { - this(numTargets, numTargets, new FilterAttackingCreature(), false); + this(1); } - public TargetAttackingCreature(int minNumTargets, int maxNumTargets, FilterAttackingCreature filter, boolean notTarget) { - super(minNumTargets, maxNumTargets, filter, notTarget); + public TargetAttackingCreature(int numTargets) { + this(numTargets, numTargets); + } + + public TargetAttackingCreature(int minNumTargets, int maxNumTargets) { + super(minNumTargets, maxNumTargets, StaticFilters.FILTER_ATTACKING_CREATURE, false); } public TargetAttackingCreature(final TargetAttackingCreature target) { @@ -31,5 +28,4 @@ public class TargetAttackingCreature extends TargetPermanent { public TargetAttackingCreature copy() { return new TargetAttackingCreature(this); } - }