remove filter constructors for TargetArtifactPermanent

This commit is contained in:
theelk801 2025-05-27 07:49:43 -04:00 committed by Failure
parent 38bc1bbb20
commit c9f7e916e4
17 changed files with 73 additions and 85 deletions

View file

@ -1,17 +1,17 @@
package mage.cards.c;
import java.util.UUID;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.common.FilterArtifactPermanent;
import mage.filter.predicate.Predicates;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author North
*/
public final class Crush extends CardImpl {
@ -23,10 +23,10 @@ public final class Crush extends CardImpl {
}
public Crush(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
this.getSpellAbility().addTarget(new TargetArtifactPermanent(filter));
this.getSpellAbility().addTarget(new TargetPermanent(filter));
this.getSpellAbility().addEffect(new DestroyTargetEffect());
}

View file

@ -7,6 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.common.FilterArtifactPermanent;
import mage.target.TargetPermanent;
import mage.target.common.TargetArtifactPermanent;
import mage.target.targetadjustment.XManaValueTargetAdjuster;
@ -22,7 +23,7 @@ public final class Detonate extends CardImpl {
// Destroy target artifact with converted mana cost X. It can't be regenerated. Detonate deals X damage to that artifact's controller.
this.getSpellAbility().addEffect(new DestroyTargetEffect(true));
this.getSpellAbility().addTarget(new TargetArtifactPermanent(new FilterArtifactPermanent("artifact with mana value X")));
this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent("artifact with mana value X")));
this.getSpellAbility().addEffect(new DamageTargetControllerEffect(GetXValue.instance, "artifact"));
this.getSpellAbility().addTarget(new TargetArtifactPermanent());
this.getSpellAbility().setTargetAdjuster(new XManaValueTargetAdjuster());

View file

