diff --git a/Mage.Sets/src/mage/cards/a/AngelOfDestiny.java b/Mage.Sets/src/mage/cards/a/AngelOfDestiny.java index f9751f0c92..cedbe2d9ea 100644 --- a/Mage.Sets/src/mage/cards/a/AngelOfDestiny.java +++ b/Mage.Sets/src/mage/cards/a/AngelOfDestiny.java @@ -4,7 +4,7 @@ import mage.MageInt; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; -import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.common.DealsDamageToAPlayerAllTriggeredAbility; import mage.abilities.condition.Condition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -13,6 +13,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.players.Player; @@ -40,8 +41,9 @@ public final class AngelOfDestiny extends CardImpl { this.addAbility(DoubleStrikeAbility.getInstance()); // Whenever a creature you control deals combat damage to a player, you and that player each gain that much life. - this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility( - new AngelOfDestinyGainLifeEffect(), false, true + this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility( + new AngelOfDestinyGainLifeEffect(), StaticFilters.FILTER_CONTROLLED_A_CREATURE, + false, SetTargetPointer.NONE, true, true )); // At the beginning of your end step, if you have at least 15 life more than your starting life total, each player Angel of Destiny attacked this turn loses the game. diff --git a/Mage.Sets/src/mage/cards/d/Deliberate.java b/Mage.Sets/src/mage/cards/d/Deliberate.java index 7ab2a9238c..8025f8435c 100644 --- a/Mage.Sets/src/mage/cards/d/Deliberate.java +++ b/Mage.Sets/src/mage/cards/d/Deliberate.java @@ -17,7 +17,7 @@ public final class Deliberate extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}"); // Scry 2, then draw a card. - this.getSpellAbility().addEffect(new ScryEffect(2)); + this.getSpellAbility().addEffect(new ScryEffect(2).setText("scry 2")); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy(", then")); } diff --git a/Mage.Sets/src/mage/cards/e/EmeriaCaptain.java b/Mage.Sets/src/mage/cards/e/EmeriaCaptain.java index 0e0a49bea7..321c75fd59 100644 --- a/Mage.Sets/src/mage/cards/e/EmeriaCaptain.java +++ b/Mage.Sets/src/mage/cards/e/EmeriaCaptain.java @@ -1,19 +1,19 @@ package mage.cards.e; -import java.util.UUID; - import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.dynamicvalue.common.PartyCount; import mage.abilities.effects.common.counter.AddCountersSourceEffect; -import mage.constants.SubType; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.counters.CounterType; +import java.util.UUID; + /** * @author TheElk801 */ @@ -36,7 +36,7 @@ public final class EmeriaCaptain extends CardImpl { // When Emeria Captain enters the battlefield, put a +1/+1 counter on it for each creature in your party. this.addAbility(new EntersBattlefieldTriggeredAbility(new AddCountersSourceEffect( CounterType.P1P1.createInstance(), PartyCount.instance, false - ))); + ).setText("put a +1/+1 counter on it for each creature in your party. " + PartyCount.getReminder()))); } private EmeriaCaptain(final EmeriaCaptain card) { diff --git a/Mage.Sets/src/mage/cards/f/FarsightAdept.java b/Mage.Sets/src/mage/cards/f/FarsightAdept.java index aa0998f78b..c3d862adfc 100644 --- a/Mage.Sets/src/mage/cards/f/FarsightAdept.java +++ b/Mage.Sets/src/mage/cards/f/FarsightAdept.java @@ -28,9 +28,10 @@ public final class FarsightAdept extends CardImpl { // When Farsight Adept enters the battlefield, you and target opponent each draw a card. Ability ability = new EntersBattlefieldTriggeredAbility( - new DrawCardSourceControllerEffect(1).setText("you and") + new DrawCardSourceControllerEffect(1).setText("you") ); - ability.addEffect(new DrawCardTargetEffect(1).setText("target opponent each draw a card")); + ability.addEffect(new DrawCardTargetEffect(1) + .setText("target opponent each draw a card").concatBy("and")); ability.addTarget(new TargetOpponent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/InscriptionOfInsight.java b/Mage.Sets/src/mage/cards/i/InscriptionOfInsight.java index bb3d5da558..8e3d56dc89 100644 --- a/Mage.Sets/src/mage/cards/i/InscriptionOfInsight.java +++ b/Mage.Sets/src/mage/cards/i/InscriptionOfInsight.java @@ -37,7 +37,7 @@ public final class InscriptionOfInsight extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2)); // • Scry 2, then draw two cards. - Mode mode = new Mode(new ScryEffect(2)); + Mode mode = new Mode(new ScryEffect(2).setText("scry 2")); mode.addEffect(new DrawCardSourceControllerEffect(2).concatBy(", then")); this.getSpellAbility().addMode(mode); diff --git a/Mage.Sets/src/mage/cards/m/MalakirBloodPriest.java b/Mage.Sets/src/mage/cards/m/MalakirBloodPriest.java index 48df5e1847..2111e3e4cd 100644 --- a/Mage.Sets/src/mage/cards/m/MalakirBloodPriest.java +++ b/Mage.Sets/src/mage/cards/m/MalakirBloodPriest.java @@ -33,7 +33,7 @@ public final class MalakirBloodPriest extends CardImpl { ); ability.addEffect(new GainLifeEffect( PartyCount.instance, "and you gain X life, " + - "where X is your number of creatures in your party. " + "where X is the number of creatures in your party. " + PartyCount.getReminder() )); this.addAbility(ability.addHint(PartyCountHint.instance)); diff --git a/Mage.Sets/src/mage/cards/n/NissasZendikon.java b/Mage.Sets/src/mage/cards/n/NissasZendikon.java index 5ed3ff461c..7e58351066 100644 --- a/Mage.Sets/src/mage/cards/n/NissasZendikon.java +++ b/Mage.Sets/src/mage/cards/n/NissasZendikon.java @@ -41,7 +41,7 @@ public final class NissasZendikon extends CardImpl { // Enchanted land is a 4/4 Elemental creature with reach and haste. It's still a land. this.addAbility(new SimpleStaticAbility(new BecomesCreatureAttachedEffect( - new NissasZendikonToken(), "Enchanted land is a 4/4 Elemental creature with reach and haste. It's still a land", + new NissasZendikonToken(), "Enchanted land is a 4/4 Elemental creature with reach and haste. It's still a land", Duration.WhileOnBattlefield, BecomesCreatureAttachedEffect.LoseType.COLOR ))); diff --git a/Mage.Sets/src/mage/cards/p/PyroclasticHellion.java b/Mage.Sets/src/mage/cards/p/PyroclasticHellion.java index 908707a0d9..f9e670580a 100644 --- a/Mage.Sets/src/mage/cards/p/PyroclasticHellion.java +++ b/Mage.Sets/src/mage/cards/p/PyroclasticHellion.java @@ -11,7 +11,8 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.TargetController; -import mage.filter.StaticFilters; +import mage.filter.common.FilterControlledLandPermanent; +import mage.filter.common.FilterControlledPermanent; import mage.target.common.TargetControlledPermanent; import java.util.UUID; @@ -21,6 +22,9 @@ import java.util.UUID; */ public final class PyroclasticHellion extends CardImpl { + private static final FilterControlledPermanent filter + = new FilterControlledLandPermanent("a land you control"); + public PyroclasticHellion(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}"); @@ -34,7 +38,7 @@ public final class PyroclasticHellion extends CardImpl { new DamagePlayersEffect(2, TargetController.OPPONENT), false, "{this} deals 2 damage to each opponent" ), new ReturnToHandChosenControlledPermanentCost( - new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND) + new TargetControlledPermanent(filter) ), "Return a land you control to its owner's hand?") )); } diff --git a/Mage.Sets/src/mage/cards/v/VerazolTheSplitCurrent.java b/Mage.Sets/src/mage/cards/v/VerazolTheSplitCurrent.java index c4006af295..287f964d6a 100644 --- a/Mage.Sets/src/mage/cards/v/VerazolTheSplitCurrent.java +++ b/Mage.Sets/src/mage/cards/v/VerazolTheSplitCurrent.java @@ -40,7 +40,7 @@ public final class VerazolTheSplitCurrent extends CardImpl { this.addAbility(new SpellCastControllerTriggeredAbility( new DoIfCostPaid( new CopyTargetSpellEffect(false, true) - .withSpellName("that spell"), + .setText("copy that spell. You may choose new targets for that copy"), new RemoveCountersSourceCost(CounterType.P1P1.createInstance(2)) ), StaticFilters.FILTER_SPELL_KICKED_A, false, true )); diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 18557d80e0..69d875f004 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -52,7 +52,7 @@ public class VerifyCardDataTest { private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); - private static final String FULL_ABILITIES_CHECK_SET_CODE = "M21"; // check all abilities and output cards with wrong abilities texts; + private static final String FULL_ABILITIES_CHECK_SET_CODE = "ZNR"; // check all abilities and output cards with wrong abilities texts; private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: fix sample decks if it contains errors like wrong card numbers private static final HashMap> skipCheckLists = new HashMap<>(); diff --git a/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java b/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java index b3179e3e8f..aca91eb302 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java @@ -23,7 +23,7 @@ public class RemoveCountersSourceCost extends CostImpl { public RemoveCountersSourceCost(Counter counter) { this.amount = counter.getCount(); this.name = counter.getName(); - this.text = new StringBuilder("Remove ").append((amount == 1 ? "a" : CardUtil.numberToText(amount))) + this.text = new StringBuilder("remove ").append((amount == 1 ? "a" : CardUtil.numberToText(amount))) .append(' ').append(name).append(" counter").append((amount != 1 ? "s" : "")) .append(" from {this}").toString(); diff --git a/Mage/src/main/java/mage/abilities/effects/common/MillCardsTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/MillCardsTargetEffect.java index 9a36ed0693..bc3d768524 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/MillCardsTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/MillCardsTargetEffect.java @@ -1,6 +1,7 @@ package mage.abilities.effects.common; import mage.abilities.Ability; +import mage.abilities.Mode; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.OneShotEffect; @@ -23,7 +24,6 @@ public class MillCardsTargetEffect extends OneShotEffect { public MillCardsTargetEffect(DynamicValue numberCards) { super(Outcome.Discard); this.numberCards = numberCards; - this.staticText = setText(); } public MillCardsTargetEffect(final MillCardsTargetEffect effect) { @@ -46,8 +46,18 @@ public class MillCardsTargetEffect extends OneShotEffect { return false; } - private String setText() { - StringBuilder sb = new StringBuilder("target player mills "); + @Override + public String getText(Mode mode) { + if (staticText != null && !staticText.isEmpty()) { + return staticText; + } + StringBuilder sb = new StringBuilder("target "); + if (!mode.getTargets().isEmpty()) { + sb.append(mode.getTargets().get(0).getTargetName()); + } else { + sb.append("player"); + } + sb.append(" mills "); if (numberCards.toString().equals("1")) { sb.append("a card"); } else {