diff --git a/Mage.Sets/src/mage/sets/lorwyn/BoggartMob.java b/Mage.Sets/src/mage/sets/lorwyn/BoggartMob.java index e80f8e9d8f4..1219ddd2392 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/BoggartMob.java +++ b/Mage.Sets/src/mage/sets/lorwyn/BoggartMob.java @@ -61,7 +61,7 @@ public class BoggartMob extends CardImpl { this.toughness = new MageInt(5); // Champion a Goblin - this.addAbility(new ChampionAbility(this, "Goblin")); + this.addAbility(new ChampionAbility(this, "Goblin", false)); // Whenever a Goblin you control deals combat damage to a player, you may put a 1/1 black Goblin Rogue creature token onto the battlefield. this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility( diff --git a/Mage.Sets/src/mage/sets/lorwyn/ChangelingBerserker.java b/Mage.Sets/src/mage/sets/lorwyn/ChangelingBerserker.java index 524432df7b4..0429e5c68c0 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ChangelingBerserker.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ChangelingBerserker.java @@ -56,7 +56,7 @@ public class ChangelingBerserker extends CardImpl { this.addAbility(HasteAbility.getInstance()); // Champion a creature - this.addAbility(new ChampionAbility(this, "")); + this.addAbility(new ChampionAbility(this, "", true)); } public ChangelingBerserker(final ChangelingBerserker card) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/ChangelingHero.java b/Mage.Sets/src/mage/sets/lorwyn/ChangelingHero.java index 02cb5eb2aab..36ea354b4e8 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ChangelingHero.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ChangelingHero.java @@ -53,7 +53,7 @@ public class ChangelingHero extends CardImpl { this.addAbility(ChangelingAbility.getInstance()); // Champion a creature - this.addAbility(new ChampionAbility(this, "")); + this.addAbility(new ChampionAbility(this, "", true)); // Lifelink this.addAbility(LifelinkAbility.getInstance()); diff --git a/Mage.Sets/src/mage/sets/lorwyn/ChangelingTitan.java b/Mage.Sets/src/mage/sets/lorwyn/ChangelingTitan.java index 99915222520..124247eebcb 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ChangelingTitan.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ChangelingTitan.java @@ -52,7 +52,7 @@ public class ChangelingTitan extends CardImpl { this.addAbility(ChangelingAbility.getInstance()); // Champion a creature - this.addAbility(new ChampionAbility(this, "")); + this.addAbility(new ChampionAbility(this, "", true)); } public ChangelingTitan(final ChangelingTitan card) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/MistbindClique.java b/Mage.Sets/src/mage/sets/lorwyn/MistbindClique.java index 9c5c7b0efa3..33f9ef68035 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/MistbindClique.java +++ b/Mage.Sets/src/mage/sets/lorwyn/MistbindClique.java @@ -64,7 +64,7 @@ public class MistbindClique extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // Champion a Faerie - this.addAbility(new ChampionAbility(this, "Faerie")); + this.addAbility(new ChampionAbility(this, "Faerie", false)); // When a Faerie is championed with Mistbind Clique, tap all lands target player controls. this.addAbility(new MistbindCliqueAbility()); diff --git a/Mage.Sets/src/mage/sets/lorwyn/NovaChaser.java b/Mage.Sets/src/mage/sets/lorwyn/NovaChaser.java index a36f051d3c7..4a3eefb3ee0 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/NovaChaser.java +++ b/Mage.Sets/src/mage/sets/lorwyn/NovaChaser.java @@ -53,7 +53,7 @@ public class NovaChaser extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // Champion an Elemental - this.addAbility(new ChampionAbility(this, "Elemental")); + this.addAbility(new ChampionAbility(this, "Elemental", false)); } public NovaChaser(final NovaChaser card) { diff --git a/Mage.Sets/src/mage/sets/lorwyn/ThoughtweftTrio.java b/Mage.Sets/src/mage/sets/lorwyn/ThoughtweftTrio.java index 0aefa5956e3..f2e66637bdd 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ThoughtweftTrio.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ThoughtweftTrio.java @@ -60,7 +60,7 @@ public class ThoughtweftTrio extends CardImpl { this.addAbility(VigilanceAbility.getInstance()); // Champion a Kithkin - this.addAbility(new ChampionAbility(this, "Kithkin")); + this.addAbility(new ChampionAbility(this, "Kithkin", false)); // Thoughtweft Trio can block any number of creatures. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockAdditionalCreatureEffect(0))); diff --git a/Mage.Sets/src/mage/sets/lorwyn/WanderwineProphets.java b/Mage.Sets/src/mage/sets/lorwyn/WanderwineProphets.java index 69cf8b5c340..0e98db61048 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/WanderwineProphets.java +++ b/Mage.Sets/src/mage/sets/lorwyn/WanderwineProphets.java @@ -63,7 +63,7 @@ public class WanderwineProphets extends CardImpl { this.toughness = new MageInt(4); // Champion a Merfolk - this.addAbility(new ChampionAbility(this, "Merfolk")); + this.addAbility(new ChampionAbility(this, "Merfolk", false)); // Whenever Wanderwine Prophets deals combat damage to a player, you may sacrifice a Merfolk. If you do, take an extra turn after this one. Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new AddExtraTurnControllerEffect(), true); ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(1, 1, filter, true))); diff --git a/Mage.Sets/src/mage/sets/lorwyn/WrensRunPackmaster.java b/Mage.Sets/src/mage/sets/lorwyn/WrensRunPackmaster.java index ad836b2b29f..874e2351e1d 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/WrensRunPackmaster.java +++ b/Mage.Sets/src/mage/sets/lorwyn/WrensRunPackmaster.java @@ -70,7 +70,7 @@ public class WrensRunPackmaster extends CardImpl { this.toughness = new MageInt(5); // Champion an Elf - this.addAbility(new ChampionAbility(this, "Elf")); + this.addAbility(new ChampionAbility(this, "Elf", false)); // {2}{G}: Put a 2/2 green Wolf creature token onto the battlefield. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new WolfToken("LRW")), new ManaCostsImpl<>("{2}{G}"))); diff --git a/Mage.Sets/src/mage/sets/morningtide/LightningCrafter.java b/Mage.Sets/src/mage/sets/morningtide/LightningCrafter.java index db2d19cd279..e1e858b2d62 100644 --- a/Mage.Sets/src/mage/sets/morningtide/LightningCrafter.java +++ b/Mage.Sets/src/mage/sets/morningtide/LightningCrafter.java @@ -55,7 +55,7 @@ public class LightningCrafter extends CardImpl { this.toughness = new MageInt(3); // Champion a Goblin or Shaman - this.addAbility(new ChampionAbility(this, new String[]{"Goblin", "Shaman"})); + this.addAbility(new ChampionAbility(this, new String[]{"Goblin", "Shaman"}, false)); // {T}: Lightning Crafter deals 3 damage to target creature or player. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new TapSourceCost()); diff --git a/Mage.Sets/src/mage/sets/morningtide/SupremeExemplar.java b/Mage.Sets/src/mage/sets/morningtide/SupremeExemplar.java index 77b80554c8b..4fb577d8163 100644 --- a/Mage.Sets/src/mage/sets/morningtide/SupremeExemplar.java +++ b/Mage.Sets/src/mage/sets/morningtide/SupremeExemplar.java @@ -60,7 +60,7 @@ public class SupremeExemplar extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Champion an Elemental - this.addAbility(new ChampionAbility(this, "Elemental")); + this.addAbility(new ChampionAbility(this, "Elemental", false)); } public SupremeExemplar(final SupremeExemplar card) { diff --git a/Mage.Sets/src/mage/sets/morningtide/UnstoppableAsh.java b/Mage.Sets/src/mage/sets/morningtide/UnstoppableAsh.java index aa60c72fdea..b0173a8791f 100644 --- a/Mage.Sets/src/mage/sets/morningtide/UnstoppableAsh.java +++ b/Mage.Sets/src/mage/sets/morningtide/UnstoppableAsh.java @@ -68,7 +68,7 @@ public class UnstoppableAsh extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // Champion a Treefolk or Warrior - this.addAbility(new ChampionAbility(this, new String[]{"Treefolk", "Warrior"})); + this.addAbility(new ChampionAbility(this, new String[]{"Treefolk", "Warrior"}, false)); // Whenever a creature you control becomes blocked, it gets +0/+5 until end of turn. Effect effect = new BoostTargetEffect(0, 5, Duration.EndOfTurn); diff --git a/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java b/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java index 21becfa5503..215ee856eca 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java @@ -39,11 +39,13 @@ import mage.abilities.costs.CostImpl; import mage.abilities.effects.common.ReturnFromExileForSourceEffect; import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect; import mage.cards.Card; +import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; import mage.game.Game; @@ -74,8 +76,8 @@ public class ChampionAbility extends StaticAbility { protected String[] subtypes; protected String objectDescription; - public ChampionAbility(Card card, String subtype) { - this(card, new String[]{subtype}); + public ChampionAbility(Card card, String subtype, boolean requiresCreature) { + this(card, new String[]{subtype}, requiresCreature); } /** @@ -85,8 +87,9 @@ public class ChampionAbility extends StaticAbility { * @param card * @param subtypes subtypes to champion with, if empty all creatures can be * used + * @param requiresCreature for cards that specifically require championing another creature */ - public ChampionAbility(Card card, String[] subtypes) { + public ChampionAbility(Card card, String[] subtypes, boolean requiresCreature) { super(Zone.BATTLEFIELD, null); this.subtypes = subtypes; @@ -111,6 +114,9 @@ public class ChampionAbility extends StaticAbility { if (!subtypesPredicates.isEmpty()) { filter.add(Predicates.or(subtypesPredicates)); } + if (requiresCreature) { + filter.add(new CardTypePredicate(CardType.CREATURE)); + } filter.add(new AnotherPredicate()); // When this permanent enters the battlefield, sacrifice it unless you exile another [object] you control.