@ -1,26 +1,24 @@
package mage.cards.d;
import java.util.UUID;
import mage.abilities.effects.common.ExileTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.common.FilterArtifactPermanent;
import mage.target.common.TargetArtifactPermanent;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class DustToDust extends CardImpl {
public DustToDust(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}{W}");
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}{W}");
// Exile two target artifacts.
this.getSpellAbility().addEffect(new ExileTargetEffect());
this.getSpellAbility().addTarget(new TargetArtifactPermanent(2, 2, new FilterArtifactPermanent("artifacts"), false));
this.getSpellAbility().addTarget(new TargetArtifactPermanent(2));
}
private DustToDust(final DustToDust card) {

View file

@ -1,7 +1,6 @@
package mage.cards.g;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
@ -15,17 +14,17 @@ import mage.choices.Choice;
import mage.choices.ChoiceImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.common.FilterArtifactPermanent;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author North
*/
public final class GremlinMine extends CardImpl {
@ -45,13 +44,13 @@ public final class GremlinMine extends CardImpl {
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(4, "it"), new ManaCostsImpl<>("{1}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetArtifactPermanent(filterCreature));
ability.addTarget(new TargetPermanent(filterCreature));
this.addAbility(ability);
// {1}, {tap}, Sacrifice Gremlin Mine: Remove up to four charge counters from target noncreature artifact.
ability = new SimpleActivatedAbility(new GremlinMineEffect(), new ManaCostsImpl<>("{1}"));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetArtifactPermanent(filterNonCreature));
ability.addTarget(new TargetPermanent(filterNonCreature));
this.addAbility(ability);
}

View file

@ -1,7 +1,6 @@
package mage.cards.h;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@ -12,12 +11,12 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterArtifactPermanent;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public final class HyperionBlacksmith extends CardImpl {
@ -29,7 +28,7 @@ public final class HyperionBlacksmith extends CardImpl {
}
public HyperionBlacksmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.ARTIFICER);
this.power = new MageInt(2);
@ -37,7 +36,7 @@ public final class HyperionBlacksmith extends CardImpl {
// {tap}: You may tap or untap target artifact an opponent controls.
Ability ability = new SimpleActivatedAbility(new MayTapOrUntapTargetEffect(), new TapSourceCost());
ability.addTarget(new TargetArtifactPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}

View file

@ -13,7 +13,7 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.common.FilterArtifactPermanent;
import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
@ -39,7 +39,7 @@ public final class KukemssaPirates extends CardImpl {
// Whenever Kukemssa Pirates attacks and isn't blocked, you may gain control of target artifact defending player controls. If you do, Kukemssa Pirates assigns no combat damage this turn.
Ability ability = new AttacksAndIsNotBlockedTriggeredAbility(new GainControlTargetEffect(Duration.Custom), true);
ability.addEffect(new AssignNoCombatDamageSourceEffect(Duration.EndOfTurn, true));
ability.addTarget(new TargetArtifactPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}

View file

@ -16,13 +16,12 @@ import mage.filter.common.FilterArtifactPermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public final class LifecraftAwakening extends CardImpl {
@ -40,7 +39,7 @@ public final class LifecraftAwakening extends CardImpl {
getSpellAbility().addEffect(new AddCountersTargetEffect(
CounterType.P1P1.createInstance(), GetXValue.instance
).setText("put X +1/+1 counters on target artifact you control"));
getSpellAbility().addTarget(new TargetArtifactPermanent(filter));
getSpellAbility().addTarget(new TargetPermanent(filter));
getSpellAbility().addEffect(new LifecraftAwakeningEffect());
}
@ -94,6 +93,7 @@ class LifecraftAwakeningToken extends TokenImpl {
this.power = new MageInt(0);
this.toughness = new MageInt(0);
}
private LifecraftAwakeningToken(final LifecraftAwakeningToken token) {
super(token);
}

View file

@ -1,7 +1,6 @@
package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.DelayedTriggeredAbility;
@ -18,29 +17,29 @@ import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterArtifactPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author emerald000
*/
public final class MagusOfTheUnseen extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("artifact an opponent controls");
static {
filter.add(TargetController.OPPONENT.getControllerPredicate());
}
public MagusOfTheUnseen(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WIZARD);
@ -50,7 +49,7 @@ public final class MagusOfTheUnseen extends CardImpl {
// {1}{U}, {tap}: Untap target artifact an opponent controls and gain control of it until end of turn. It gains haste until end of turn. When you lose control of the artifact, tap it.
Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new ManaCostsImpl<>("{1}{U}"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetArtifactPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
Effect effect = new GainControlTargetEffect(Duration.EndOfTurn);
effect.setText("and gain control of it until end of turn. ");
ability.addEffect(effect);
@ -88,15 +87,15 @@ class MagusOfTheUnseenDelayedTriggeredAbility extends DelayedTriggeredAbility {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
return event.getPlayerId().equals(controllerId)
return event.getPlayerId().equals(controllerId)
&& event.getTargetId().equals(this.getEffects().get(0).getTargetPointer().getFirst(game, this));
}
@Override
public MagusOfTheUnseenDelayedTriggeredAbility copy() {
return new MagusOfTheUnseenDelayedTriggeredAbility(this);
}
@Override
public String getRule() {
return "When you lose control of the artifact, tap it";

View file

@ -1,6 +1,5 @@
package mage.cards.s;
import java.util.*;
import mage.MageInt;
import mage.MageItem;
import mage.abilities.Ability;
@ -9,17 +8,21 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.continuous.ExchangeControlTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.common.FilterArtifactPermanent;
import mage.filter.predicate.ObjectSourcePlayer;
import mage.filter.predicate.ObjectSourcePlayerPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.stack.StackObject;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author NinthWorld
*/
public final class SalvageTrader extends CardImpl {
@ -38,11 +41,11 @@ public final class SalvageTrader extends CardImpl {
new TapSourceCost());
FilterArtifactPermanent filterYou = new FilterArtifactPermanent("artifact you control");
filterYou.add(TargetController.YOU.getControllerPredicate());
ability.addTarget(new TargetArtifactPermanent(filterYou));
ability.addTarget(new TargetPermanent(filterYou));
FilterArtifactPermanent filterOpponent = new FilterArtifactPermanent("artifact an opponent controls with the same casting cost as your targeted artifact");
filterOpponent.add(TargetController.OPPONENT.getControllerPredicate());
filterOpponent.add(new SameCastingCostPredicate());
ability.addTarget(new TargetArtifactPermanent(filterOpponent));
ability.addTarget(new TargetPermanent(filterOpponent));
this.addAbility(ability);
}

View file

@ -13,7 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.common.FilterArtifactPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
@ -42,7 +42,7 @@ public final class SonicScrewdriver extends CardImpl {
new GenericManaCost(1)
);
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetArtifactPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
// {2}, {T}: Scry 1.

View file

@ -1,7 +1,6 @@
package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@ -14,10 +13,11 @@ import mage.constants.SubType;
import mage.filter.common.FilterArtifactPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author Styxo
*/
public final class StrikeTeamCommando extends CardImpl {
@ -29,7 +29,7 @@ public final class StrikeTeamCommando extends CardImpl {
}
public StrikeTeamCommando(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G/W}{G/W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G/W}{G/W}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.REBEL);
this.power = new MageInt(3);
@ -37,7 +37,7 @@ public final class StrikeTeamCommando extends CardImpl {
// When Strike Team Commando enters the battlefield, you may destroy target artifact without spaceflight.
Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true);
ability.addTarget(new TargetArtifactPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}

View file

@ -1,7 +1,6 @@
package mage.cards.t;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
@ -10,12 +9,12 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.common.FilterArtifactPermanent;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public final class Touchstone extends CardImpl {
@ -27,11 +26,11 @@ public final class Touchstone extends CardImpl {
}
public Touchstone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
// {tap}: Tap target artifact you don't control.
Ability ability = new SimpleActivatedAbility(new TapTargetEffect(), new TapSourceCost());
ability.addTarget(new TargetArtifactPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}

View file

@ -1,8 +1,5 @@
package mage.cards.t;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
@ -20,10 +17,12 @@ import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.Target;
import mage.target.TargetPermanent;
import mage.target.common.TargetArtifactPermanent;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class TragicArrogance extends CardImpl {
@ -71,7 +70,7 @@ class TragicArroganceEffect extends OneShotEffect {
if (player != null) {
FilterArtifactPermanent filterArtifactPermanent = new FilterArtifactPermanent("an artifact of " + player.getName());
filterArtifactPermanent.add(new ControllerIdPredicate(playerId));
Target target1 = new TargetArtifactPermanent(1, 1, filterArtifactPermanent, true);
Target target1 = new TargetPermanent(1, 1, filterArtifactPermanent, true);
FilterCreaturePermanent filterCreaturePermanent = new FilterCreaturePermanent("a creature of " + player.getName());
filterCreaturePermanent.add(new ControllerIdPredicate(playerId));

View file

@ -9,7 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.TargetController;
import mage.filter.common.FilterArtifactPermanent;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
@ -28,7 +28,7 @@ public final class Vandalblast extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
// Destroy target artifact you don't control.
this.getSpellAbility().addTarget(new TargetArtifactPermanent(FILTER));
this.getSpellAbility().addTarget(new TargetPermanent(FILTER));
this.getSpellAbility().addEffect(new DestroyTargetEffect());
// Overload {4}{R} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.")

View file

@ -1,7 +1,6 @@
package mage.cards.x;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@ -14,10 +13,11 @@ import mage.filter.common.FilterArtifactPermanent;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import java.util.UUID;
/**
*
* @author MarcoMarin
*/
public final class XenicPoltergeist extends CardImpl {
@ -36,7 +36,7 @@ public final class XenicPoltergeist extends CardImpl {
// {tap}: Until your next upkeep, target noncreature artifact becomes an artifact creature with power and toughness each equal to its converted mana cost.
Ability ability = new SimpleActivatedAbility(new XenicPoltergeistEffect(), new TapSourceCost());
ability.addTarget(new TargetArtifactPermanent(filter));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}

View file

@ -17,7 +17,7 @@ import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetArtifactPermanent;
import mage.target.TargetPermanent;
import mage.util.CardUtil;
import java.util.ArrayList;
@ -53,7 +53,7 @@ public class ModularAbility extends DiesSourceTriggeredAbility {
public ModularAbility(Card card, int amount, boolean sunburst) {
super(new ModularDistributeCounterEffect(), true);
this.addTarget(new TargetArtifactPermanent(filter));
this.addTarget(new TargetPermanent(filter));
this.amount = amount;
this.sunburst = sunburst;
if (sunburst) {
@ -91,7 +91,7 @@ public class ModularAbility extends DiesSourceTriggeredAbility {
public String getRule() {
if (sunburst) {
return "Modular&mdash;Sunburst <i>(This enters the battlefield with a +1/+1 counter on it for each"
+ " color of mana spent to cast it. When it dies, you may put its +1/+1 counters on target artifact creature.)</i>";
+ " color of mana spent to cast it. When it dies, you may put its +1/+1 counters on target artifact creature.)</i>";
} else {
return "Modular " + amount + " <i>(This creature enters the battlefield with " +
CardUtil.getOneOneCountersText(amount) +

View file

@ -1,7 +1,6 @@
package mage.target.common;
import mage.filter.StaticFilters;
import mage.filter.common.FilterArtifactPermanent;
import mage.target.TargetPermanent;
/**
@ -18,19 +17,11 @@ public class TargetArtifactPermanent extends TargetPermanent {
}
public TargetArtifactPermanent(int minNumTargets, int maxNumTargets) {
this(minNumTargets, maxNumTargets,
super(minNumTargets, maxNumTargets,
(maxNumTargets > 1 ? StaticFilters.FILTER_PERMANENT_ARTIFACTS : StaticFilters.FILTER_PERMANENT_ARTIFACT),
false);
}
public TargetArtifactPermanent(FilterArtifactPermanent filter) {
this(1, 1, filter, false);
}
public TargetArtifactPermanent(int minNumTargets, int maxNumTargets, FilterArtifactPermanent filter, boolean notTarget) {
super(minNumTargets, maxNumTargets, filter, notTarget);
}
protected TargetArtifactPermanent(final TargetArtifactPermanent target) {
super(target);
}