diff --git a/Mage.Sets/src/mage/cards/c/ChaosWarp.java b/Mage.Sets/src/mage/cards/c/ChaosWarp.java index 12252c7d4f..3d24bfa2ec 100644 --- a/Mage.Sets/src/mage/cards/c/ChaosWarp.java +++ b/Mage.Sets/src/mage/cards/c/ChaosWarp.java @@ -79,7 +79,7 @@ class ChaosWarpRevealEffect extends OneShotEffect { public ChaosWarpRevealEffect() { super(Outcome.PutCardInPlay); - this.staticText = "then reveals the top card of their library. If it's a permanent card, they put it onto the battlefield"; + this.staticText = ", then reveals the top card of their library. If it's a permanent card, they put it onto the battlefield"; } public ChaosWarpRevealEffect(final ChaosWarpRevealEffect effect) { diff --git a/Mage.Sets/src/mage/cards/c/Cultivate.java b/Mage.Sets/src/mage/cards/c/Cultivate.java index f970b20af4..579ebda3c3 100644 --- a/Mage.Sets/src/mage/cards/c/Cultivate.java +++ b/Mage.Sets/src/mage/cards/c/Cultivate.java @@ -45,12 +45,13 @@ class CultivateEffect extends OneShotEffect { protected static final FilterCard filter = new FilterCard("card to put on the battlefield tapped"); - public CultivateEffect() { + CultivateEffect() { super(Outcome.PutLandInPlay); - staticText = "Search your library for up to two basic land cards, reveal those cards, and put one onto the battlefield tapped and the other into your hand. Then shuffle your library"; + staticText = "search your library for up to two basic land cards, reveal those cards, " + + "put one onto the battlefield tapped and the other into your hand, then shuffle"; } - public CultivateEffect(final CultivateEffect effect) { + private CultivateEffect(final CultivateEffect effect) { super(effect); } diff --git a/Mage.Sets/src/mage/cards/e/Electrolyze.java b/Mage.Sets/src/mage/cards/e/Electrolyze.java index bea848a0ef..9e5540d912 100644 --- a/Mage.Sets/src/mage/cards/e/Electrolyze.java +++ b/Mage.Sets/src/mage/cards/e/Electrolyze.java @@ -22,11 +22,11 @@ public final class Electrolyze extends CardImpl { // Electrolyze deals 2 damage divided as you choose among one or two target creatures and/or players. Effect effect = new DamageMultiEffect(2); - effect.setText("{this} deals 2 damage divided as you choose among one or two target creatures and/or players"); + effect.setText("{this} deals 2 damage divided as you choose among one or two targets"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetAnyTargetAmount(2)); // Draw a card. - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); } private Electrolyze(final Electrolyze card) { diff --git a/Mage.Sets/src/mage/cards/e/Ephemerate.java b/Mage.Sets/src/mage/cards/e/Ephemerate.java index 871ae3e169..c90add0330 100644 --- a/Mage.Sets/src/mage/cards/e/Ephemerate.java +++ b/Mage.Sets/src/mage/cards/e/Ephemerate.java @@ -21,7 +21,7 @@ public final class Ephemerate extends CardImpl { // Exile target creature you control, then return it to the battlefield under its owner's control. this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); this.getSpellAbility().addEffect(new ExileTargetForSourceEffect()); - this.getSpellAbility().addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false)); + this.getSpellAbility().addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false).setText(", then return it to the battlefield under its owner's control")); // Rebound this.addAbility(new ReboundAbility()); diff --git a/Mage.Sets/src/mage/cards/g/GiftOfEstates.java b/Mage.Sets/src/mage/cards/g/GiftOfEstates.java index c96dd58a16..ca5f39741d 100644 --- a/Mage.Sets/src/mage/cards/g/GiftOfEstates.java +++ b/Mage.Sets/src/mage/cards/g/GiftOfEstates.java @@ -1,7 +1,5 @@ - package mage.cards.g; -import java.util.UUID; import mage.abilities.condition.common.OpponentControlsMoreCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; @@ -13,27 +11,30 @@ import mage.filter.FilterCard; import mage.filter.StaticFilters; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class GiftOfEstates extends CardImpl { - + private static final FilterCard filter = new FilterCard("Plains cards"); - + static { filter.add(SubType.PLAINS.getPredicate()); } - public GiftOfEstates(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}"); // If an opponent controls more lands than you, search your library for up to three Plains cards, reveal them, and put them into your hand. Then shuffle your library. this.getSpellAbility().addEffect(new ConditionalOneShotEffect( - new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 3, filter), true), - new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS))); + new SearchLibraryPutInHandEffect( + new TargetCardInLibrary(0, 3, filter), true + ), new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS), "if an opponent controls " + + "more lands than you, search your library for up to three Plains cards, " + + "reveal them, and put them into your hand. Then shuffle your library" + )); } private GiftOfEstates(final GiftOfEstates card) { diff --git a/Mage.Sets/src/mage/cards/g/GodsWilling.java b/Mage.Sets/src/mage/cards/g/GodsWilling.java index feba9913f6..a70df1c51e 100644 --- a/Mage.Sets/src/mage/cards/g/GodsWilling.java +++ b/Mage.Sets/src/mage/cards/g/GodsWilling.java @@ -22,7 +22,7 @@ public final class GodsWilling extends CardImpl { // Target creature you control gains protection from the color of your choice until end of turn. Scry 1. this.getSpellAbility().addEffect(new GainProtectionFromColorTargetEffect(Duration.EndOfTurn)); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1).concatBy("
")); } private GodsWilling(final GodsWilling card) { diff --git a/Mage.Sets/src/mage/cards/o/Opt.java b/Mage.Sets/src/mage/cards/o/Opt.java index c1915a77b4..4d6c546724 100644 --- a/Mage.Sets/src/mage/cards/o/Opt.java +++ b/Mage.Sets/src/mage/cards/o/Opt.java @@ -21,7 +21,7 @@ public final class Opt extends CardImpl { this.getSpellAbility().addEffect(new ScryEffect(1)); // Draw a card. - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); } private Opt(final Opt card) { diff --git a/Mage.Sets/src/mage/cards/r/Regrowth.java b/Mage.Sets/src/mage/cards/r/Regrowth.java index 96d13a4220..4336b82d62 100644 --- a/Mage.Sets/src/mage/cards/r/Regrowth.java +++ b/Mage.Sets/src/mage/cards/r/Regrowth.java @@ -1,26 +1,23 @@ - package mage.cards.r; -import java.util.UUID; -import mage.abilities.effects.common.ReturnToHandTargetEffect; +import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.target.common.TargetCardInYourGraveyard; -/** - * - * @author KholdFuzion +import java.util.UUID; +/** + * @author KholdFuzion */ public final class Regrowth extends CardImpl { public Regrowth(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}"); // Return target card from your graveyard to your hand. - this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); + this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); this.getSpellAbility().addTarget(new TargetCardInYourGraveyard()); } diff --git a/Mage.Sets/src/mage/cards/r/Revitalize.java b/Mage.Sets/src/mage/cards/r/Revitalize.java index 03e60a1dae..85fd139324 100644 --- a/Mage.Sets/src/mage/cards/r/Revitalize.java +++ b/Mage.Sets/src/mage/cards/r/Revitalize.java @@ -20,7 +20,7 @@ public final class Revitalize extends CardImpl { this.getSpellAbility().addEffect(new GainLifeEffect(3)); // Draw a card. - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); } private Revitalize(final Revitalize card) { diff --git a/Mage.Sets/src/mage/cards/t/TeferisProtection.java b/Mage.Sets/src/mage/cards/t/TeferisProtection.java index d59f62a546..83274cf5bc 100644 --- a/Mage.Sets/src/mage/cards/t/TeferisProtection.java +++ b/Mage.Sets/src/mage/cards/t/TeferisProtection.java @@ -78,7 +78,7 @@ class TeferisProtectionEffect extends OneShotEffect { */ public TeferisProtectionEffect() { super(Outcome.Protect); - staticText = ", and you gain protection from everything"; + staticText = " and you gain protection from everything"; } public TeferisProtectionEffect(final TeferisProtectionEffect effect) { @@ -126,7 +126,7 @@ class TeferisProtectionPhaseOutEffect extends OneShotEffect { public TeferisProtectionPhaseOutEffect() { super(Outcome.Benefit); - this.staticText = "All permanents you control phase out. (While they're phased out, they're treated as though they don't exist. They phase in before you untap during your untap step.)"; + this.staticText = "All permanents you control phase out. (While they're phased out, they're treated as though they don't exist. They phase in before you untap during your untap step.)
"; } public TeferisProtectionPhaseOutEffect(final TeferisProtectionPhaseOutEffect effect) { diff --git a/Mage.Sets/src/mage/cards/t/TendrilsOfAgony.java b/Mage.Sets/src/mage/cards/t/TendrilsOfAgony.java index be851a7579..c4fc4d3b7f 100644 --- a/Mage.Sets/src/mage/cards/t/TendrilsOfAgony.java +++ b/Mage.Sets/src/mage/cards/t/TendrilsOfAgony.java @@ -22,7 +22,7 @@ public final class TendrilsOfAgony extends CardImpl { // Target player loses 2 life and you gain 2 life. this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addEffect(new LoseLifeTargetEffect(2)); - this.getSpellAbility().addEffect(new GainLifeEffect(2)); + this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("and")); // Storm (When you cast this spell, copy it for each spell cast before it this turn. You may choose new targets for the copies.) this.addAbility(new StormAbility()); } diff --git a/Mage.Sets/src/mage/cards/u/UrzasRage.java b/Mage.Sets/src/mage/cards/u/UrzasRage.java index a2941e876b..509b321229 100644 --- a/Mage.Sets/src/mage/cards/u/UrzasRage.java +++ b/Mage.Sets/src/mage/cards/u/UrzasRage.java @@ -1,7 +1,5 @@ - package mage.cards.u; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.KickedCondition; @@ -16,8 +14,9 @@ import mage.constants.CardType; import mage.constants.Zone; import mage.target.common.TargetAnyTarget; +import java.util.UUID; + /** - * * @author FenrisulfrX */ public final class UrzasRage extends CardImpl { @@ -36,9 +35,11 @@ public final class UrzasRage extends CardImpl { this.addAbility(ability); // Urza's Rage deals 3 damage to any target. If Urza's Rage was kicked, instead it deals 10 damage to that creature or player and the damage can't be prevented. - this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DamageTargetEffect(10, false), - new DamageTargetEffect(3), KickedCondition.instance, - "{this} deals 3 damage to any target. if this spell was kicked, instead it deals 10 damage to that permanent or player and the damage can't be prevented.")); + this.getSpellAbility().addEffect(new ConditionalOneShotEffect( + new DamageTargetEffect(10, false), new DamageTargetEffect(3), + KickedCondition.instance, "{this} deals 3 damage to any target. If this spell was kicked, " + + "instead it deals 10 damage to that permanent or player and the damage can't be prevented." + )); this.getSpellAbility().addTarget(new TargetAnyTarget()); } diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 955bae746e..87222526e3 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -56,7 +56,7 @@ public class VerifyCardDataTest { private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class); - private static final String FULL_ABILITIES_CHECK_SET_CODE = "TSR"; // check all abilities and output cards with wrong abilities texts; + private static final String FULL_ABILITIES_CHECK_SET_CODE = "STA"; // check all abilities and output cards with wrong abilities texts; private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run private static final HashMap> skipCheckLists = new HashMap<>(); diff --git a/Mage/src/main/java/mage/abilities/effects/Effects.java b/Mage/src/main/java/mage/abilities/effects/Effects.java index fce73f4f8d..d3b0948c53 100644 --- a/Mage/src/main/java/mage/abilities/effects/Effects.java +++ b/Mage/src/main/java/mage/abilities/effects/Effects.java @@ -54,7 +54,11 @@ public class Effects extends ArrayList { String concatPrefix = effect.getConcatPrefix(); if (effectNum > 1 && !concatPrefix.isEmpty() && !concatPrefix.equals(".")) { - nextRule = concatPrefix + " " + nextRule; + if (concatPrefix.contains("
")) { + nextRule = concatPrefix + CardUtil.getTextWithFirstCharUpperCase(nextRule); + } else { + nextRule = concatPrefix + " " + nextRule; + } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandEffect.java index b727e317ad..b90c77c927 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInHandEffect.java @@ -99,10 +99,10 @@ public class SearchLibraryPutInHandEffect extends SearchEffect { sb.append(target.getTargetName()); if (forceShuffle) { sb.append(revealCards ? ", reveal them" : ""); - sb.append(", put them into your hand, then shuffle your library"); + sb.append(", put them into your hand, then shuffle"); } else { sb.append(revealCards ? ", reveal them," : ""); - sb.append(" and put them into your hand. If you do, shuffle your library"); + sb.append(" and put them into your hand. If you do, shuffle"); } } else { if (!target.getTargetName().startsWith("a ") && !target.getTargetName().startsWith("an ")) { @@ -110,11 +110,11 @@ public class SearchLibraryPutInHandEffect extends SearchEffect { } sb.append(target.getTargetName()); if (forceShuffle) { - sb.append(revealCards ? ", reveal it" : ""); - sb.append(", put it into your hand, then shuffle your library"); + sb.append(revealCards ? ", reveal it, put it" : ", put that card"); + sb.append(" into your hand, then shuffle"); } else { sb.append(revealCards ? ", reveal it," : ""); - sb.append(" and put that card into your hand. If you do, shuffle your library"); + sb.append(" and put that card into your hand. If you do, shuffle"); } } staticText = sb.toString(); diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayEffect.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayEffect.java index 677f499e34..236304c309 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryPutInPlayEffect.java @@ -97,9 +97,9 @@ public class SearchLibraryPutInPlayEffect extends SearchEffect { sb.append(" tapped"); } if (forceShuffle) { - sb.append(", then shuffle your library"); + sb.append(", then shuffle"); } else { - sb.append(". If you do, shuffle your library"); + sb.append(". If you do, shuffle"); } staticText = sb.toString(); }