diff --git a/Mage.Sets/src/mage/cards/a/AfterburnerExpert.java b/Mage.Sets/src/mage/cards/a/AfterburnerExpert.java index f3661eb8189..41b2538d1a5 100644 --- a/Mage.Sets/src/mage/cards/a/AfterburnerExpert.java +++ b/Mage.Sets/src/mage/cards/a/AfterburnerExpert.java @@ -14,9 +14,7 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.FilterStackObject; -import mage.filter.predicate.Predicate; -import mage.game.Game; -import mage.game.stack.StackObject; +import mage.filter.predicate.other.ExhaustAbilityPredicate; import java.util.UUID; @@ -28,7 +26,7 @@ public final class AfterburnerExpert extends CardImpl { private static final FilterStackObject filter = new FilterStackObject("an exhaust ability"); static { - filter.add(AfterburnerExpertPredicate.instance); + filter.add(ExhaustAbilityPredicate.instance); } public AfterburnerExpert(UUID ownerId, CardSetInfo setInfo) { @@ -59,12 +57,3 @@ public final class AfterburnerExpert extends CardImpl { return new AfterburnerExpert(this); } } - -enum AfterburnerExpertPredicate implements Predicate { - instance; - - @Override - public boolean apply(StackObject input, Game game) { - return input.getStackAbility() instanceof ExhaustAbility; - } -} diff --git a/Mage.Sets/src/mage/cards/r/RangersAetherhive.java b/Mage.Sets/src/mage/cards/r/RangersAetherhive.java new file mode 100644 index 00000000000..569447b66b1 --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RangersAetherhive.java @@ -0,0 +1,57 @@ +package mage.cards.r; + +import mage.MageInt; +import mage.abilities.common.ActivateAbilityTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.CrewAbility; +import mage.abilities.keyword.VigilanceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SetTargetPointer; +import mage.constants.SubType; +import mage.filter.FilterStackObject; +import mage.filter.predicate.other.ExhaustAbilityPredicate; +import mage.game.permanent.token.ThopterColorlessToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class RangersAetherhive extends CardImpl { + + private static final FilterStackObject filter = new FilterStackObject("an exhaust ability"); + + static { + filter.add(ExhaustAbilityPredicate.instance); + } + + public RangersAetherhive(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{G}{U}"); + + this.subtype.add(SubType.VEHICLE); + this.power = new MageInt(3); + this.toughness = new MageInt(5); + + // Vigilance + this.addAbility(VigilanceAbility.getInstance()); + + // Whenever you activate an exhaust ability, create a 1/1 colorless Thopter artifact creature token with flying. + this.addAbility(new ActivateAbilityTriggeredAbility( + new CreateTokenEffect(new ThopterColorlessToken()), filter, SetTargetPointer.NONE + )); + + // Crew 1 + this.addAbility(new CrewAbility(1)); + } + + private RangersAetherhive(final RangersAetherhive card) { + super(card); + } + + @Override + public RangersAetherhive copy() { + return new RangersAetherhive(this); + } +} diff --git a/Mage.Sets/src/mage/cards/r/RangersRefueler.java b/Mage.Sets/src/mage/cards/r/RangersRefueler.java index b7d9d73ed4f..0aba917d073 100644 --- a/Mage.Sets/src/mage/cards/r/RangersRefueler.java +++ b/Mage.Sets/src/mage/cards/r/RangersRefueler.java @@ -17,9 +17,7 @@ import mage.constants.SetTargetPointer; import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.FilterStackObject; -import mage.filter.predicate.Predicate; -import mage.game.Game; -import mage.game.stack.StackObject; +import mage.filter.predicate.other.ExhaustAbilityPredicate; import java.util.UUID; @@ -31,7 +29,7 @@ public final class RangersRefueler extends CardImpl { private static final FilterStackObject filter = new FilterStackObject("an exhaust ability"); static { - filter.add(RangersRefuelerPredicate.instance); + filter.add(ExhaustAbilityPredicate.instance); } public RangersRefueler(UUID ownerId, CardSetInfo setInfo) { @@ -67,12 +65,3 @@ public final class RangersRefueler extends CardImpl { return new RangersRefueler(this); } } - -enum RangersRefuelerPredicate implements Predicate { - instance; - - @Override - public boolean apply(StackObject input, Game game) { - return input.getStackAbility() instanceof ExhaustAbility; - } -} diff --git a/Mage.Sets/src/mage/sets/Aetherdrift.java b/Mage.Sets/src/mage/sets/Aetherdrift.java index a7fb533a74b..bcf00c75f1c 100644 --- a/Mage.Sets/src/mage/sets/Aetherdrift.java +++ b/Mage.Sets/src/mage/sets/Aetherdrift.java @@ -120,6 +120,7 @@ public final class Aetherdrift extends ExpansionSet { cards.add(new SetCardInfo("Pyrewood Gearhulk", 216, Rarity.MYTHIC, mage.cards.p.PyrewoodGearhulk.class)); cards.add(new SetCardInfo("Quag Feast", 100, Rarity.RARE, mage.cards.q.QuagFeast.class)); cards.add(new SetCardInfo("Racers' Scoreboard", 239, Rarity.UNCOMMON, mage.cards.r.RacersScoreboard.class)); + cards.add(new SetCardInfo("Rangers' Aetherhive", 217, Rarity.UNCOMMON, mage.cards.r.RangersAetherhive.class)); cards.add(new SetCardInfo("Rangers' Refueler", 55, Rarity.UNCOMMON, mage.cards.r.RangersRefueler.class)); cards.add(new SetCardInfo("Reef Roads", 259, Rarity.UNCOMMON, mage.cards.r.ReefRoads.class)); cards.add(new SetCardInfo("Regal Imperiosaur", 177, Rarity.RARE, mage.cards.r.RegalImperiosaur.class)); diff --git a/Mage/src/main/java/mage/filter/predicate/other/ExhaustAbilityPredicate.java b/Mage/src/main/java/mage/filter/predicate/other/ExhaustAbilityPredicate.java new file mode 100644 index 00000000000..e0f46614a9e --- /dev/null +++ b/Mage/src/main/java/mage/filter/predicate/other/ExhaustAbilityPredicate.java @@ -0,0 +1,18 @@ +package mage.filter.predicate.other; + +import mage.abilities.keyword.ExhaustAbility; +import mage.filter.predicate.Predicate; +import mage.game.Game; +import mage.game.stack.StackObject; + +/** + * @author TheElk801 + */ +public enum ExhaustAbilityPredicate implements Predicate { + instance; + + @Override + public boolean apply(StackObject input, Game game) { + return input.getStackAbility() instanceof ExhaustAbility; + } +}