diff --git a/Mage.Sets/src/mage/cards/b/Badgermole.java b/Mage.Sets/src/mage/cards/b/Badgermole.java index 0c6326da4e9..24d46635ab7 100644 --- a/Mage.Sets/src/mage/cards/b/Badgermole.java +++ b/Mage.Sets/src/mage/cards/b/Badgermole.java @@ -13,7 +13,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.StaticFilters; -import mage.target.TargetPermanent; +import mage.target.common.TargetControlledLandPermanent; import java.util.UUID; @@ -32,7 +32,7 @@ public final class Badgermole extends CardImpl { // When this creature enters, earthbend 2. Ability ability = new EntersBattlefieldTriggeredAbility(new EarthbendTargetEffect(2)); - ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND)); + ability.addTarget(new TargetControlledLandPermanent()); this.addAbility(ability); // Creatures you control with +1/+1 counters on them have trample. diff --git a/Mage.Sets/src/mage/cards/b/BumiEclecticEarthbender.java b/Mage.Sets/src/mage/cards/b/BumiEclecticEarthbender.java index f8ad29546ec..6fc1617a324 100644 --- a/Mage.Sets/src/mage/cards/b/BumiEclecticEarthbender.java +++ b/Mage.Sets/src/mage/cards/b/BumiEclecticEarthbender.java @@ -13,9 +13,8 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.counters.CounterType; import mage.filter.FilterPermanent; -import mage.filter.StaticFilters; import mage.filter.common.FilterControlledCreaturePermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetControlledLandPermanent; import java.util.UUID; @@ -42,7 +41,7 @@ public final class BumiEclecticEarthbender extends CardImpl { // When Bumi enters, earthbend 1. Ability ability = new EntersBattlefieldTriggeredAbility(new EarthbendTargetEffect(1)); - ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND)); + ability.addTarget(new TargetControlledLandPermanent()); this.addAbility(ability); // Whenever Bumi attacks, put two +1/+1 counters on each land creature you control. diff --git a/Mage.Sets/src/mage/cards/d/DaiLiIndoctrination.java b/Mage.Sets/src/mage/cards/d/DaiLiIndoctrination.java index 7b5a7c24c06..04a7b59fc45 100644 --- a/Mage.Sets/src/mage/cards/d/DaiLiIndoctrination.java +++ b/Mage.Sets/src/mage/cards/d/DaiLiIndoctrination.java @@ -8,10 +8,9 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.StaticFilters; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.Predicates; -import mage.target.TargetPermanent; +import mage.target.common.TargetControlledLandPermanent; import mage.target.common.TargetOpponent; import java.util.UUID; @@ -39,7 +38,7 @@ public final class DaiLiIndoctrination extends CardImpl { // * Earthbend 2. this.getSpellAbility().addMode(new Mode(new EarthbendTargetEffect(2)) - .addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND))); + .addTarget(new TargetControlledLandPermanent())); } private DaiLiIndoctrination(final DaiLiIndoctrination card) { diff --git a/Mage.Sets/src/mage/cards/e/EarthRumble.java b/Mage.Sets/src/mage/cards/e/EarthRumble.java index cda332c1739..9a90e31c967 100644 --- a/Mage.Sets/src/mage/cards/e/EarthRumble.java +++ b/Mage.Sets/src/mage/cards/e/EarthRumble.java @@ -9,10 +9,9 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; -import mage.filter.StaticFilters; import mage.game.Game; -import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.common.TargetControlledLandPermanent; import mage.target.common.TargetOpponentsCreaturePermanent; import java.util.UUID; @@ -27,7 +26,7 @@ public final class EarthRumble extends CardImpl { // Earthbend 2. When you do, up to one target creature you control fights target creature an opponent controls. this.getSpellAbility().addEffect(new EarthbendTargetEffect(2)); - this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND)); + this.getSpellAbility().addTarget(new TargetControlledLandPermanent()); this.getSpellAbility().addEffect(new EarthRumbleEffect()); } diff --git a/Mage.Sets/src/mage/cards/e/EarthVillageRuffians.java b/Mage.Sets/src/mage/cards/e/EarthVillageRuffians.java index 19a0aeb8634..25245ce79be 100644 --- a/Mage.Sets/src/mage/cards/e/EarthVillageRuffians.java +++ b/Mage.Sets/src/mage/cards/e/EarthVillageRuffians.java @@ -8,8 +8,7 @@ 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.TargetControlledLandPermanent; import java.util.UUID; @@ -29,7 +28,7 @@ public final class EarthVillageRuffians extends CardImpl { // When this creature dies, earthbend 2. Ability ability = new DiesSourceTriggeredAbility(new EarthbendTargetEffect(2)); - ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND)); + ability.addTarget(new TargetControlledLandPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EarthbendingLesson.java b/Mage.Sets/src/mage/cards/e/EarthbendingLesson.java index 5a44f3d666c..61962ad7d52 100644 --- a/Mage.Sets/src/mage/cards/e/EarthbendingLesson.java +++ b/Mage.Sets/src/mage/cards/e/EarthbendingLesson.java @@ -5,8 +5,7 @@ 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.TargetControlledLandPermanent; import java.util.UUID; @@ -22,7 +21,7 @@ public final class EarthbendingLesson extends CardImpl { // Earthbend 4. this.getSpellAbility().addEffect(new EarthbendTargetEffect(4)); - this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND)); + this.getSpellAbility().addTarget(new TargetControlledLandPermanent()); } private EarthbendingLesson(final EarthbendingLesson card) { diff --git a/Mage.Sets/src/mage/cards/h/HaruHiddenTalent.java b/Mage.Sets/src/mage/cards/h/HaruHiddenTalent.java index 4c46979c96d..a7a1f7f82a5 100644 --- a/Mage.Sets/src/mage/cards/h/HaruHiddenTalent.java +++ b/Mage.Sets/src/mage/cards/h/HaruHiddenTalent.java @@ -10,15 +10,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterPermanent; -import mage.filter.StaticFilters; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.AnotherPredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetControlledLandPermanent; import java.util.UUID; /** - * * @author Grath */ public final class HaruHiddenTalent extends CardImpl { @@ -30,7 +28,7 @@ public final class HaruHiddenTalent extends CardImpl { } public HaruHiddenTalent(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.PEASANT); this.subtype.add(SubType.ALLY); @@ -40,7 +38,7 @@ public final class HaruHiddenTalent extends CardImpl { // Whenever another Ally you control enters, earthbend 1. Ability ability = new EntersBattlefieldAllTriggeredAbility(new EarthbendTargetEffect(1), filter); - ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND)); + ability.addTarget(new TargetControlledLandPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RebelliousCaptives.java b/Mage.Sets/src/mage/cards/r/RebelliousCaptives.java new file mode 100644 index 00000000000..bfb736d6453 --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RebelliousCaptives.java @@ -0,0 +1,49 @@ +package mage.cards.r; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.keyword.EarthbendTargetEffect; +import mage.abilities.keyword.ExhaustAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.counters.CounterType; +import mage.target.common.TargetControlledLandPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class RebelliousCaptives extends CardImpl { + + public RebelliousCaptives(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.PEASANT); + this.subtype.add(SubType.ALLY); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Exhaust -- {6}: Put two +1/+1 counters on this creature, then earthbend 2. + Ability ability = new ExhaustAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), new GenericManaCost(6) + ); + ability.addEffect(new EarthbendTargetEffect(2).concatBy(", then")); + ability.addTarget(new TargetControlledLandPermanent()); + this.addAbility(ability); + } + + private RebelliousCaptives(final RebelliousCaptives card) { + super(card); + } + + @Override + public RebelliousCaptives copy() { + return new RebelliousCaptives(this); + } +} diff --git a/Mage.Sets/src/mage/cards/t/TophTheFirstMetalbender.java b/Mage.Sets/src/mage/cards/t/TophTheFirstMetalbender.java index bb8cb053c15..480c7237efd 100644 --- a/Mage.Sets/src/mage/cards/t/TophTheFirstMetalbender.java +++ b/Mage.Sets/src/mage/cards/t/TophTheFirstMetalbender.java @@ -10,12 +10,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.FilterPermanent; -import mage.filter.StaticFilters; import mage.filter.common.FilterControlledArtifactPermanent; import mage.filter.predicate.permanent.TokenPredicate; import mage.game.Game; import mage.game.permanent.Permanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetControlledLandPermanent; import java.util.UUID; @@ -39,7 +38,7 @@ public final class TophTheFirstMetalbender extends CardImpl { // At the beginning of your end step, earthbend 2. Ability ability = new BeginningOfEndStepTriggeredAbility(new EarthbendTargetEffect(2)); - ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND)); + ability.addTarget(new TargetControlledLandPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java index 2362c1b005b..eac1a3a824b 100644 --- a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java +++ b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java @@ -74,6 +74,7 @@ public final class AvatarTheLastAirbender extends ExpansionSet { cards.add(new SetCardInfo("Ozai's Cruelty", 113, Rarity.UNCOMMON, mage.cards.o.OzaisCruelty.class)); cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Pretending Poxbearers", 237, Rarity.COMMON, mage.cards.p.PretendingPoxbearers.class)); + cards.add(new SetCardInfo("Rebellious Captives", 191, Rarity.COMMON, mage.cards.r.RebelliousCaptives.class)); cards.add(new SetCardInfo("Redirect Lightning", 151, Rarity.RARE, mage.cards.r.RedirectLightning.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Redirect Lightning", 343, Rarity.RARE, mage.cards.r.RedirectLightning.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Saber-Tooth Moose-Lion", 194, Rarity.COMMON, mage.cards.s.SaberToothMooseLion.class)); diff --git a/Mage/src/main/java/mage/target/common/TargetControlledLandPermanent.java b/Mage/src/main/java/mage/target/common/TargetControlledLandPermanent.java new file mode 100644 index 00000000000..6329c37bb9a --- /dev/null +++ b/Mage/src/main/java/mage/target/common/TargetControlledLandPermanent.java @@ -0,0 +1,30 @@ +package mage.target.common; + +import mage.filter.StaticFilters; + +/** + * @author TheElk801 + */ +public class TargetControlledLandPermanent extends TargetControlledPermanent { + + public TargetControlledLandPermanent() { + this(1); + } + + public TargetControlledLandPermanent(int numTargets) { + this(numTargets, numTargets); + } + + public TargetControlledLandPermanent(int minNumTargets, int maxNumTargets) { + super(minNumTargets, maxNumTargets, maxNumTargets > 1 ? StaticFilters.FILTER_CONTROLLED_PERMANENT_LANDS : StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND, false); + } + + protected TargetControlledLandPermanent(final TargetControlledLandPermanent target) { + super(target); + } + + @Override + public TargetControlledLandPermanent copy() { + return new TargetControlledLandPermanent(this); + } +} diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 902175316da..9c8920538a8 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -59780,7 +59780,7 @@ Haru, Hidden Talent|Avatar: The Last Airbender|182|U|{1}{G}|Legendary Creature - Ostrich-Horse|Avatar: The Last Airbender|188|C|{2}{G}|Creature - Bird Horse|3|1|When this creature enters, mill three cards. You may put a land card from among them into your hand. If you don't, put a +1/+1 counter on this creature.| Pillar Launch|Avatar: The Last Airbender|189|C|{G}|Instant|||Target creature gets +2/+2 and gains reach until end of turn. Untap it.| Raucous Audience|Avatar: The Last Airbender|190|C|{1}{G}|Creature - Human Citizen|2|1|{T}: Add {G}. If you control a creature with power 4 or greater, add {G}{G} instead.| -Rebellious Captives|Avatar: The Last Airbender|191|C|{1}{G}|Creature - Human Peasant Ally|2|2|Exhaust -- {G}: Put two +1/+1 counters on this creature, then earthbend 2.| +Rebellious Captives|Avatar: The Last Airbender|191|C|{1}{G}|Creature - Human Peasant Ally|2|2|Exhaust -- {6}: Put two +1/+1 counters on this creature, then earthbend 2.| Rocky Rebuke|Avatar: The Last Airbender|193|C|{1}{G}|Instant|||Target creature you control deals damage equal to its power to target creature an opponent controls.| Saber-Tooth Moose-Lion|Avatar: The Last Airbender|194|C|{4}{G}{G}|Creature - Elk Cat|7|7|Reach$Forestcycling {2}| Toph, the Blind Bandit|Avatar: The Last Airbender|198|U|{2}{G}|Legendary Creature - Human Warrior Ally|*|3|When Toph enters, earthbend 2.$Toph's power is equal to the number of +1/+1 counters on lands you control.|