From 3f5e17e3578a755354e48a0ec9dc018837ae540d Mon Sep 17 00:00:00 2001 From: theelk801 Date: Tue, 27 May 2025 20:40:35 -0400 Subject: [PATCH] [FIN] Implement Qutrub Forayer --- .../src/mage/cards/b/BitterDownfall.java | 13 +---- .../src/mage/cards/b/BushiTenderfoot.java | 9 +--- .../mage/cards/c/CaseOfTheGorgonsKiss.java | 25 +++------- .../src/mage/cards/c/CovertCutpurse.java | 3 +- Mage.Sets/src/mage/cards/c/CrushingPain.java | 24 +++------ .../src/mage/cards/d/DownwindAmbusher.java | 13 +---- Mage.Sets/src/mage/cards/f/FatalBlow.java | 21 +++----- .../mage/cards/f/FathomFleetCutthroat.java | 19 ++----- .../src/mage/cards/f/FinalStingFaerie.java | 24 +++------ .../src/mage/cards/h/HoodedAssassin.java | 21 +++----- .../src/mage/cards/i/InitiateOfBlood.java | 29 ++++------- .../src/mage/cards/l/LurkingDeadeye.java | 13 +---- Mage.Sets/src/mage/cards/m/Manticore.java | 14 +----- .../src/mage/cards/m/MirrodinAvenged.java | 13 +---- .../src/mage/cards/o/OgreSiegebreaker.java | 13 +---- Mage.Sets/src/mage/cards/o/Opportunist.java | 22 +++----- .../src/mage/cards/o/OrzhovEuthanist.java | 21 +++----- Mage.Sets/src/mage/cards/q/QutrubForayer.java | 50 +++++++++++++++++++ .../src/mage/cards/r/RooftopAssassin.java | 13 +---- .../src/mage/cards/s/StingbladeAssassin.java | 14 +----- .../src/mage/cards/u/UnsparingBoltcaster.java | 13 +---- Mage.Sets/src/mage/cards/w/WitchsMist.java | 24 +++------ .../src/mage/cards/y/YouAreAlreadyDead.java | 13 +---- Mage.Sets/src/mage/sets/FinalFantasy.java | 1 + .../SourceTargetsPermanentCondition.java | 2 +- .../main/java/mage/filter/StaticFilters.java | 21 ++++++-- 26 files changed, 160 insertions(+), 288 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/q/QutrubForayer.java diff --git a/Mage.Sets/src/mage/cards/b/BitterDownfall.java b/Mage.Sets/src/mage/cards/b/BitterDownfall.java index 5a0e2234a03..2ea9546449c 100644 --- a/Mage.Sets/src/mage/cards/b/BitterDownfall.java +++ b/Mage.Sets/src/mage/cards/b/BitterDownfall.java @@ -10,9 +10,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -22,14 +20,7 @@ import java.util.UUID; */ public final class BitterDownfall extends CardImpl { - private static final FilterPermanent filter - = new FilterCreaturePermanent("a creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - - private static final Condition condition = new SourceTargetsPermanentCondition(filter); + private static final Condition condition = new SourceTargetsPermanentCondition(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN); public BitterDownfall(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}"); diff --git a/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java b/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java index 180f201dbe0..fc8e1049961 100644 --- a/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java +++ b/Mage.Sets/src/mage/cards/b/BushiTenderfoot.java @@ -11,8 +11,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; import mage.game.permanent.token.TokenImpl; import java.util.UUID; @@ -22,12 +20,6 @@ import java.util.UUID; */ public final class BushiTenderfoot extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public BushiTenderfoot(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}"); this.subtype.add(SubType.HUMAN, SubType.SOLDIER); @@ -68,6 +60,7 @@ class KenzoTheHardhearted extends TokenImpl { this.addAbility(DoubleStrikeAbility.getInstance()); this.addAbility(new BushidoAbility(2)); } + private KenzoTheHardhearted(final KenzoTheHardhearted token) { super(token); } diff --git a/Mage.Sets/src/mage/cards/c/CaseOfTheGorgonsKiss.java b/Mage.Sets/src/mage/cards/c/CaseOfTheGorgonsKiss.java index 90c0c633d49..1ce3a754862 100644 --- a/Mage.Sets/src/mage/cards/c/CaseOfTheGorgonsKiss.java +++ b/Mage.Sets/src/mage/cards/c/CaseOfTheGorgonsKiss.java @@ -1,7 +1,5 @@ package mage.cards.c; -import java.util.UUID; - import mage.MageInt; import mage.MageObject; import mage.abilities.Ability; @@ -16,19 +14,19 @@ import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect; import mage.abilities.hint.common.CaseSolvedHint; import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.LifelinkAbility; -import mage.constants.Duration; -import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.token.TokenImpl; import mage.target.TargetPermanent; import mage.watchers.common.CardsPutIntoGraveyardWatcher; +import java.util.UUID; + /** * Case of the Gorgon's Kiss {B} * Enchantment - Case @@ -40,13 +38,6 @@ import mage.watchers.common.CardsPutIntoGraveyardWatcher; */ public final class CaseOfTheGorgonsKiss extends CardImpl { - private static final FilterPermanent filter - = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public CaseOfTheGorgonsKiss(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}"); @@ -55,7 +46,7 @@ public final class CaseOfTheGorgonsKiss extends CardImpl { // When this Case enters the battlefield, destroy up to one target creature that was dealt damage this turn. Ability initialAbility = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()) .setTriggerPhrase("When this Case enters, "); - initialAbility.addTarget(new TargetPermanent(0, 1, filter)); + initialAbility.addTarget(new TargetPermanent(0, 1, StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); // To solve -- Three or more creature cards were put into graveyards from anywhere this turn. Condition toSolveCondition = new CaseOfTheGorgonsKissCondition(); // Solved -- This Case is a 4/4 Gorgon creature with deathtouch and lifelink in addition to its other types. @@ -66,7 +57,7 @@ public final class CaseOfTheGorgonsKiss extends CardImpl { .setText("This Case is a 4/4 Gorgon creature with deathtouch and lifelink in addition to its other types.")); this.addAbility(new CaseAbility(initialAbility, toSolveCondition, solvedAbility) - .addHint(new CaseOfTheGorgonsKissHint(toSolveCondition)), + .addHint(new CaseOfTheGorgonsKissHint(toSolveCondition)), new CardsPutIntoGraveyardWatcher()); } @@ -115,7 +106,7 @@ class CaseOfTheGorgonsKissHint extends CaseSolvedHint { @Override public String getConditionText(Game game, Ability ability) { - int creatures = (int)game.getState() + int creatures = (int) game.getState() .getWatcher(CardsPutIntoGraveyardWatcher.class) .getCardsPutIntoGraveyardFromAnywhere(game) .stream() diff --git a/Mage.Sets/src/mage/cards/c/CovertCutpurse.java b/Mage.Sets/src/mage/cards/c/CovertCutpurse.java index 25f3911e341..c9372e1d538 100644 --- a/Mage.Sets/src/mage/cards/c/CovertCutpurse.java +++ b/Mage.Sets/src/mage/cards/c/CovertCutpurse.java @@ -3,7 +3,6 @@ package mage.cards.c; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.DisturbAbility; import mage.cards.CardImpl; @@ -27,7 +26,7 @@ public final class CovertCutpurse extends CardImpl { = new FilterCreaturePermanent("creature you don't control that was dealt damage this turn"); static { - filter.add(TargetController.OPPONENT.getControllerPredicate()); + filter.add(TargetController.NOT_YOU.getControllerPredicate()); filter.add(WasDealtDamageThisTurnPredicate.instance); } diff --git a/Mage.Sets/src/mage/cards/c/CrushingPain.java b/Mage.Sets/src/mage/cards/c/CrushingPain.java index 7fbf6f552b8..857c7b78b63 100644 --- a/Mage.Sets/src/mage/cards/c/CrushingPain.java +++ b/Mage.Sets/src/mage/cards/c/CrushingPain.java @@ -1,34 +1,27 @@ package mage.cards.c; -import java.util.UUID; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; -import mage.target.common.TargetCreaturePermanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author LevelX */ public final class CrushingPain extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - - public CrushingPain (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}"); + public CrushingPain(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}"); this.subtype.add(SubType.ARCANE); // Crushing Pain deals 6 damage to target creature that was dealt damage this turn. this.getSpellAbility().addEffect(new DamageTargetEffect(6)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); } private CrushingPain(final CrushingPain card) { @@ -39,7 +32,4 @@ public final class CrushingPain extends CardImpl { public CrushingPain copy() { return new CrushingPain(this); } - } - - diff --git a/Mage.Sets/src/mage/cards/d/DownwindAmbusher.java b/Mage.Sets/src/mage/cards/d/DownwindAmbusher.java index e84ba2f8fb2..97f44727c05 100644 --- a/Mage.Sets/src/mage/cards/d/DownwindAmbusher.java +++ b/Mage.Sets/src/mage/cards/d/DownwindAmbusher.java @@ -11,9 +11,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterOpponentsCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import mage.target.common.TargetOpponentsCreaturePermanent; @@ -24,13 +22,6 @@ import java.util.UUID; */ public final class DownwindAmbusher extends CardImpl { - private static final FilterPermanent filter - = new FilterOpponentsCreaturePermanent("creature an opponent controls that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public DownwindAmbusher(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); @@ -48,7 +39,7 @@ public final class DownwindAmbusher extends CardImpl { ability.addTarget(new TargetOpponentsCreaturePermanent()); // * Destroy target creature an opponent controls that was dealt damage this turn. - ability.addMode(new Mode(new DestroyTargetEffect()).addTarget(new TargetPermanent(filter))); + ability.addMode(new Mode(new DestroyTargetEffect()).addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_CREATURE_DAMAGED_THIS_TURN))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FatalBlow.java b/Mage.Sets/src/mage/cards/f/FatalBlow.java index b8e97964f46..e22bad9a55e 100644 --- a/Mage.Sets/src/mage/cards/f/FatalBlow.java +++ b/Mage.Sets/src/mage/cards/f/FatalBlow.java @@ -1,34 +1,25 @@ - package mage.cards.f; -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.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; -import mage.target.common.TargetCreaturePermanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author Quercitron */ public final class FatalBlow extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public FatalBlow(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}"); - + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}"); // Destroy target creature that was dealt damage this turn. It can't be regenerated. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); } private FatalBlow(final FatalBlow card) { diff --git a/Mage.Sets/src/mage/cards/f/FathomFleetCutthroat.java b/Mage.Sets/src/mage/cards/f/FathomFleetCutthroat.java index a045da13c83..a91953a16ae 100644 --- a/Mage.Sets/src/mage/cards/f/FathomFleetCutthroat.java +++ b/Mage.Sets/src/mage/cards/f/FathomFleetCutthroat.java @@ -1,7 +1,6 @@ package mage.cards.f; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -10,24 +9,16 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.TargetController; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; -import mage.target.common.TargetCreaturePermanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author TheElk801 */ public final class FathomFleetCutthroat extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - filter.add(TargetController.OPPONENT.getControllerPredicate()); - } - public FathomFleetCutthroat(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); @@ -38,7 +29,7 @@ public final class FathomFleetCutthroat extends CardImpl { // When Fathom Fleet Cutthroat enters the battlefield, destroy target creature an opponent controls that was dealt damage this turn. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FinalStingFaerie.java b/Mage.Sets/src/mage/cards/f/FinalStingFaerie.java index ebc23fc4f30..2ba5fcf62c2 100644 --- a/Mage.Sets/src/mage/cards/f/FinalStingFaerie.java +++ b/Mage.Sets/src/mage/cards/f/FinalStingFaerie.java @@ -1,7 +1,5 @@ - package mage.cards.f; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -11,24 +9,18 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; -import mage.target.common.TargetCreaturePermanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author fireshoes */ public final class FinalStingFaerie extends CardImpl { - - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } public FinalStingFaerie(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); this.subtype.add(SubType.FAERIE); this.subtype.add(SubType.ASSASSIN); this.power = new MageInt(2); @@ -36,11 +28,11 @@ public final class FinalStingFaerie extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); - + // When Final-Sting Faerie enters the battlefield, destroy target creature that was dealt damage this turn. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetCreaturePermanent(filter)); - this.addAbility(ability); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); + this.addAbility(ability); } private FinalStingFaerie(final FinalStingFaerie card) { diff --git a/Mage.Sets/src/mage/cards/h/HoodedAssassin.java b/Mage.Sets/src/mage/cards/h/HoodedAssassin.java index cb6f2002fa8..8cb7ddc9a65 100644 --- a/Mage.Sets/src/mage/cards/h/HoodedAssassin.java +++ b/Mage.Sets/src/mage/cards/h/HoodedAssassin.java @@ -1,7 +1,6 @@ package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.Mode; @@ -13,24 +12,18 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; -import mage.target.common.TargetCreaturePermanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class HoodedAssassin extends CardImpl { - - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn"); - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public HoodedAssassin(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.ASSASSIN); this.power = new MageInt(1); @@ -41,9 +34,9 @@ public final class HoodedAssassin extends CardImpl { Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false); // * Destroy target creature that was dealt damage this turn. Mode mode = new Mode(new DestroyTargetEffect()); - mode.addTarget(new TargetCreaturePermanent(filter)); + mode.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); ability.addMode(mode); - this.addAbility(ability); + this.addAbility(ability); } private HoodedAssassin(final HoodedAssassin card) { diff --git a/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java b/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java index b7f63cb6eee..6ccbc724a7d 100644 --- a/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java +++ b/Mage.Sets/src/mage/cards/i/InitiateOfBlood.java @@ -1,10 +1,9 @@ package mage.cards.i; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.delayed.WhenTargetDiesDelayedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.delayed.WhenTargetDiesDelayedTriggeredAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -14,24 +13,19 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.game.permanent.token.TokenImpl; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; + +import java.util.UUID; /** * @author awjackson */ public final class InitiateOfBlood extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public InitiateOfBlood(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); this.subtype.add(SubType.OGRE, SubType.SHAMAN); this.power = new MageInt(2); @@ -45,7 +39,7 @@ public final class InitiateOfBlood extends CardImpl { ability.addEffect(new CreateDelayedTriggeredAbilityEffect(new WhenTargetDiesDelayedTriggeredAbility( new FlipSourceEffect(new GokaTheUnjust()).setText("flip {this}") ))); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability); } @@ -61,12 +55,6 @@ public final class InitiateOfBlood extends CardImpl { class GokaTheUnjust extends TokenImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - GokaTheUnjust() { super("Goka the Unjust", ""); this.supertype.add(SuperType.LEGENDARY); @@ -78,9 +66,10 @@ class GokaTheUnjust extends TokenImpl { // {T}: Goka the Unjust deals 4 damage to target creature that was dealt damage this turn. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(4), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability); } + private GokaTheUnjust(final GokaTheUnjust token) { super(token); } diff --git a/Mage.Sets/src/mage/cards/l/LurkingDeadeye.java b/Mage.Sets/src/mage/cards/l/LurkingDeadeye.java index 3c2c3cdb556..77952066422 100644 --- a/Mage.Sets/src/mage/cards/l/LurkingDeadeye.java +++ b/Mage.Sets/src/mage/cards/l/LurkingDeadeye.java @@ -9,9 +9,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import java.util.UUID; @@ -21,13 +19,6 @@ import java.util.UUID; */ public final class LurkingDeadeye extends CardImpl { - private static final FilterPermanent filter - = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public LurkingDeadeye(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); @@ -41,7 +32,7 @@ public final class LurkingDeadeye extends CardImpl { // When Lurking Deadeye enters the battlefield, destroy target creature that was dealt damage this turn. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/Manticore.java b/Mage.Sets/src/mage/cards/m/Manticore.java index ea26f11881f..6c730c9c237 100644 --- a/Mage.Sets/src/mage/cards/m/Manticore.java +++ b/Mage.Sets/src/mage/cards/m/Manticore.java @@ -10,9 +10,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterOpponentsCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import java.util.UUID; @@ -22,14 +20,6 @@ import java.util.UUID; */ public final class Manticore extends CardImpl { - private static final FilterPermanent filter = new FilterOpponentsCreaturePermanent( - "creature an opponent controls that was dealt damage this turn" - ); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public Manticore(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); @@ -45,7 +35,7 @@ public final class Manticore extends CardImpl { // Tail Spikes — When Manticore enters the battlefield, destroy target creature an opponent controls that was dealt damage this turn. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability.withFlavorWord("Tail Spikes")); } diff --git a/Mage.Sets/src/mage/cards/m/MirrodinAvenged.java b/Mage.Sets/src/mage/cards/m/MirrodinAvenged.java index d7cd3f0a408..2c12846d728 100644 --- a/Mage.Sets/src/mage/cards/m/MirrodinAvenged.java +++ b/Mage.Sets/src/mage/cards/m/MirrodinAvenged.java @@ -5,9 +5,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import java.util.UUID; @@ -17,19 +15,12 @@ import java.util.UUID; */ public final class MirrodinAvenged extends CardImpl { - private static final FilterPermanent filter - = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public MirrodinAvenged(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}"); // Destroy target creature that was dealt damage this turn. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/o/OgreSiegebreaker.java b/Mage.Sets/src/mage/cards/o/OgreSiegebreaker.java index 977fa7c5a32..e0e6d58c2d3 100644 --- a/Mage.Sets/src/mage/cards/o/OgreSiegebreaker.java +++ b/Mage.Sets/src/mage/cards/o/OgreSiegebreaker.java @@ -9,9 +9,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import java.util.UUID; @@ -21,13 +19,6 @@ import java.util.UUID; */ public final class OgreSiegebreaker extends CardImpl { - private static final FilterPermanent filter - = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public OgreSiegebreaker(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}"); @@ -38,7 +29,7 @@ public final class OgreSiegebreaker extends CardImpl { // {2}{B}{R}: Destroy target creature that was dealt damage this turn. Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{2}{B}{R}")); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/Opportunist.java b/Mage.Sets/src/mage/cards/o/Opportunist.java index 91e118c0703..4bb6ddc3296 100644 --- a/Mage.Sets/src/mage/cards/o/Opportunist.java +++ b/Mage.Sets/src/mage/cards/o/Opportunist.java @@ -1,8 +1,5 @@ - - package mage.cards.o; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -12,24 +9,18 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; -import mage.target.common.TargetCreaturePermanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; /** * @author LevelX */ public final class Opportunist extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public Opportunist(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.SOLDIER); @@ -38,7 +29,7 @@ public final class Opportunist extends CardImpl { // {T}: Opportunist deals 1 damage to target creature that was dealt damage this turn. Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability); } @@ -50,5 +41,4 @@ public final class Opportunist extends CardImpl { public Opportunist copy() { return new Opportunist(this); } - } diff --git a/Mage.Sets/src/mage/cards/o/OrzhovEuthanist.java b/Mage.Sets/src/mage/cards/o/OrzhovEuthanist.java index 9a8361faa96..a649b3ff144 100644 --- a/Mage.Sets/src/mage/cards/o/OrzhovEuthanist.java +++ b/Mage.Sets/src/mage/cards/o/OrzhovEuthanist.java @@ -1,7 +1,5 @@ - package mage.cards.o; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.effects.common.DestroyTargetEffect; @@ -10,24 +8,18 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; -import mage.target.Target; -import mage.target.common.TargetCreaturePermanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class OrzhovEuthanist extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn"); - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public OrzhovEuthanist(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.ASSASSIN); @@ -37,8 +29,7 @@ public final class OrzhovEuthanist extends CardImpl { // Haunt // When Orzhov Euthanist enters the battlefield or the creature it haunts dies, destroy target creature that was dealt damage this turn. Ability ability = new HauntAbility(this, new DestroyTargetEffect()); - Target target = new TargetCreaturePermanent(filter); - ability.addTarget(target); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/q/QutrubForayer.java b/Mage.Sets/src/mage/cards/q/QutrubForayer.java new file mode 100644 index 00000000000..4ec312371c3 --- /dev/null +++ b/Mage.Sets/src/mage/cards/q/QutrubForayer.java @@ -0,0 +1,50 @@ +package mage.cards.q; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.Mode; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.ExileTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; +import mage.target.common.TargetCardInASingleGraveyard; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class QutrubForayer extends CardImpl { + + public QutrubForayer(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); + + this.subtype.add(SubType.ZOMBIE); + this.subtype.add(SubType.HORROR); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // When this creature enters, choose one -- + // * Destroy target creature that was dealt damage this turn. + Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); + + // * Exile up to two target cards from a single graveyard. + ability.addMode(new Mode(new ExileTargetEffect()).addTarget(new TargetCardInASingleGraveyard(0, 2, StaticFilters.FILTER_CARD_CARDS))); + this.addAbility(ability); + } + + private QutrubForayer(final QutrubForayer card) { + super(card); + } + + @Override + public QutrubForayer copy() { + return new QutrubForayer(this); + } +} diff --git a/Mage.Sets/src/mage/cards/r/RooftopAssassin.java b/Mage.Sets/src/mage/cards/r/RooftopAssassin.java index 12000e5d9ea..3cecafbee66 100644 --- a/Mage.Sets/src/mage/cards/r/RooftopAssassin.java +++ b/Mage.Sets/src/mage/cards/r/RooftopAssassin.java @@ -11,9 +11,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterOpponentsCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import java.util.UUID; @@ -23,13 +21,6 @@ import java.util.UUID; */ public final class RooftopAssassin extends CardImpl { - private static final FilterPermanent filter - = new FilterOpponentsCreaturePermanent("creature an opponent controls that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public RooftopAssassin(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); @@ -49,7 +40,7 @@ public final class RooftopAssassin extends CardImpl { // When Rooftop Assassin enters the battlefield, destroy target creature an opponent controls that was dealt damage this turn. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/StingbladeAssassin.java b/Mage.Sets/src/mage/cards/s/StingbladeAssassin.java index 4887d761588..e3cd1c8b2a0 100644 --- a/Mage.Sets/src/mage/cards/s/StingbladeAssassin.java +++ b/Mage.Sets/src/mage/cards/s/StingbladeAssassin.java @@ -10,9 +10,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterOpponentsCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import java.util.UUID; @@ -22,14 +20,6 @@ import java.util.UUID; */ public final class StingbladeAssassin extends CardImpl { - private static final FilterPermanent filter = new FilterOpponentsCreaturePermanent( - "creature an opponent controls that was dealt damage this turn" - ); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public StingbladeAssassin(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); @@ -46,7 +36,7 @@ public final class StingbladeAssassin extends CardImpl { // When Stingblade Assassin enters the battlefield, destroy target creature an opponent controls that was dealt damage this turn. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/u/UnsparingBoltcaster.java b/Mage.Sets/src/mage/cards/u/UnsparingBoltcaster.java index b9bfc685171..ac77afc870b 100644 --- a/Mage.Sets/src/mage/cards/u/UnsparingBoltcaster.java +++ b/Mage.Sets/src/mage/cards/u/UnsparingBoltcaster.java @@ -8,9 +8,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterOpponentsCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import java.util.UUID; @@ -20,13 +18,6 @@ import java.util.UUID; */ public final class UnsparingBoltcaster extends CardImpl { - private static final FilterPermanent filter - = new FilterOpponentsCreaturePermanent("creature an opponent controls that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public UnsparingBoltcaster(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); @@ -37,7 +28,7 @@ public final class UnsparingBoltcaster extends CardImpl { // When this creature enters, it deals 5 damage to target creature an opponent controls that was dealt damage this turn. Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(5)); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_CREATURE_DAMAGED_THIS_TURN)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WitchsMist.java b/Mage.Sets/src/mage/cards/w/WitchsMist.java index 38310c003ff..dd03c86a886 100644 --- a/Mage.Sets/src/mage/cards/w/WitchsMist.java +++ b/Mage.Sets/src/mage/cards/w/WitchsMist.java @@ -1,7 +1,5 @@ - package mage.cards.w; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; @@ -10,30 +8,22 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Zone; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; -import mage.target.common.TargetCreaturePermanent; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; /** - * * @author North */ public final class WitchsMist extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public WitchsMist(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{B}"); - + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}"); // {2}{B}, {T}: Destroy target creature that was dealt damage this turn. - Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(),new ManaCostsImpl<>("{2}{B}")); - ability.addTarget(new TargetCreaturePermanent(filter)); + Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new ManaCostsImpl<>("{2}{B}")); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/y/YouAreAlreadyDead.java b/Mage.Sets/src/mage/cards/y/YouAreAlreadyDead.java index 450bd7676ee..f6b77a42ec0 100644 --- a/Mage.Sets/src/mage/cards/y/YouAreAlreadyDead.java +++ b/Mage.Sets/src/mage/cards/y/YouAreAlreadyDead.java @@ -5,9 +5,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import java.util.UUID; @@ -17,19 +15,12 @@ import java.util.UUID; */ public final class YouAreAlreadyDead extends CardImpl { - private static final FilterPermanent filter - = new FilterCreaturePermanent("creature that was dealt damage this turn"); - - static { - filter.add(WasDealtDamageThisTurnPredicate.instance); - } - public YouAreAlreadyDead(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}"); // Destroy target creature that was dealt damage this turn. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_DAMAGED_THIS_TURN)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/sets/FinalFantasy.java b/Mage.Sets/src/mage/sets/FinalFantasy.java index 19d5883d20e..f2d33240ba7 100644 --- a/Mage.Sets/src/mage/sets/FinalFantasy.java +++ b/Mage.Sets/src/mage/sets/FinalFantasy.java @@ -368,6 +368,7 @@ public final class FinalFantasy extends ExpansionSet { cards.add(new SetCardInfo("Quina, Qu Gourmet", 471, Rarity.UNCOMMON, mage.cards.q.QuinaQuGourmet.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Quistis Trepe", 440, Rarity.UNCOMMON, mage.cards.q.QuistisTrepe.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Quistis Trepe", 66, Rarity.UNCOMMON, mage.cards.q.QuistisTrepe.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Qutrub Forayer", 112, Rarity.COMMON, mage.cards.q.QutrubForayer.class)); cards.add(new SetCardInfo("Rabanastre, Royal City", 287, Rarity.COMMON, mage.cards.r.RabanastreRoyalCity.class)); cards.add(new SetCardInfo("Ragnarok, Divine Deliverance", "381b", Rarity.UNCOMMON, mage.cards.r.RagnarokDivineDeliverance.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ragnarok, Divine Deliverance", "446b", Rarity.UNCOMMON, mage.cards.r.RagnarokDivineDeliverance.class, NON_FULL_USE_VARIOUS)); diff --git a/Mage/src/main/java/mage/abilities/condition/common/SourceTargetsPermanentCondition.java b/Mage/src/main/java/mage/abilities/condition/common/SourceTargetsPermanentCondition.java index f961c55855f..3d9e142bd29 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/SourceTargetsPermanentCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/SourceTargetsPermanentCondition.java @@ -35,7 +35,7 @@ public class SourceTargetsPermanentCondition implements Condition { @Override public String toString() { - return "it targets " + filter.getMessage(); + return "it targets " + CardUtil.addArticle(filter.getMessage()); } } diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index d2ad491a720..ab982e0c53b 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -7,10 +7,7 @@ import mage.filter.common.*; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.*; import mage.filter.predicate.other.AnotherTargetPredicate; -import mage.filter.predicate.permanent.AttachedOrShareCreatureTypePredicate; -import mage.filter.predicate.permanent.RingBearerPredicate; -import mage.filter.predicate.permanent.TappedPredicate; -import mage.filter.predicate.permanent.TokenPredicate; +import mage.filter.predicate.permanent.*; /** * A class that holds Filter objects that may not be modified without copying @@ -1216,6 +1213,22 @@ public final class StaticFilters { FILTER_BLOCKING_CREATURES.setLockedFilter(true); } + public static final FilterPermanent FILTER_CREATURE_DAMAGED_THIS_TURN = new FilterCreaturePermanent("creature that was dealt damage this turn"); + + static { + FILTER_CREATURE_DAMAGED_THIS_TURN.add(WasDealtDamageThisTurnPredicate.instance); + FILTER_CREATURE_DAMAGED_THIS_TURN.setLockedFilter(true); + } + + + public static final FilterPermanent FILTER_OPPONENTS_CREATURE_DAMAGED_THIS_TURN = new FilterCreaturePermanent("creature an opponent controls that was dealt damage this turn"); + + static { + FILTER_OPPONENTS_CREATURE_DAMAGED_THIS_TURN.add(TargetController.OPPONENT.getControllerPredicate()); + FILTER_OPPONENTS_CREATURE_DAMAGED_THIS_TURN.add(WasDealtDamageThisTurnPredicate.instance); + FILTER_OPPONENTS_CREATURE_DAMAGED_THIS_TURN.setLockedFilter(true); + } + public static final FilterPermanent FILTER_PERMANENT_AURAS = new FilterEnchantmentPermanent("Auras"); static {