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();
}