From c28da75ac10ebc7cbb83e7447f128dd3c4e4452b Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 14 Feb 2022 21:35:07 -0500 Subject: [PATCH] some more text fixes for adding counter effects --- .../src/mage/cards/a/AjaniAdversaryOfTyrants.java | 13 +++++++------ .../src/mage/cards/e/ElspethUndauntedHero.java | 4 ++-- .../src/mage/cards/j/JuganDefendsTheTemple.java | 6 ++++-- Mage.Sets/src/mage/cards/j/JukaiPreserver.java | 4 +++- .../src/mage/cards/k/KatsumasaTheAnimator.java | 4 +--- .../test/java/mage/verify/VerifyCardDataTest.java | 14 ++++++++++++++ .../common/counter/AddCountersTargetEffect.java | 3 +++ 7 files changed, 34 insertions(+), 14 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AjaniAdversaryOfTyrants.java b/Mage.Sets/src/mage/cards/a/AjaniAdversaryOfTyrants.java index 2fc62a83bcf..fcdc8d17509 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniAdversaryOfTyrants.java +++ b/Mage.Sets/src/mage/cards/a/AjaniAdversaryOfTyrants.java @@ -1,26 +1,27 @@ package mage.cards.a; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; -import mage.constants.SubType; -import mage.constants.SuperType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.ComparisonType; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.counters.CounterType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.game.command.emblems.AjaniAdversaryOfTyrantsEmblem; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInYourGraveyard; -import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; /** - * * @author TheElk801 */ public final class AjaniAdversaryOfTyrants extends CardImpl { @@ -41,7 +42,7 @@ public final class AjaniAdversaryOfTyrants extends CardImpl { // +1: Put a +1/+1 counter on each of up to two target creatures. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), 1); - ability.addTarget(new TargetCreaturePermanent(0, 2)); + ability.addTarget(new TargetPermanent(0, 2, StaticFilters.FILTER_PERMANENT_CREATURES)); this.addAbility(ability); // −2: Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield. diff --git a/Mage.Sets/src/mage/cards/e/ElspethUndauntedHero.java b/Mage.Sets/src/mage/cards/e/ElspethUndauntedHero.java index e2c2a7cfa20..cb21d7facd4 100644 --- a/Mage.Sets/src/mage/cards/e/ElspethUndauntedHero.java +++ b/Mage.Sets/src/mage/cards/e/ElspethUndauntedHero.java @@ -18,7 +18,7 @@ import mage.counters.CounterType; import mage.filter.FilterCard; import mage.filter.StaticFilters; import mage.filter.predicate.mageobject.NamePredicate; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; import java.util.UUID; @@ -42,7 +42,7 @@ public final class ElspethUndauntedHero extends CardImpl { // +2: Put a +1/+1 counter on each of up to two target creatures. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), 2); - ability.addTarget(new TargetCreaturePermanent(0, 2)); + ability.addTarget(new TargetPermanent(0, 2, StaticFilters.FILTER_PERMANENT_CREATURES)); this.addAbility(ability); // −2: Search your library and/or graveyard for a card named Sunlit Hoplite and put it onto the battlefield. If you search your library this way, shuffle it. diff --git a/Mage.Sets/src/mage/cards/j/JuganDefendsTheTemple.java b/Mage.Sets/src/mage/cards/j/JuganDefendsTheTemple.java index 4ef3476068d..0ccc1720602 100644 --- a/Mage.Sets/src/mage/cards/j/JuganDefendsTheTemple.java +++ b/Mage.Sets/src/mage/cards/j/JuganDefendsTheTemple.java @@ -11,8 +11,9 @@ import mage.constants.CardType; import mage.constants.SagaChapter; import mage.constants.SubType; import mage.counters.CounterType; +import mage.filter.StaticFilters; import mage.game.permanent.token.HumanMonkToken; -import mage.target.common.TargetCreaturePermanent; +import mage.target.TargetPermanent; import java.util.UUID; @@ -36,7 +37,8 @@ public final class JuganDefendsTheTemple extends CardImpl { // II — Put a +1/+1 counter on each of up to two target creatures. sagaAbility.addChapterEffect( this, SagaChapter.CHAPTER_II, SagaChapter.CHAPTER_II, - new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new TargetCreaturePermanent(0, 2) + new AddCountersTargetEffect(CounterType.P1P1.createInstance()), + new TargetPermanent(0, 2, StaticFilters.FILTER_PERMANENT_CREATURES) ); // III — Exile this Saga, then return it to the battlefield transformed under your control. diff --git a/Mage.Sets/src/mage/cards/j/JukaiPreserver.java b/Mage.Sets/src/mage/cards/j/JukaiPreserver.java index 5e6e2d017d6..eaf11012be3 100644 --- a/Mage.Sets/src/mage/cards/j/JukaiPreserver.java +++ b/Mage.Sets/src/mage/cards/j/JukaiPreserver.java @@ -10,6 +10,8 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import java.util.UUID; @@ -38,7 +40,7 @@ public final class JukaiPreserver extends CardImpl { ability = new ChannelAbility( "{2}{G}", new AddCountersTargetEffect(CounterType.P1P1.createInstance()) ); - ability.addTarget(new TargetControlledCreaturePermanent(0, 2)); + ability.addTarget(new TargetPermanent(0, 2, StaticFilters.FILTER_CONTROLLED_CREATURES)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KatsumasaTheAnimator.java b/Mage.Sets/src/mage/cards/k/KatsumasaTheAnimator.java index a4609e36b3a..df4f6e83499 100644 --- a/Mage.Sets/src/mage/cards/k/KatsumasaTheAnimator.java +++ b/Mage.Sets/src/mage/cards/k/KatsumasaTheAnimator.java @@ -59,9 +59,7 @@ public final class KatsumasaTheAnimator extends CardImpl { // At the beginning of your upkeep, put a +1/+1 counter on each of up to three target noncreature artifacts. ability = new BeginningOfUpkeepTriggeredAbility( - new AddCountersTargetEffect(CounterType.P1P1.createInstance()) - .setText("put a +1/+1 counter on each of up to three target noncreature artifacts"), - TargetController.YOU, false + new AddCountersTargetEffect(CounterType.P1P1.createInstance()), TargetController.YOU, false ); ability.addTarget(new TargetPermanent(0, 3, filter2)); this.addAbility(ability); diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 9ecd0ab3190..c81cae2becd 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -2,9 +2,12 @@ package mage.verify; import com.google.common.base.CharMatcher; import mage.ObjectColor; +import mage.abilities.Ability; +import mage.abilities.Mode; import mage.abilities.common.SagaAbility; import mage.abilities.common.WerewolfBackTriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.FightTargetsEffect; import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.keyword.EnchantAbility; @@ -1593,6 +1596,17 @@ public class VerifyCardDataTest { return cardText.replace(name, name.split(" ")[0]).equals(refText); } + private static final boolean checkForEffect(Card card, Class effectClazz) { + return card.getAbilities() + .stream() + .map(Ability::getModes) + .map(LinkedHashMap::values) + .flatMap(Collection::stream) + .map(Mode::getEffects) + .flatMap(Collection::stream) + .anyMatch(effectClazz::isInstance); + } + private void checkWrongAbilitiesText(Card card, MtgJsonCard ref, int cardIndex) { // checks missing or wrong text if (!card.getExpansionSetCode().equals(FULL_ABILITIES_CHECK_SET_CODE) || !checkName(ref)) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersTargetEffect.java index fa16864aa84..ac618fb9e62 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersTargetEffect.java @@ -119,6 +119,9 @@ public class AddCountersTargetEffect extends OneShotEffect { Target target = mode.getTargets().getEffectTarget(this.targetPointer); if (target != null) { if (target.getNumberOfTargets() == 0) { + if (target.getMaxNumberOfTargets() > 1) { + sb.append("each of "); + } sb.append("up to "); }