diff --git a/Mage.Sets/src/mage/cards/a/ArchonsGlory.java b/Mage.Sets/src/mage/cards/a/ArchonsGlory.java
index 8732635af8a..40ba18e1be1 100644
--- a/Mage.Sets/src/mage/cards/a/ArchonsGlory.java
+++ b/Mage.Sets/src/mage/cards/a/ArchonsGlory.java
@@ -11,6 +11,7 @@ import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
+import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
@@ -34,6 +35,7 @@ public final class ArchonsGlory extends CardImpl {
), BargainedCondition.instance, "if this spell was bargained, " +
"that creature also gains flying and lifelink until end of turn"
));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
private ArchonsGlory(final ArchonsGlory card) {
diff --git a/Mage.Sets/src/mage/cards/b/BarrowNaughty.java b/Mage.Sets/src/mage/cards/b/BarrowNaughty.java
index 24294b97eb8..4c73c0b173a 100644
--- a/Mage.Sets/src/mage/cards/b/BarrowNaughty.java
+++ b/Mage.Sets/src/mage/cards/b/BarrowNaughty.java
@@ -48,7 +48,7 @@ public final class BarrowNaughty extends CardImpl {
// Barrow Naughty has lifelink as long as you control another Faerie.
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(LifelinkAbility.getInstance()), condition,
- "has lifelink as long as you control another Faerie"
+ "{this} has lifelink as long as you control another Faerie"
)));
// {2}{B}: Barrow Naughty gets +1/+0 until end of turn.
diff --git a/Mage.Sets/src/mage/cards/b/BraveTheWilds.java b/Mage.Sets/src/mage/cards/b/BraveTheWilds.java
index bef7f3297b9..560e6fe4e32 100644
--- a/Mage.Sets/src/mage/cards/b/BraveTheWilds.java
+++ b/Mage.Sets/src/mage/cards/b/BraveTheWilds.java
@@ -49,7 +49,7 @@ public final class BraveTheWilds extends CardImpl {
// Search your library for a basic land card, reveal it, put it into your hand, then shuffle.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true
- ));
+ ).concatBy("
"));
}
private BraveTheWilds(final BraveTheWilds card) {
diff --git a/Mage.Sets/src/mage/cards/c/CallousSellSword.java b/Mage.Sets/src/mage/cards/c/CallousSellSword.java
index a49d520326f..714b57ebf02 100644
--- a/Mage.Sets/src/mage/cards/c/CallousSellSword.java
+++ b/Mage.Sets/src/mage/cards/c/CallousSellSword.java
@@ -54,7 +54,7 @@ public final class CallousSellSword extends AdventureCard {
this.getSpellCard().getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetControlledCreaturePermanent().setTargetTag(1));
this.getSpellCard().getSpellAbility().addTarget(new TargetAnyTarget().setTargetTag(2));
- this.getSpellCard().getSpellAbility().addEffect(new CallousSellSwordSacrificeFirstTargetEffect().concatBy(". Then"));
+ this.getSpellCard().getSpellAbility().addEffect(new CallousSellSwordSacrificeFirstTargetEffect().concatBy("Then"));
}
private CallousSellSword(final CallousSellSword card) {
@@ -114,4 +114,4 @@ class CallousSellSwordSacrificeFirstTargetEffect extends OneShotEffect {
Permanent permanent = game.getPermanent(source.getFirstTarget());
return permanent != null && permanent.sacrifice(source, game);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/c/CruelSomnophage.java b/Mage.Sets/src/mage/cards/c/CruelSomnophage.java
index fa596918f0e..3c72746ee0f 100644
--- a/Mage.Sets/src/mage/cards/c/CruelSomnophage.java
+++ b/Mage.Sets/src/mage/cards/c/CruelSomnophage.java
@@ -21,7 +21,7 @@ import java.util.UUID;
*/
public final class CruelSomnophage extends AdventureCard {
- private static final DynamicValue xValue = new CardsInAllGraveyardsCount(StaticFilters.FILTER_CARD_CREATURE);
+ private static final DynamicValue xValue = new CardsInAllGraveyardsCount(StaticFilters.FILTER_CARD_CREATURES);
public CruelSomnophage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.SORCERY}, "{1}{B}", "Can't Wake Up", "{1}{U}");
diff --git a/Mage.Sets/src/mage/cards/e/EerieInterference.java b/Mage.Sets/src/mage/cards/e/EerieInterference.java
index 7a47d56812e..7d05610141b 100644
--- a/Mage.Sets/src/mage/cards/e/EerieInterference.java
+++ b/Mage.Sets/src/mage/cards/e/EerieInterference.java
@@ -38,7 +38,7 @@ class EerieInterferenceEffect extends PreventionEffectImpl {
EerieInterferenceEffect() {
super(Duration.EndOfTurn, Integer.MAX_VALUE, false, false);
- staticText = "prevent all damage that would be dealt to you and creatures you control by creatures this turn";
+ staticText = "prevent all damage that would be dealt to you and creatures you control this turn by creatures";
}
private EerieInterferenceEffect(final EerieInterferenceEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/e/ErietteOfTheCharmedApple.java b/Mage.Sets/src/mage/cards/e/ErietteOfTheCharmedApple.java
index e5e8edcd4c6..199998fd616 100644
--- a/Mage.Sets/src/mage/cards/e/ErietteOfTheCharmedApple.java
+++ b/Mage.Sets/src/mage/cards/e/ErietteOfTheCharmedApple.java
@@ -28,7 +28,7 @@ import mage.constants.Duration;
*/
public final class ErietteOfTheCharmedApple extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures enchanted by an Aura you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each creature that's enchanted by an Aura you control");
private static final DynamicValue count = new PermanentsOnBattlefieldCount(new FilterControlledPermanent(SubType.AURA));
static {
@@ -48,8 +48,10 @@ public final class ErietteOfTheCharmedApple extends CardImpl {
this.addAbility(new SimpleStaticAbility(new CantAttackYouAllEffect(Duration.WhileOnBattlefield, filter, true)));
// At the beginning of your end step, each opponent loses X life and you gain X life, where X is the number of Auras you control.
- Ability ability = new BeginningOfEndStepTriggeredAbility(new LoseLifeOpponentsEffect(count), TargetController.YOU, false);
- ability.addEffect(new GainLifeEffect(count));
+ Ability ability = new BeginningOfEndStepTriggeredAbility(new LoseLifeOpponentsEffect(count)
+ .setText("each opponent loses X life"), TargetController.YOU, false);
+ ability.addEffect(new GainLifeEffect(count)
+ .setText("and you gain X life, where X is the number of Auras you control"));
ability.addHint(new ValueHint("Number of Auras you control", count));
this.addAbility(ability);
}
@@ -62,4 +64,4 @@ public final class ErietteOfTheCharmedApple extends CardImpl {
public ErietteOfTheCharmedApple copy() {
return new ErietteOfTheCharmedApple(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/f/FaerieFencing.java b/Mage.Sets/src/mage/cards/f/FaerieFencing.java
index 3d3844076b1..24e3f442429 100644
--- a/Mage.Sets/src/mage/cards/f/FaerieFencing.java
+++ b/Mage.Sets/src/mage/cards/f/FaerieFencing.java
@@ -51,7 +51,7 @@ class FaerieFencingEffect extends OneShotEffect {
FaerieFencingEffect() {
super(Outcome.UnboostCreature);
- this.staticText = "target creature gets -X/-X until end of turn. It gets an additional -3/-3 if you controlled a Faerie as you cast this spell.";
+ this.staticText = "target creature gets -X/-X until end of turn. That creature gets an additional -3/-3 if you controlled a Faerie as you cast this spell.";
}
private FaerieFencingEffect(final FaerieFencingEffect effect) {
@@ -108,4 +108,4 @@ class ControlledFaerieAsSpellCastWatcher extends Watcher {
public int getCount(MageObjectReference mor) {
return permanentsWhenCast.getOrDefault(mor, 0);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/g/GallantPieWielder.java b/Mage.Sets/src/mage/cards/g/GallantPieWielder.java
index 8bcff02129e..17ac6b67605 100644
--- a/Mage.Sets/src/mage/cards/g/GallantPieWielder.java
+++ b/Mage.Sets/src/mage/cards/g/GallantPieWielder.java
@@ -35,7 +35,7 @@ public final class GallantPieWielder extends CardImpl {
// Celebration -- Gallant Pie-Wielder has double strike as long as two or more nonland permanents entered the battlefield under your control this turn.
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(DoubleStrikeAbility.getInstance()),
- CelebrationCondition.instance, "{this} as double strike as long as two or " +
+ CelebrationCondition.instance, "{this} has double strike as long as two or " +
"more nonland permanents entered the battlefield under your control this turn"
)).addHint(CelebrationCondition.getHint()).setAbilityWord(AbilityWord.CELEBRATION), new CelebrationWatcher());
}
diff --git a/Mage.Sets/src/mage/cards/g/GretaSweettoothScourge.java b/Mage.Sets/src/mage/cards/g/GretaSweettoothScourge.java
index 9954730f26f..78c308f8276 100644
--- a/Mage.Sets/src/mage/cards/g/GretaSweettoothScourge.java
+++ b/Mage.Sets/src/mage/cards/g/GretaSweettoothScourge.java
@@ -52,7 +52,7 @@ public final class GretaSweettoothScourge extends CardImpl {
// {1}{B}, Sacrifice a Food: You draw a card and you lose 1 life.
ability = new SimpleActivatedAbility(
- new DrawCardSourceControllerEffect(1),
+ new DrawCardSourceControllerEffect(1, "you"),
new ManaCostsImpl<>("{1}{B}")
);
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD)));
diff --git a/Mage.Sets/src/mage/cards/h/HearthElemental.java b/Mage.Sets/src/mage/cards/h/HearthElemental.java
index 9fcad96638a..b9ef6557b25 100644
--- a/Mage.Sets/src/mage/cards/h/HearthElemental.java
+++ b/Mage.Sets/src/mage/cards/h/HearthElemental.java
@@ -49,6 +49,8 @@ public final class HearthElemental extends AdventureCard {
// This spell costs X less to cast, where X is the number of cards in your graveyard that are instant cards, sorcery cards, and/or have an Adventure.
Ability ability = new SimpleStaticAbility(
Zone.ALL, new SpellCostReductionForEachSourceEffect(1, xValue)
+ .setText("This spell costs {X} less to cast, where X is the number of cards in your graveyard " +
+ "that are instant cards, sorcery cards, and/or have an Adventure")
).addHint(hint);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/h/HornedLochWhale.java b/Mage.Sets/src/mage/cards/h/HornedLochWhale.java
index 8e71b77fa43..5faba9c245c 100644
--- a/Mage.Sets/src/mage/cards/h/HornedLochWhale.java
+++ b/Mage.Sets/src/mage/cards/h/HornedLochWhale.java
@@ -47,7 +47,7 @@ public final class HornedLochWhale extends AdventureCard {
// Horned Loch-Whale enters the battlefield tapped unless it's your turn.
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(
new TapSourceEffect(true), NotMyTurnCondition.instance,
- "{this} enters the battlefield tapped unless it's your turn"
+ "tapped unless it's your turn"
)));
// Lagoon Breach
diff --git a/Mage.Sets/src/mage/cards/h/HyldaOfTheIcyCrown.java b/Mage.Sets/src/mage/cards/h/HyldaOfTheIcyCrown.java
index d274a9521d3..a8b413fd304 100644
--- a/Mage.Sets/src/mage/cards/h/HyldaOfTheIcyCrown.java
+++ b/Mage.Sets/src/mage/cards/h/HyldaOfTheIcyCrown.java
@@ -47,7 +47,7 @@ public final class HyldaOfTheIcyCrown extends CardImpl {
// * Scry 2, then draw a card.
Mode mode = new Mode(new ScryEffect(2, false));
- mode.addEffect(new DrawCardSourceControllerEffect(1));
+ mode.addEffect(new DrawCardSourceControllerEffect(1).concatBy(", then"));
delayed.addMode(mode);
this.addAbility(new TapUntappedPermanentTriggeredAbility(
diff --git a/Mage.Sets/src/mage/cards/i/ImodaneThePyrohammer.java b/Mage.Sets/src/mage/cards/i/ImodaneThePyrohammer.java
index ea496f245f8..6df5010624d 100644
--- a/Mage.Sets/src/mage/cards/i/ImodaneThePyrohammer.java
+++ b/Mage.Sets/src/mage/cards/i/ImodaneThePyrohammer.java
@@ -63,7 +63,8 @@ class ImodaneThePyrohammerTriggeredAbility extends TriggeredAbilityImpl {
private static final Hint hint = new ValuePositiveHint("Damage dealt to the target", ImodaneThePyrohammerDynamicValue.instance);
ImodaneThePyrohammerTriggeredAbility() {
- super(Zone.BATTLEFIELD, new DamagePlayersEffect(Outcome.Damage, ImodaneThePyrohammerDynamicValue.instance, TargetController.OPPONENT), false);
+ super(Zone.BATTLEFIELD, new DamagePlayersEffect(Outcome.Damage, ImodaneThePyrohammerDynamicValue.instance, TargetController.OPPONENT)
+ .setText("{this} deals that much damage to each opponent"), false);
setTriggerPhrase("Whenever an instant or sorcery spell you control that targets only a single creature deals damage to that creature, ");
addHint(hint);
}
@@ -140,4 +141,4 @@ enum ImodaneThePyrohammerDynamicValue implements DynamicValue {
public String getMessage() {
return "that much damage";
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/m/MonstrousRage.java b/Mage.Sets/src/mage/cards/m/MonstrousRage.java
index 92e317805f9..14718f27d0f 100644
--- a/Mage.Sets/src/mage/cards/m/MonstrousRage.java
+++ b/Mage.Sets/src/mage/cards/m/MonstrousRage.java
@@ -21,7 +21,7 @@ public final class MonstrousRage extends CardImpl {
// Target creature gets +2/+0 until end of turn. Create a Monster Role attached to it.
this.getSpellAbility().addEffect(new BoostTargetEffect(2, 0));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
- this.getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.MONSTER).setText("create a Monster Role attached to it"));
+ this.getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.MONSTER).setText("create a Monster Role token attached to it"));
}
private MonstrousRage(final MonstrousRage card) {
diff --git a/Mage.Sets/src/mage/cards/m/MoonshakerCavalry.java b/Mage.Sets/src/mage/cards/m/MoonshakerCavalry.java
index 311d1910053..6f0881e75fe 100644
--- a/Mage.Sets/src/mage/cards/m/MoonshakerCavalry.java
+++ b/Mage.Sets/src/mage/cards/m/MoonshakerCavalry.java
@@ -37,7 +37,7 @@ public final class MoonshakerCavalry extends CardImpl {
Ability ability = new EntersBattlefieldTriggeredAbility(new GainAbilityControlledEffect(
FlyingAbility.getInstance(), Duration.EndOfTurn,
StaticFilters.FILTER_PERMANENT_CREATURES
- ));
+ ).setText("creatures you control gain flying"));
ability.addEffect(new BoostControlledEffect(
CreaturesYouControlCount.instance, CreaturesYouControlCount.instance, Duration.EndOfTurn
).setText("and get +X/+X until end of turn, where X is the number of creatures you control"));
diff --git a/Mage.Sets/src/mage/cards/n/NightOfTheSweetsRevenge.java b/Mage.Sets/src/mage/cards/n/NightOfTheSweetsRevenge.java
index bb1bc8b1153..c200a3ae57b 100644
--- a/Mage.Sets/src/mage/cards/n/NightOfTheSweetsRevenge.java
+++ b/Mage.Sets/src/mage/cards/n/NightOfTheSweetsRevenge.java
@@ -18,7 +18,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
+import mage.constants.SubType;
import mage.filter.StaticFilters;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.FoodToken;
import java.util.UUID;
@@ -29,7 +31,9 @@ import java.util.UUID;
*/
public final class NightOfTheSweetsRevenge extends CardImpl {
- private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_FOOD);
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOOD, "Foods");
+
+ private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
private static final Hint hint = new ValueHint("Foods you control", xValue);
public NightOfTheSweetsRevenge(UUID ownerId, CardSetInfo setInfo) {
@@ -41,8 +45,7 @@ public final class NightOfTheSweetsRevenge extends CardImpl {
// Foods you control have "{T}: Add {G}."
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
- new GreenManaAbility(), Duration.WhileOnBattlefield,
- StaticFilters.FILTER_CONTROLLED_FOOD
+ new GreenManaAbility(), Duration.WhileOnBattlefield, filter
)));
// {5}{G}{G}, Sacrifice Night of the Sweets' Revenge: Creatures you control get +X/+X until end of turn, where X is the number of Foods you control. Activate only as a sorcery.
diff --git a/Mage.Sets/src/mage/cards/o/OgreChitterlord.java b/Mage.Sets/src/mage/cards/o/OgreChitterlord.java
index 208bbe74383..89b7cccea8f 100644
--- a/Mage.Sets/src/mage/cards/o/OgreChitterlord.java
+++ b/Mage.Sets/src/mage/cards/o/OgreChitterlord.java
@@ -30,7 +30,7 @@ public final class OgreChitterlord extends CardImpl {
private static final FilterControlledCreaturePermanent filter =
new FilterControlledCreaturePermanent(SubType.RAT, "each Rat you control");
private static final FilterControlledPermanent filterCondition =
- new FilterControlledPermanent(SubType.RAT, "five or more Rats");
+ new FilterControlledPermanent(SubType.RAT, "you control five or more Rats");
private static final Condition condition =
new PermanentsOnTheBattlefieldCondition(filterCondition, ComparisonType.OR_GREATER, 5);
diff --git a/Mage.Sets/src/mage/cards/o/OldFlitterfang.java b/Mage.Sets/src/mage/cards/o/OldFlitterfang.java
index 3e6099dfa45..20496892680 100644
--- a/Mage.Sets/src/mage/cards/o/OldFlitterfang.java
+++ b/Mage.Sets/src/mage/cards/o/OldFlitterfang.java
@@ -6,7 +6,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.MorbidCondition;
import mage.abilities.costs.common.SacrificeTargetCost;
-import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.MorbidHint;
@@ -42,9 +42,9 @@ public final class OldFlitterfang extends CardImpl {
MorbidCondition.instance, false
).addHint(MorbidHint.instance));
- // {2}, Sacrifice another creature or artifact: Old Flitterfang gets +2/+2 until end of turn.
+ // {2}{B}, Sacrifice another creature or artifact: Old Flitterfang gets +2/+2 until end of turn.
Ability ability = new SimpleActivatedAbility(
- new BoostSourceEffect(2, 2, Duration.EndOfTurn), new GenericManaCost(2)
+ new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl<>("{2}{B}")
);
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_ARTIFACT_OR_CREATURE_SHORT_TEXT));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/p/PicklockPrankster.java b/Mage.Sets/src/mage/cards/p/PicklockPrankster.java
index 8a8a78f96b2..aa6d576adf9 100644
--- a/Mage.Sets/src/mage/cards/p/PicklockPrankster.java
+++ b/Mage.Sets/src/mage/cards/p/PicklockPrankster.java
@@ -44,7 +44,7 @@ public final class PicklockPrankster extends AdventureCard {
// Free the Fae
// Mill four cards. Then put an instant, sorcery, or Faerie card from among the milled cards into your hand.
- this.getSpellAbility().addEffect(new MillThenPutInHandEffect(4, filter));
+ this.getSpellCard().getSpellAbility().addEffect(new MillThenPutInHandEffect(4, filter));
}
private PicklockPrankster(final PicklockPrankster card) {
diff --git a/Mage.Sets/src/mage/cards/r/RagingBattleMouse.java b/Mage.Sets/src/mage/cards/r/RagingBattleMouse.java
index 04583ef1849..fb2d6b4a7d7 100644
--- a/Mage.Sets/src/mage/cards/r/RagingBattleMouse.java
+++ b/Mage.Sets/src/mage/cards/r/RagingBattleMouse.java
@@ -40,11 +40,11 @@ public final class RagingBattleMouse extends CardImpl {
YouCastExactOneSpellThisTurnCondition.instance, "the second spell you cast each turn costs {1} less to cast"
)));
- // Celebration -- At the beginning of combat on each of your turns, if two or more nonland permanents entered the battlefield under your control this turn, target creature you control gets +1/+1 until end of turn.
+ // Celebration -- At the beginning of combat on your turn, if two or more nonland permanents entered the battlefield under your control this turn, target creature you control gets +1/+1 until end of turn.
Ability ability = new ConditionalInterveningIfTriggeredAbility(
new BeginningOfCombatTriggeredAbility(
new BoostTargetEffect(1, 1, Duration.EndOfTurn), TargetController.YOU, false
- ), CelebrationCondition.instance, "At the beginning of combat on each of your turns, "
+ ), CelebrationCondition.instance, "At the beginning of combat on your turn, "
+ "if two or more nonland permanents entered the battlefield under your control this turn, "
+ "target creature you control gets +1/+1 until end of turn."
);
@@ -72,4 +72,4 @@ enum YouCastExactOneSpellThisTurnCondition implements Condition {
SpellsCastWatcher watcher = game.getState().getWatcher(SpellsCastWatcher.class);
return watcher != null && watcher.getSpellsCastThisTurn(source.getControllerId()).size() == 1;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/r/RatOut.java b/Mage.Sets/src/mage/cards/r/RatOut.java
index f02a61476c6..a2c3b9e5182 100644
--- a/Mage.Sets/src/mage/cards/r/RatOut.java
+++ b/Mage.Sets/src/mage/cards/r/RatOut.java
@@ -23,7 +23,7 @@ public final class RatOut extends CardImpl {
// Up to one target creature gets -1/-1 until end of turn. You create a 1/1 black Rat creature token with "This creature can't block."
this.getSpellAbility().addEffect(new BoostTargetEffect(-1, -1, Duration.EndOfTurn));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1));
- this.getSpellAbility().addEffect(new CreateTokenEffect(new RatCantBlockToken()));
+ this.getSpellAbility().addEffect(new CreateTokenEffect(new RatCantBlockToken()).concatBy("You"));
}
private RatOut(final RatOut card) {
diff --git a/Mage.Sets/src/mage/cards/r/RestlessCottage.java b/Mage.Sets/src/mage/cards/r/RestlessCottage.java
index 657fc7a1229..e858030e5ed 100644
--- a/Mage.Sets/src/mage/cards/r/RestlessCottage.java
+++ b/Mage.Sets/src/mage/cards/r/RestlessCottage.java
@@ -45,7 +45,7 @@ public final class RestlessCottage extends CardImpl {
// Whenever Restless Cottage attacks, create a Food token and exile up to one target card from a graveyard.
Ability ability = new AttacksTriggeredAbility(new CreateTokenEffect(new FoodToken()));
- ability.addEffect(new ExileTargetEffect());
+ ability.addEffect(new ExileTargetEffect().concatBy("and"));
ability.addTarget(new TargetCardInGraveyard(0, 1));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/r/ReturnFromTheWilds.java b/Mage.Sets/src/mage/cards/r/ReturnFromTheWilds.java
index 649b1d279f8..2ade25c80bf 100644
--- a/Mage.Sets/src/mage/cards/r/ReturnFromTheWilds.java
+++ b/Mage.Sets/src/mage/cards/r/ReturnFromTheWilds.java
@@ -27,7 +27,7 @@ public final class ReturnFromTheWilds extends CardImpl {
// * Search your library for a basic land card, put it onto the battlefield tapped, then shuffle.
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(
- new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true
+ new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, false
));
// * Create a 1/1 white Human creature token.
diff --git a/Mage.Sets/src/mage/cards/r/RimefurReindeer.java b/Mage.Sets/src/mage/cards/r/RimefurReindeer.java
index 7c66da5db6b..c3af4a3a6c2 100644
--- a/Mage.Sets/src/mage/cards/r/RimefurReindeer.java
+++ b/Mage.Sets/src/mage/cards/r/RimefurReindeer.java
@@ -25,7 +25,7 @@ public final class RimefurReindeer extends CardImpl {
this.toughness = new MageInt(4);
// Whenever an enchantment enters the battlefield under your control, tap target creature an opponent controls.
- Ability ability = new ConstellationAbility(new TapTargetEffect());
+ Ability ability = new ConstellationAbility(new TapTargetEffect(), false, false);
ability.addTarget(new TargetOpponentsCreaturePermanent());
this.addAbility(ability.setAbilityWord(null));
}
diff --git a/Mage.Sets/src/mage/cards/s/SongOfTotentanz.java b/Mage.Sets/src/mage/cards/s/SongOfTotentanz.java
index 44dd033fa5a..f50e41b354d 100644
--- a/Mage.Sets/src/mage/cards/s/SongOfTotentanz.java
+++ b/Mage.Sets/src/mage/cards/s/SongOfTotentanz.java
@@ -2,9 +2,13 @@ package mage.cards.s;
import mage.abilities.dynamicvalue.common.ManacostVariableValue;
import mage.abilities.effects.common.CreateTokenEffect;
+import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
+import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.filter.StaticFilters;
import mage.game.permanent.token.RatCantBlockToken;
import java.util.UUID;
@@ -19,6 +23,8 @@ public final class SongOfTotentanz extends CardImpl {
// Create X 1/1 black Rat creature tokens with “This creature can’t block.” Creatures you control gain haste until end of turn.
this.getSpellAbility().addEffect(new CreateTokenEffect(new RatCantBlockToken(), ManacostVariableValue.REGULAR));
+ this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
+ HasteAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES));
}
private SongOfTotentanz(final SongOfTotentanz card) {
diff --git a/Mage.Sets/src/mage/cards/s/SpellStutter.java b/Mage.Sets/src/mage/cards/s/SpellStutter.java
index 9b051685a24..dd547cf1558 100644
--- a/Mage.Sets/src/mage/cards/s/SpellStutter.java
+++ b/Mage.Sets/src/mage/cards/s/SpellStutter.java
@@ -32,7 +32,7 @@ public final class SpellStutter extends CardImpl {
// Counter target spell unless its controller pays {2} plus an additional {1} for each Faerie you control.
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(xValue).setText(
- "Counter target spell unless its controller pays {2}"
+ "Counter target spell unless its controller pays {2} "
+ "plus an additional {1} for each Faerie you control."
));
this.getSpellAbility().addTarget(new TargetSpell());
diff --git a/Mage.Sets/src/mage/cards/t/TalionTheKindlyLord.java b/Mage.Sets/src/mage/cards/t/TalionTheKindlyLord.java
index 611f2a2550f..3ebba0e0807 100644
--- a/Mage.Sets/src/mage/cards/t/TalionTheKindlyLord.java
+++ b/Mage.Sets/src/mage/cards/t/TalionTheKindlyLord.java
@@ -54,7 +54,7 @@ public final class TalionTheKindlyLord extends CardImpl {
.setText("that player loses 2 life"),
filter, false, SetTargetPointer.PLAYER
);
- ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and"));
+ ability.addEffect(new DrawCardSourceControllerEffect(1, "you").concatBy("and"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/t/TatteredRatter.java b/Mage.Sets/src/mage/cards/t/TatteredRatter.java
index f5ca923f941..8de80a4f002 100644
--- a/Mage.Sets/src/mage/cards/t/TatteredRatter.java
+++ b/Mage.Sets/src/mage/cards/t/TatteredRatter.java
@@ -17,7 +17,7 @@ import java.util.UUID;
*/
public final class TatteredRatter extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.RAT, "Rat you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.RAT, "a Rat you control");
public TatteredRatter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TorchTheTower.java b/Mage.Sets/src/mage/cards/t/TorchTheTower.java
index 88d06ed7016..a3005af7973 100644
--- a/Mage.Sets/src/mage/cards/t/TorchTheTower.java
+++ b/Mage.Sets/src/mage/cards/t/TorchTheTower.java
@@ -39,7 +39,7 @@ public final class TorchTheTower extends CardImpl {
// If a permanent dealt damage by Torch the Tower would die this turn, exile it instead.
this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn)
- .setText("if a permanent dealt damage by {this} would die this turn, exile it instead"));
+ .setText("
If a permanent dealt damage by {this} would die this turn, exile it instead"));
this.getSpellAbility().addWatcher(new DamagedByWatcher(false));
}
diff --git a/Mage.Sets/src/mage/cards/t/ToughCookie.java b/Mage.Sets/src/mage/cards/t/ToughCookie.java
index 072a87d721d..82a12b8ec21 100644
--- a/Mage.Sets/src/mage/cards/t/ToughCookie.java
+++ b/Mage.Sets/src/mage/cards/t/ToughCookie.java
@@ -54,7 +54,7 @@ public final class ToughCookie extends CardImpl {
).setText("target noncreature artifact you control becomes"), new ManaCostsImpl<>("{2}{G}"));
ability.addEffect(new SetBasePowerToughnessTargetEffect(
4, 4, Duration.EndOfTurn
- ).setText("a 4/4 artifact creature until end of turn"));
+ ).setText(" a 4/4 artifact creature until end of turn"));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/t/TroyanGutsyExplorer.java b/Mage.Sets/src/mage/cards/t/TroyanGutsyExplorer.java
index 6c59b1cb0bf..f3fd3b2aa34 100644
--- a/Mage.Sets/src/mage/cards/t/TroyanGutsyExplorer.java
+++ b/Mage.Sets/src/mage/cards/t/TroyanGutsyExplorer.java
@@ -72,14 +72,14 @@ class TroyanGutsyExplorerManaBuilder extends ConditionalManaBuilder {
@Override
public String getRule() {
- return "Spend this mana only to cast spells with mana value 5 or greater or spells with X in their mana costs";
+ return "Spend this mana only to cast spells with mana value 5 or greater or spells with {X} in their mana costs";
}
}
class TroyanGutsyExplorerConditionalMana extends ConditionalMana {
TroyanGutsyExplorerConditionalMana(Mana mana) {
super(mana);
- staticText = "Spend this mana only to cast spells with mana value 5 or greater or spells with X in their mana costs";
+ staticText = "Spend this mana only to cast spells with mana value 5 or greater or spells with {X} in their mana costs";
addCondition(TroyanGutsyExplorerCondition.instance);
}
}
diff --git a/Mage.Sets/src/mage/cards/t/TwistedFealty.java b/Mage.Sets/src/mage/cards/t/TwistedFealty.java
index 0c544b1e9d1..fa7490d1581 100644
--- a/Mage.Sets/src/mage/cards/t/TwistedFealty.java
+++ b/Mage.Sets/src/mage/cards/t/TwistedFealty.java
@@ -33,7 +33,7 @@ public final class TwistedFealty extends CardImpl {
// Create a Wicked Role token attached to up to one target creature.
this.getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.WICKED)
- .setTargetPointer(new SecondTargetPointer()));
+ .setTargetPointer(new SecondTargetPointer()).concatBy("
"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1));
}
diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
index 2b38b96b52f..6b54a3e82de 100644
--- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
+++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
@@ -62,7 +62,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
- private static final String FULL_ABILITIES_CHECK_SET_CODES = "LTR;LTC;CMM"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all
+ private static final String FULL_ABILITIES_CHECK_SET_CODES = "WOE"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all
private static final boolean CHECK_ONLY_ABILITIES_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
diff --git a/Mage/src/main/java/mage/abilities/common/PayMoreToCastAsThoughtItHadFlashAbility.java b/Mage/src/main/java/mage/abilities/common/PayMoreToCastAsThoughtItHadFlashAbility.java
index 7ddb2b327d3..6aa1b8909ad 100644
--- a/Mage/src/main/java/mage/abilities/common/PayMoreToCastAsThoughtItHadFlashAbility.java
+++ b/Mage/src/main/java/mage/abilities/common/PayMoreToCastAsThoughtItHadFlashAbility.java
@@ -41,7 +41,7 @@ public class PayMoreToCastAsThoughtItHadFlashAbility extends SpellAbility {
@Override
public String getRule() {
- return "You may cast this spell as though it had flash if you pay " + costsToAdd.getText() + " more to cast it. (You may cast it any time you could cast an instant.)";
+ return "You may cast {this} as though it had flash if you pay " + costsToAdd.getText() + " more to cast it. (You may cast it any time you could cast an instant.)";
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersAllEffect.java
index a67604acb57..a090adfa398 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersAllEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersAllEffect.java
@@ -32,6 +32,7 @@ public class AddCountersAllEffect extends OneShotEffect {
this.counter = counter;
this.amount = amount;
this.filter = filter;
+ staticText = "put " + counter.getDescription() + " on each " + filter.getMessage();
}
protected AddCountersAllEffect(final AddCountersAllEffect effect) {
@@ -72,14 +73,6 @@ public class AddCountersAllEffect extends OneShotEffect {
return false;
}
- @Override
- public String getText(Mode mode) {
- if (!staticText.isEmpty()) {
- return staticText;
- }
- return CardUtil.getAddRemoveCountersText(amount, counter, getTargetPointer().describeTargets(mode.getTargets(), "that creature"), true);
- }
-
@Override
public AddCountersAllEffect copy() {
return new AddCountersAllEffect(this);
diff --git a/Mage/src/main/java/mage/abilities/keyword/BargainAbility.java b/Mage/src/main/java/mage/abilities/keyword/BargainAbility.java
index f2bc9074fc0..e60f2821db0 100644
--- a/Mage/src/main/java/mage/abilities/keyword/BargainAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/BargainAbility.java
@@ -53,7 +53,7 @@ public class BargainAbility extends StaticAbility implements OptionalAdditionalS
super(Zone.STACK, null);
this.additionalCost = new OptionalAdditionalCostImpl(keywordText, reminderText, new SacrificeTargetCost(bargainFilter));
this.additionalCost.setRepeatable(false);
- this.rule = additionalCost.getName() + additionalCost.getReminderText();
+ this.rule = additionalCost.getName() + ' ' + additionalCost.getReminderText();
this.setRuleAtTheTop(true);
this.addHint(BargainCostWasPaidHint.instance);
this.activationKey = null;
@@ -146,4 +146,4 @@ public class BargainAbility extends StaticAbility implements OptionalAdditionalS
public String getRule() {
return rule;
}
-}
\ No newline at end of file
+}