From bea85490586541880defcd69cfba1f257bfa739a Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Fri, 6 Nov 2020 08:03:41 -0500 Subject: [PATCH] [CMR] Implemented Fin-Clade Fugitives --- .../src/mage/cards/b/BrushfireElemental.java | 17 +------- .../src/mage/cards/d/DemolitionStomper.java | 20 ++-------- .../src/mage/cards/e/ElegantEdgecrafters.java | 23 +++-------- .../src/mage/cards/e/EnragedCeratok.java | 16 +------- .../src/mage/cards/f/FinCladeFugitives.java | 40 +++++++++++++++++++ .../src/mage/cards/f/FleetFootedMonk.java | 22 +++------- .../src/mage/cards/g/GarenbrigPaladin.java | 16 +------- Mage.Sets/src/mage/cards/g/GateColossus.java | 13 +----- .../src/mage/cards/g/GiltgroveStalker.java | 20 ++-------- .../src/mage/cards/g/GreaterSandwurm.java | 20 ++-------- Mage.Sets/src/mage/cards/o/OutlandBoar.java | 20 ++-------- Mage.Sets/src/mage/cards/q/QuestingBeast.java | 14 +------ Mage.Sets/src/mage/cards/r/RavenousSlime.java | 19 ++------- .../src/mage/cards/s/ScuttlingDoomEngine.java | 21 +++------- .../src/mage/cards/s/SteelLeafChampion.java | 22 +++------- Mage.Sets/src/mage/sets/CommanderLegends.java | 1 + .../mage/abilities/keyword/DauntAbility.java | 38 ++++++++++++++++++ .../mage/abilities/keyword/MenaceAbility.java | 10 +---- 18 files changed, 130 insertions(+), 222 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/f/FinCladeFugitives.java create mode 100644 Mage/src/main/java/mage/abilities/keyword/DauntAbility.java diff --git a/Mage.Sets/src/mage/cards/b/BrushfireElemental.java b/Mage.Sets/src/mage/cards/b/BrushfireElemental.java index 987468a91cf..b8a691ba372 100644 --- a/Mage.Sets/src/mage/cards/b/BrushfireElemental.java +++ b/Mage.Sets/src/mage/cards/b/BrushfireElemental.java @@ -2,18 +2,14 @@ package mage.cards.b; import mage.MageInt; import mage.abilities.common.LandfallAbility; -import mage.abilities.common.SimpleEvasionAbility; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.DauntAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.ComparisonType; import mage.constants.Duration; import mage.constants.SubType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; import java.util.UUID; @@ -22,13 +18,6 @@ import java.util.UUID; */ public final class BrushfireElemental extends CardImpl { - private static final FilterCreaturePermanent filter - = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public BrushfireElemental(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{G}"); @@ -40,9 +29,7 @@ public final class BrushfireElemental extends CardImpl { this.addAbility(HasteAbility.getInstance()); // Brushfire Elemental can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility( - new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield) - )); + this.addAbility(new DauntAbility()); // Landfall — Whenever a land enters the battlefield under your control, Brushfire Elemental gets +2/+2 until end of turn. this.addAbility(new LandfallAbility(new BoostSourceEffect(2, 2, Duration.EndOfTurn))); diff --git a/Mage.Sets/src/mage/cards/d/DemolitionStomper.java b/Mage.Sets/src/mage/cards/d/DemolitionStomper.java index c4fe6efdfa6..f6ef13ff49d 100644 --- a/Mage.Sets/src/mage/cards/d/DemolitionStomper.java +++ b/Mage.Sets/src/mage/cards/d/DemolitionStomper.java @@ -1,40 +1,28 @@ - package mage.cards.d; import mage.MageInt; -import mage.abilities.common.SimpleEvasionAbility; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; import mage.abilities.keyword.CrewAbility; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.ComparisonType; -import mage.constants.Duration; import mage.constants.SubType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; import java.util.UUID; /** - * * @author emerald000 */ public final class DemolitionStomper extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less"); - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public DemolitionStomper(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}"); - this.subtype.add( SubType.VEHICLE); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{6}"); + this.subtype.add(SubType.VEHICLE); this.power = new MageInt(10); this.toughness = new MageInt(7); // Demolition Stomper can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); // Crew 5 this.addAbility(new CrewAbility(5)); diff --git a/Mage.Sets/src/mage/cards/e/ElegantEdgecrafters.java b/Mage.Sets/src/mage/cards/e/ElegantEdgecrafters.java index 043b7a0cdc3..edbe5b81bb6 100644 --- a/Mage.Sets/src/mage/cards/e/ElegantEdgecrafters.java +++ b/Mage.Sets/src/mage/cards/e/ElegantEdgecrafters.java @@ -1,41 +1,30 @@ - package mage.cards.e; -import java.util.UUID; import mage.MageInt; -import mage.abilities.common.SimpleEvasionAbility; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; +import mage.abilities.keyword.DauntAbility; import mage.abilities.keyword.FabricateAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.ComparisonType; -import mage.constants.Duration; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class ElegantEdgecrafters extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public ElegantEdgecrafters(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}"); this.subtype.add(SubType.ELF); this.subtype.add(SubType.ARTIFICER); this.power = new MageInt(3); this.toughness = new MageInt(4); // Elegant Edgecrafters can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); + // Fabricate 2 this.addAbility(new FabricateAbility(2)); } diff --git a/Mage.Sets/src/mage/cards/e/EnragedCeratok.java b/Mage.Sets/src/mage/cards/e/EnragedCeratok.java index e6316243c78..b137fcbf2c0 100644 --- a/Mage.Sets/src/mage/cards/e/EnragedCeratok.java +++ b/Mage.Sets/src/mage/cards/e/EnragedCeratok.java @@ -1,16 +1,11 @@ package mage.cards.e; import mage.MageInt; -import mage.abilities.common.SimpleEvasionAbility; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.ComparisonType; -import mage.constants.Duration; import mage.constants.SubType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; import java.util.UUID; @@ -19,13 +14,6 @@ import java.util.UUID; */ public final class EnragedCeratok extends CardImpl { - private static final FilterCreaturePermanent filter - = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public EnragedCeratok(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); @@ -34,7 +22,7 @@ public final class EnragedCeratok extends CardImpl { this.toughness = new MageInt(4); // Enraged Ceratok can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); } private EnragedCeratok(final EnragedCeratok card) { diff --git a/Mage.Sets/src/mage/cards/f/FinCladeFugitives.java b/Mage.Sets/src/mage/cards/f/FinCladeFugitives.java new file mode 100644 index 00000000000..eb8b90bd13c --- /dev/null +++ b/Mage.Sets/src/mage/cards/f/FinCladeFugitives.java @@ -0,0 +1,40 @@ +package mage.cards.f; + +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.keyword.DauntAbility; +import mage.abilities.keyword.EncoreAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class FinCladeFugitives extends CardImpl { + + public FinCladeFugitives(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}"); + + this.subtype.add(SubType.ELF); + this.subtype.add(SubType.SALAMANDER); + this.subtype.add(SubType.ROGUE); + + // Fin-Clade Fugitives can't be blocked by creatures with power 2 or less. + this.addAbility(new DauntAbility()); + + // Encore {4}{G} + this.addAbility(new EncoreAbility(new ManaCostsImpl<>("{4}{G}"))); + } + + private FinCladeFugitives(final FinCladeFugitives card) { + super(card); + } + + @Override + public FinCladeFugitives copy() { + return new FinCladeFugitives(this); + } +} diff --git a/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java b/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java index d5caf9a01e2..ff2aa94f8a2 100644 --- a/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java +++ b/Mage.Sets/src/mage/cards/f/FleetFootedMonk.java @@ -1,40 +1,28 @@ - package mage.cards.f; -import java.util.UUID; import mage.MageInt; -import mage.abilities.common.SimpleEvasionAbility; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.ComparisonType; -import mage.constants.Duration; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; + +import java.util.UUID; /** - * * @author fireshoes */ public final class FleetFootedMonk extends CardImpl { - - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or greater"); - - static { - filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 1)); - } public FleetFootedMonk(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.MONK); this.power = new MageInt(1); this.toughness = new MageInt(1); // Fleet-Footed Monk can't be blocked by creatures with power 2 or greater. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); } public FleetFootedMonk(final FleetFootedMonk card) { diff --git a/Mage.Sets/src/mage/cards/g/GarenbrigPaladin.java b/Mage.Sets/src/mage/cards/g/GarenbrigPaladin.java index 18de13a86bf..a065fc257aa 100644 --- a/Mage.Sets/src/mage/cards/g/GarenbrigPaladin.java +++ b/Mage.Sets/src/mage/cards/g/GarenbrigPaladin.java @@ -2,19 +2,14 @@ package mage.cards.g; import mage.MageInt; import mage.abilities.common.EntersBattlefieldAbility; -import mage.abilities.common.SimpleEvasionAbility; import mage.abilities.condition.common.AdamantCondition; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.ComparisonType; -import mage.constants.Duration; import mage.constants.SubType; import mage.counters.CounterType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; import mage.watchers.common.ManaSpentToCastWatcher; import java.util.UUID; @@ -24,13 +19,6 @@ import java.util.UUID; */ public final class GarenbrigPaladin extends CardImpl { - private static final FilterCreaturePermanent filter - = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public GarenbrigPaladin(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}"); @@ -47,7 +35,7 @@ public final class GarenbrigPaladin extends CardImpl { ), new ManaSpentToCastWatcher()); // Garenbrig Paladin can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); } private GarenbrigPaladin(final GarenbrigPaladin card) { diff --git a/Mage.Sets/src/mage/cards/g/GateColossus.java b/Mage.Sets/src/mage/cards/g/GateColossus.java index 000c9e26924..73230c02962 100644 --- a/Mage.Sets/src/mage/cards/g/GateColossus.java +++ b/Mage.Sets/src/mage/cards/g/GateColossus.java @@ -3,20 +3,17 @@ package mage.cards.g; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; -import mage.abilities.common.SimpleEvasionAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.GateYouControlCount; import mage.abilities.effects.common.PutOnLibrarySourceEffect; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; import mage.abilities.effects.common.cost.CostModificationEffectImpl; import mage.abilities.effects.common.cost.SpellCostReductionForEachSourceEffect; import mage.abilities.hint.common.GateYouControlHint; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.common.FilterControlledPermanent; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.Game; import mage.util.CardUtil; @@ -27,12 +24,6 @@ import java.util.UUID; */ public final class GateColossus extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public GateColossus(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{8}"); @@ -47,7 +38,7 @@ public final class GateColossus extends CardImpl { ); // Gate Colossus can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); // Whenever a Gate enters the battlefield under your control, you may put Gate Colossus from your graveyard on top of your library. this.addAbility(new EntersBattlefieldAllTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/g/GiltgroveStalker.java b/Mage.Sets/src/mage/cards/g/GiltgroveStalker.java index 95abf7a0ba5..b5db89b947e 100644 --- a/Mage.Sets/src/mage/cards/g/GiltgroveStalker.java +++ b/Mage.Sets/src/mage/cards/g/GiltgroveStalker.java @@ -1,31 +1,19 @@ - package mage.cards.g; -import java.util.UUID; import mage.MageInt; -import mage.abilities.common.SimpleEvasionAbility; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.ComparisonType; -import mage.constants.Duration; import mage.constants.SubType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class GiltgroveStalker extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public GiltgroveStalker(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); @@ -35,7 +23,7 @@ public final class GiltgroveStalker extends CardImpl { this.toughness = new MageInt(1); // Giltgrove Stalker can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); } public GiltgroveStalker(final GiltgroveStalker card) { diff --git a/Mage.Sets/src/mage/cards/g/GreaterSandwurm.java b/Mage.Sets/src/mage/cards/g/GreaterSandwurm.java index 08f7d266d34..ba37e1933f2 100644 --- a/Mage.Sets/src/mage/cards/g/GreaterSandwurm.java +++ b/Mage.Sets/src/mage/cards/g/GreaterSandwurm.java @@ -1,33 +1,21 @@ - package mage.cards.g; -import java.util.UUID; import mage.MageInt; -import mage.abilities.common.SimpleEvasionAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; import mage.abilities.keyword.CyclingAbility; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.ComparisonType; -import mage.constants.Duration; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; + +import java.util.UUID; /** - * * @author fireshoes */ public final class GreaterSandwurm extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public GreaterSandwurm(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}{G}"); @@ -36,7 +24,7 @@ public final class GreaterSandwurm extends CardImpl { this.toughness = new MageInt(7); // Greater Sandwurm can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); // Cycling {2} this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}"))); diff --git a/Mage.Sets/src/mage/cards/o/OutlandBoar.java b/Mage.Sets/src/mage/cards/o/OutlandBoar.java index 1c72625a878..25a4f2839a6 100644 --- a/Mage.Sets/src/mage/cards/o/OutlandBoar.java +++ b/Mage.Sets/src/mage/cards/o/OutlandBoar.java @@ -1,31 +1,19 @@ - package mage.cards.o; -import java.util.UUID; import mage.MageInt; -import mage.abilities.common.SimpleEvasionAbility; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.ComparisonType; -import mage.constants.Duration; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; + +import java.util.UUID; /** - * * @author fireshoes */ public final class OutlandBoar extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public OutlandBoar(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{G}"); @@ -34,7 +22,7 @@ public final class OutlandBoar extends CardImpl { this.toughness = new MageInt(4); // Outland Boar can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); } public OutlandBoar(final OutlandBoar card) { diff --git a/Mage.Sets/src/mage/cards/q/QuestingBeast.java b/Mage.Sets/src/mage/cards/q/QuestingBeast.java index a99babbfa06..a44d3972af0 100644 --- a/Mage.Sets/src/mage/cards/q/QuestingBeast.java +++ b/Mage.Sets/src/mage/cards/q/QuestingBeast.java @@ -3,11 +3,10 @@ package mage.cards.q; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.common.SimpleEvasionAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; import mage.abilities.effects.common.DamageTargetEffect; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; +import mage.abilities.keyword.DauntAbility; import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.VigilanceAbility; @@ -15,9 +14,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterPlaneswalkerPermanent; -import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; import mage.game.events.DamagedEvent; @@ -34,13 +31,6 @@ import java.util.UUID; */ public final class QuestingBeast extends CardImpl { - private static final FilterCreaturePermanent filter - = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public QuestingBeast(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); @@ -59,7 +49,7 @@ public final class QuestingBeast extends CardImpl { this.addAbility(HasteAbility.getInstance()); // Questing Beast can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); // Combat damage that would be dealt by creatures you control can't be prevented. this.addAbility(new SimpleStaticAbility(new QuestingBeastPreventionEffect())); diff --git a/Mage.Sets/src/mage/cards/r/RavenousSlime.java b/Mage.Sets/src/mage/cards/r/RavenousSlime.java index 56a4df323db..069950be45a 100644 --- a/Mage.Sets/src/mage/cards/r/RavenousSlime.java +++ b/Mage.Sets/src/mage/cards/r/RavenousSlime.java @@ -2,17 +2,14 @@ package mage.cards.r; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.SimpleEvasionAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ReplacementEffectImpl; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.counters.CounterType; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; @@ -26,13 +23,6 @@ import java.util.UUID; */ public final class RavenousSlime extends CardImpl { - private static final FilterCreaturePermanent filter - = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public RavenousSlime(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); @@ -41,13 +31,10 @@ public final class RavenousSlime extends CardImpl { this.toughness = new MageInt(1); // Ravenous Slime can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); // If a creature an opponent controls would die, instead exile it and put a number of +1/+1 counters equal to that creature's power on Ravenous Slime. - this.addAbility(new SimpleStaticAbility( - Zone.BATTLEFIELD, - new RavenousSlimeEffect() - )); + this.addAbility(new SimpleStaticAbility(new RavenousSlimeEffect())); } public RavenousSlime(final RavenousSlime card) { diff --git a/Mage.Sets/src/mage/cards/s/ScuttlingDoomEngine.java b/Mage.Sets/src/mage/cards/s/ScuttlingDoomEngine.java index 52469546ce5..e91e4c38782 100644 --- a/Mage.Sets/src/mage/cards/s/ScuttlingDoomEngine.java +++ b/Mage.Sets/src/mage/cards/s/ScuttlingDoomEngine.java @@ -1,35 +1,23 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.common.SimpleEvasionAbility; import mage.abilities.effects.common.DamageTargetEffect; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.ComparisonType; -import mage.constants.Duration; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; import mage.target.common.TargetOpponentOrPlaneswalker; +import java.util.UUID; + /** - * * @author emerald000 */ public final class ScuttlingDoomEngine extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public ScuttlingDoomEngine(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}"); @@ -39,7 +27,8 @@ public final class ScuttlingDoomEngine extends CardImpl { this.toughness = new MageInt(6); // Scuttling Doom Engine can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); + // When Scuttling Doom Engine dies, it deals 6 damage to target opponnent Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(6, "it"), false); ability.addTarget(new TargetOpponentOrPlaneswalker()); diff --git a/Mage.Sets/src/mage/cards/s/SteelLeafChampion.java b/Mage.Sets/src/mage/cards/s/SteelLeafChampion.java index 783a0beb6f6..9db1ad96c88 100644 --- a/Mage.Sets/src/mage/cards/s/SteelLeafChampion.java +++ b/Mage.Sets/src/mage/cards/s/SteelLeafChampion.java @@ -1,31 +1,19 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; -import mage.abilities.common.SimpleEvasionAbility; -import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; -import mage.constants.SubType; +import mage.abilities.keyword.DauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.ComparisonType; -import mage.constants.Duration; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.PowerPredicate; +import mage.constants.SubType; + +import java.util.UUID; /** - * * @author TheElk801 */ public final class SteelLeafChampion extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less"); - - static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); - } - public SteelLeafChampion(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{G}{G}"); @@ -35,7 +23,7 @@ public final class SteelLeafChampion extends CardImpl { this.toughness = new MageInt(4); // Steel Leaf Champion can't be blocked by creatures with power 2 or less. - this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); + this.addAbility(new DauntAbility()); } public SteelLeafChampion(final SteelLeafChampion card) { diff --git a/Mage.Sets/src/mage/sets/CommanderLegends.java b/Mage.Sets/src/mage/sets/CommanderLegends.java index 5ba54f9f5bc..cf818d491ca 100644 --- a/Mage.Sets/src/mage/sets/CommanderLegends.java +++ b/Mage.Sets/src/mage/sets/CommanderLegends.java @@ -166,6 +166,7 @@ public final class CommanderLegends extends ExpansionSet { cards.add(new SetCardInfo("Fertilid", 226, Rarity.COMMON, mage.cards.f.Fertilid.class)); cards.add(new SetCardInfo("Fiery Cannonade", 178, Rarity.COMMON, mage.cards.f.FieryCannonade.class)); cards.add(new SetCardInfo("Filigree Familiar", 308, Rarity.COMMON, mage.cards.f.FiligreeFamiliar.class)); + cards.add(new SetCardInfo("Fin-Clade Fugitives", 227, Rarity.COMMON, mage.cards.f.FinCladeFugitives.class)); cards.add(new SetCardInfo("Fire Diamond", 309, Rarity.COMMON, mage.cards.f.FireDiamond.class)); cards.add(new SetCardInfo("Fireshrieker", 462, Rarity.UNCOMMON, mage.cards.f.Fireshrieker.class)); cards.add(new SetCardInfo("First Response", 22, Rarity.UNCOMMON, mage.cards.f.FirstResponse.class)); diff --git a/Mage/src/main/java/mage/abilities/keyword/DauntAbility.java b/Mage/src/main/java/mage/abilities/keyword/DauntAbility.java new file mode 100644 index 00000000000..71ea5cc3104 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/keyword/DauntAbility.java @@ -0,0 +1,38 @@ +package mage.abilities.keyword; + +import mage.abilities.common.SimpleEvasionAbility; +import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; +import mage.constants.ComparisonType; +import mage.constants.Duration; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; + +/** + * @author TheElk801 + */ +public class DauntAbility extends SimpleEvasionAbility { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); + + static { + filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); + } + + public DauntAbility() { + super(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield)); + } + + private DauntAbility(final DauntAbility ability) { + super(ability); + } + + @Override + public DauntAbility copy() { + return new DauntAbility(this); + } + + @Override + public String getRule() { + return "{this} can't be blocked by creatures with power 2 or less."; + } +} diff --git a/Mage/src/main/java/mage/abilities/keyword/MenaceAbility.java b/Mage/src/main/java/mage/abilities/keyword/MenaceAbility.java index 711b7b8d2a4..412c98d48cb 100644 --- a/Mage/src/main/java/mage/abilities/keyword/MenaceAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/MenaceAbility.java @@ -1,17 +1,10 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package mage.abilities.keyword; -import mage.abilities.Ability; import mage.abilities.StaticAbility; import mage.abilities.effects.common.combat.CantBeBlockedByOneEffect; import mage.constants.Zone; /** - * * @author LevelX2 */ public class MenaceAbility extends StaticAbility { // Menace may not be a Singleton because the source ability is needed in the continuous effect @@ -33,7 +26,7 @@ public class MenaceAbility extends StaticAbility { // Menace may not be a Single } @Override - public Ability copy() { + public MenaceAbility copy() { return new MenaceAbility(this); } @@ -45,5 +38,4 @@ public class MenaceAbility extends StaticAbility { // Menace may not be a Single } return res; } - }