diff --git a/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java b/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java
index 95d25ba506..69a0669e36 100644
--- a/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java
+++ b/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java
@@ -77,7 +77,7 @@ class AngrathMinotaurPirateThirdAbilityEffect extends OneShotEffect {
public AngrathMinotaurPirateThirdAbilityEffect() {
super(Outcome.DestroyPermanent);
- this.staticText = "Destroy all creature target opponent controls. {this} deals damage to that player equal to their total power";
+ this.staticText = "Destroy all creature target opponent controls. {this} deals damage to that player equal to their total power";
}
public AngrathMinotaurPirateThirdAbilityEffect(final AngrathMinotaurPirateThirdAbilityEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/a/AngrathsFury.java b/Mage.Sets/src/mage/cards/a/AngrathsFury.java
index 3e43be2837..2086239f46 100644
--- a/Mage.Sets/src/mage/cards/a/AngrathsFury.java
+++ b/Mage.Sets/src/mage/cards/a/AngrathsFury.java
@@ -40,7 +40,7 @@ public final class AngrathsFury extends CardImpl {
// You may search your library and/or graveyard for a card named Angrath, Minotaur Pirate, reveal it, and put it into your hand. If you search your library this way, shuffle it.
this.getSpellAbility().addEffect(new SearchLibraryGraveyardPutInHandEffect(filter)
- .setText("You may search your library and/or graveyard for a card named Angrath, Minotaur Pirate, reveal it, and put it into your hand. If you search your library this way, shuffle"));
+ .setText("You may search your library and/or graveyard for a card named Angrath, Minotaur Pirate, reveal it, and put it into your hand. If you search your library this way, shuffle"));
}
diff --git a/Mage.Sets/src/mage/cards/a/AyliEternalPilgrim.java b/Mage.Sets/src/mage/cards/a/AyliEternalPilgrim.java
index 1caf9edea1..6c99187647 100644
--- a/Mage.Sets/src/mage/cards/a/AyliEternalPilgrim.java
+++ b/Mage.Sets/src/mage/cards/a/AyliEternalPilgrim.java
@@ -57,7 +57,7 @@ public final class AyliEternalPilgrim extends CardImpl {
new ExileTargetEffect(),
new ManaCostsImpl("{1}{W}{B}"),
new AyliEternalPilgrimCondition(),
- "{1}{W}{B}, Sacrifice another creature: Exile target nonland permanent. Activate only if you have at least 10 life more than your starting life total");
+ "{1}{W}{B}, Sacrifice another creature: Exile target nonland permanent. Activate only if you have at least 10 life more than your starting life total.");
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
ability.addTarget(new TargetNonlandPermanent());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/b/BafflingEnd.java b/Mage.Sets/src/mage/cards/b/BafflingEnd.java
index 057d7b54d5..532f8248ba 100644
--- a/Mage.Sets/src/mage/cards/b/BafflingEnd.java
+++ b/Mage.Sets/src/mage/cards/b/BafflingEnd.java
@@ -25,7 +25,7 @@ import mage.target.common.TargetOpponent;
*/
public final class BafflingEnd extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with mana value 3 or less an opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls with mana value 3 or less");
static {
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));
diff --git a/Mage.Sets/src/mage/cards/b/BaralsExpertise.java b/Mage.Sets/src/mage/cards/b/BaralsExpertise.java
index 53c1e54db3..634b7ee170 100644
--- a/Mage.Sets/src/mage/cards/b/BaralsExpertise.java
+++ b/Mage.Sets/src/mage/cards/b/BaralsExpertise.java
@@ -32,7 +32,7 @@ public final class BaralsExpertise extends CardImpl {
getSpellAbility().addTarget(new TargetPermanent(0, 3, filter, false));
// You may cast a card with converted mana cost 4 or less from your hand without paying its mana cost.
- getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(4));
+ getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(4).concatBy("
"));
}
private BaralsExpertise(final BaralsExpertise card) {
diff --git a/Mage.Sets/src/mage/cards/b/BorderlandRanger.java b/Mage.Sets/src/mage/cards/b/BorderlandRanger.java
index 097c0514c7..7c6977b10a 100644
--- a/Mage.Sets/src/mage/cards/b/BorderlandRanger.java
+++ b/Mage.Sets/src/mage/cards/b/BorderlandRanger.java
@@ -27,7 +27,7 @@ public final class BorderlandRanger extends CardImpl {
this.toughness = new MageInt(2);
// When Borderland Ranger enters the battlefield, you may search your library for a basic land card, reveal it, and put it into your hand. If you do, shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, false), true));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true));
}
private BorderlandRanger(final BorderlandRanger card) {
diff --git a/Mage.Sets/src/mage/cards/b/BrainInAJar.java b/Mage.Sets/src/mage/cards/b/BrainInAJar.java
index 62ed9f8c0d..f2362fcefd 100644
--- a/Mage.Sets/src/mage/cards/b/BrainInAJar.java
+++ b/Mage.Sets/src/mage/cards/b/BrainInAJar.java
@@ -70,8 +70,8 @@ class BrainInAJarCastEffect extends OneShotEffect {
public BrainInAJarCastEffect() {
super(Outcome.PlayForFree);
- this.staticText = ", then you may cast an instant or sorcery card "
- + "with mana values equal to the number of charge "
+ this.staticText = ", then you may cast an instant or sorcery spell "
+ + "with mana value equal to the number of charge "
+ "counters on {this} from your hand without paying its mana cost";
}
diff --git a/Mage.Sets/src/mage/cards/b/BreathstealersCrypt.java b/Mage.Sets/src/mage/cards/b/BreathstealersCrypt.java
index 72194da85d..22a4c8a879 100644
--- a/Mage.Sets/src/mage/cards/b/BreathstealersCrypt.java
+++ b/Mage.Sets/src/mage/cards/b/BreathstealersCrypt.java
@@ -76,7 +76,7 @@ class BreathstealersCryptEffect extends ReplacementEffectImpl {
if (!cardDrawn.isCreature()) {
return true;
}
- game.informPlayers("The card drawn by " + player.getName() + " is a creature card. They discard that card unless they pay 3 life.");
+ game.informPlayers("The card drawn by " + player.getName() + " is a creature card. They discard that card unless they pay 3 life.");
PayLifeCost cost = new PayLifeCost(3);
if (!cost.canPay(source, source, player.getId(), game)
|| !player.chooseUse(outcome, "Pay 3 life or discard " + cardDrawn.getIdName() + "?", null, "Pay 3 life", "Discard", source, game)
diff --git a/Mage.Sets/src/mage/cards/c/CabalInquisitor.java b/Mage.Sets/src/mage/cards/c/CabalInquisitor.java
index b10990d0e8..0281d5cfcd 100644
--- a/Mage.Sets/src/mage/cards/c/CabalInquisitor.java
+++ b/Mage.Sets/src/mage/cards/c/CabalInquisitor.java
@@ -84,6 +84,6 @@ class ActivateAsSorceryConditionalActivatedAbility extends ActivatedAbilityImpl
@Override
public String getRule() {
- return super.getRule() + " Activate only as a sorcery, and only if seven or more cards are in your graveyard.";
+ return super.getRule() + " Activate only as a sorcery and only if seven or more cards are in your graveyard.";
}
}
diff --git a/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java b/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java
index 668c47c9bb..09ebc62e4d 100644
--- a/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java
+++ b/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java
@@ -66,7 +66,7 @@ class ChandraRoaringFlameEmblemEffect extends OneShotEffect {
public ChandraRoaringFlameEmblemEffect() {
super(Outcome.Damage);
- this.staticText = "{this} deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with \"At the beginning of your upkeep, this emblem deals 3 damage to you.\"";
+ this.staticText = "{this} deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with \"At the beginning of your upkeep, this emblem deals 3 damage to you.\"";
}
public ChandraRoaringFlameEmblemEffect(final ChandraRoaringFlameEmblemEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/c/CharmedPendant.java b/Mage.Sets/src/mage/cards/c/CharmedPendant.java
index 087d309d8c..7e67fb92a0 100644
--- a/Mage.Sets/src/mage/cards/c/CharmedPendant.java
+++ b/Mage.Sets/src/mage/cards/c/CharmedPendant.java
@@ -88,7 +88,7 @@ class CharmedPendantManaEffect extends ManaEffect {
public CharmedPendantManaEffect() {
super();
- staticText = "For each colored mana symbol in that card's mana cost, add one mana of that color";
+ staticText = "For each colored mana symbol in the milled card's mana cost, add one mana of that color";
}
public CharmedPendantManaEffect(final CharmedPendantManaEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/c/Conflux.java b/Mage.Sets/src/mage/cards/c/Conflux.java
index 524fe867c8..3c95b7aced 100644
--- a/Mage.Sets/src/mage/cards/c/Conflux.java
+++ b/Mage.Sets/src/mage/cards/c/Conflux.java
@@ -25,7 +25,7 @@ public final class Conflux extends CardImpl {
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
new ConfluxTarget(), true, true
).setText("search your library for a white card, a blue card, a black card, a red card, and a green card. " +
- "Reveal those cards and put them into your hand. Then shuffle"));
+ "Reveal those cards, put them into your hand, then shuffle"));
}
private Conflux(final Conflux card) {
diff --git a/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java b/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java
index a08b099ba3..37c87af0b2 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseConnoisseur.java
@@ -53,7 +53,7 @@ class SearchLibraryPutInGraveyard extends SearchEffect {
public SearchLibraryPutInGraveyard() {
super(new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE), Outcome.Neutral);
- staticText = "search your library for a card and put that card into your graveyard. Then shuffle";
+ staticText = "search your library for a creature card, put that card into your graveyard, then shuffle";
}
public SearchLibraryPutInGraveyard(final SearchLibraryPutInGraveyard effect) {
diff --git a/Mage.Sets/src/mage/cards/c/CosmicHorror.java b/Mage.Sets/src/mage/cards/c/CosmicHorror.java
index e73c4829b8..d606773ad6 100644
--- a/Mage.Sets/src/mage/cards/c/CosmicHorror.java
+++ b/Mage.Sets/src/mage/cards/c/CosmicHorror.java
@@ -55,7 +55,7 @@ class CosmicHorrorEffect extends OneShotEffect {
public CosmicHorrorEffect(Cost cost) {
super(Outcome.DestroyPermanent);
this.cost = cost;
- staticText = "destroy {this} unless you pay {3}{B}{B}{B}. If {this} is destroyed this way it deals 7 damage to you";
+ staticText = "destroy {this} unless you pay {3}{B}{B}{B}. If {this} is destroyed this way it deals 7 damage to you";
}
public CosmicHorrorEffect(final CosmicHorrorEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/d/DisasterRadius.java b/Mage.Sets/src/mage/cards/d/DisasterRadius.java
index 36922e1ac2..96f168d3e3 100644
--- a/Mage.Sets/src/mage/cards/d/DisasterRadius.java
+++ b/Mage.Sets/src/mage/cards/d/DisasterRadius.java
@@ -27,7 +27,7 @@ public final class DisasterRadius extends CardImpl {
// As an additional cost to cast Disaster Radius, reveal a creature card from your hand.
- TargetCardInHand targetCard = new TargetCardInHand(new FilterCreatureCard("a creature card"));
+ TargetCardInHand targetCard = new TargetCardInHand(new FilterCreatureCard("a creature card from your hand"));
this.getSpellAbility().addCost(new RevealTargetFromHandCost(targetCard));
// Disaster Radius deals X damage to each creature your opponents control, where X is the revealed card's converted mana cost.
diff --git a/Mage.Sets/src/mage/cards/d/Dispossess.java b/Mage.Sets/src/mage/cards/d/Dispossess.java
index 215d7755f2..1152406504 100644
--- a/Mage.Sets/src/mage/cards/d/Dispossess.java
+++ b/Mage.Sets/src/mage/cards/d/Dispossess.java
@@ -38,7 +38,7 @@ public final class Dispossess extends CardImpl {
class DispossessEffect extends SearchTargetGraveyardHandLibraryForCardNameAndExileEffect {
public DispossessEffect() {
- super(true, "target opponent's", "any number of cards with that name");
+ super(true, "target opponent's", "any number of cards with the chosen name");
}
public DispossessEffect(final DispossessEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/d/DistantMemories.java b/Mage.Sets/src/mage/cards/d/DistantMemories.java
index d6232b30ba..715ef508ca 100644
--- a/Mage.Sets/src/mage/cards/d/DistantMemories.java
+++ b/Mage.Sets/src/mage/cards/d/DistantMemories.java
@@ -40,8 +40,8 @@ class DistantMemoriesEffect extends OneShotEffect {
public DistantMemoriesEffect() {
super(Outcome.DrawCard);
- this.staticText = "Search your library for a card, exile it, then shuffle "
- + "your library. Any opponent may have you put that card into "
+ this.staticText = "Search your library for a card, exile it, then shuffle. "
+ + "Any opponent may have you put that card into "
+ "your hand. If no player does, you draw three cards";
}
diff --git a/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java b/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java
index 543deb527d..b0b8663c71 100644
--- a/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java
+++ b/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java
@@ -27,7 +27,7 @@ import java.util.UUID;
*/
public final class EdificeOfAuthority extends CardImpl {
- private static final String rule = "{1}, {T}: Until your next turn, target creature can't attack or block and its activated abilities can't be activated. Activate only if there are three or more brick counter on {this}.";
+ private static final String rule = "{1}, {T}: Until your next turn, target creature can't attack or block and its activated abilities can't be activated. Activate only if there are three or more brick counters on {this}.";
public EdificeOfAuthority(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
diff --git a/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java b/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java
index 128755c4bf..f4fd107c7d 100644
--- a/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java
+++ b/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java
@@ -33,7 +33,7 @@ public final class EmberwildeAugur extends CardImpl {
// Sacrifice Emberwilde Augur: Emberwilde Augur deals 3 damage to target player. Activate this ability only during your upkeep.
Ability ability = new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD,
- new DamageTargetEffect(3),
+ new DamageTargetEffect(3, "it"),
new SacrificeSourceCost(),
new IsStepCondition(PhaseStep.UPKEEP));
ability.addTarget(new TargetPlayerOrPlaneswalker());
diff --git a/Mage.Sets/src/mage/cards/e/EssenceFlux.java b/Mage.Sets/src/mage/cards/e/EssenceFlux.java
index 517cd8a7cf..25f79695d4 100644
--- a/Mage.Sets/src/mage/cards/e/EssenceFlux.java
+++ b/Mage.Sets/src/mage/cards/e/EssenceFlux.java
@@ -48,7 +48,7 @@ class EssenceFluxEffect extends OneShotEffect {
EssenceFluxEffect() {
super(Outcome.Benefit);
- staticText = "return that card to the battlefield under its owner's control. If it's a Spirit, put a +1/+1 counter on it";
+ staticText = "return that card to the battlefield under its owner's control. If it's a Spirit, put a +1/+1 counter on it";
}
EssenceFluxEffect(final EssenceFluxEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/e/EtherealValkyrie.java b/Mage.Sets/src/mage/cards/e/EtherealValkyrie.java
index 52bb5896af..4c716caa04 100644
--- a/Mage.Sets/src/mage/cards/e/EtherealValkyrie.java
+++ b/Mage.Sets/src/mage/cards/e/EtherealValkyrie.java
@@ -123,7 +123,7 @@ class EtherealValkyrieEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
controller.drawCards(1, source, game);
- TargetCardInHand targetCard = new TargetCardInHand(new FilterCard("card to exile face down. It becomes foretold."));
+ TargetCardInHand targetCard = new TargetCardInHand(new FilterCard("card to exile face down. It becomes foretold."));
if (controller.chooseTarget(Outcome.Benefit, targetCard, source, game)) {
Card exileCard = game.getCard(targetCard.getFirstTarget());
if (exileCard == null) {
diff --git a/Mage.Sets/src/mage/cards/f/FatalLore.java b/Mage.Sets/src/mage/cards/f/FatalLore.java
index 38c132fe7c..8d6d9dd88b 100644
--- a/Mage.Sets/src/mage/cards/f/FatalLore.java
+++ b/Mage.Sets/src/mage/cards/f/FatalLore.java
@@ -66,7 +66,7 @@ class FatalLoreEffect extends OneShotEffect {
Player chosenOpponent = game.getPlayer(targetPointer.getFirst(game, source));
if (controller != null
&& chosenOpponent != null) {
- if (chosenOpponent.chooseUse(Outcome.Neutral, "If you choose Yes, the controller draws three cards. If no, the controller gets to destroy up to two target creatures that you control and you get to draw up to 3 cards. Those creatures can't be regenerated.", source, game)) {
+ if (chosenOpponent.chooseUse(Outcome.Neutral, "If you choose Yes, the controller draws three cards. If no, the controller gets to destroy up to two target creatures that you control and you get to draw up to 3 cards. Those creatures can't be regenerated.", source, game)) {
controller.drawCards(3, source, game);
} else {
FilterCreaturePermanent filter = new FilterCreaturePermanent("chosen opponent's creature");
diff --git a/Mage.Sets/src/mage/cards/f/Fleshwrither.java b/Mage.Sets/src/mage/cards/f/Fleshwrither.java
index 52f82a49f7..5512cc5ca3 100644
--- a/Mage.Sets/src/mage/cards/f/Fleshwrither.java
+++ b/Mage.Sets/src/mage/cards/f/Fleshwrither.java
@@ -1,48 +1,38 @@
-
package mage.cards.f;
-import java.util.UUID;
import mage.MageInt;
-import mage.MageObject;
import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.cards.Cards;
-import mage.cards.CardsImpl;
-import mage.constants.CardType;
-import mage.constants.SubType;
-import mage.constants.ComparisonType;
-import mage.constants.Outcome;
-import mage.constants.TimingRule;
-import mage.constants.Zone;
+import mage.constants.*;
+import mage.filter.FilterCard;
import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.mageobject.ManaValuePredicate;
import mage.game.Game;
+import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetCardInLibrary;
+import java.util.UUID;
+
/**
- *
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/
public final class Fleshwrither extends CardImpl {
public Fleshwrither(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
this.subtype.add(SubType.HORROR);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// Transfigure {1}{B}{B}: Sacrifice this creature: Search your library for a creature card with the same converted mana cost as this
// creature and put that card onto the battlefield. Then shuffle your library. Transfigure only as a sorcery.
- SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new FleshwritherEffect(), new ManaCostsImpl("{1}{B}{B}"));
- ability.addCost(new SacrificeSourceCost());
- ability.setTiming(TimingRule.SORCERY);
- this.addAbility(ability);
+ this.addAbility(new FleshwritherAbility());
}
private Fleshwrither(final Fleshwrither card) {
@@ -55,11 +45,35 @@ public final class Fleshwrither extends CardImpl {
}
}
+class FleshwritherAbility extends ActivatedAbilityImpl {
+
+ FleshwritherAbility() {
+ super(Zone.BATTLEFIELD, new FleshwritherEffect(), new ManaCostsImpl<>("{1}{B}{B}"));
+ this.addCost(new SacrificeSourceCost());
+ this.setTiming(TimingRule.SORCERY);
+ }
+
+ private FleshwritherAbility(final FleshwritherAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public FleshwritherAbility copy() {
+ return new FleshwritherAbility(this);
+ }
+
+ @Override
+ public String getRule() {
+ return "Transfigure {1}{B}{B} ({1}{B}{B}, Sacrifice this creature: " +
+ "Search your library for a creature card with the same mana value as this creature, " +
+ "put that card onto the battlefield, then shuffle. Transfigure only as a sorcery.)";
+ }
+}
+
class FleshwritherEffect extends OneShotEffect {
FleshwritherEffect() {
super(Outcome.Benefit);
- staticText = "Transfigure: Sacrifice this creature: Search your library for a creature card with the same mana value as this creature and put that card onto the battlefield";
}
FleshwritherEffect(final FleshwritherEffect effect) {
@@ -69,22 +83,17 @@ class FleshwritherEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
- MageObject sourceObject = game.getObject(source.getSourceId());
- if (sourceObject != null && controller != null) {
- FilterCreatureCard filter = new FilterCreatureCard("creature with mana value " + sourceObject.getManaValue());
- filter.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, sourceObject.getManaValue()));
- TargetCardInLibrary target = new TargetCardInLibrary(1, filter);
- if (controller.searchLibrary(target, source, game)) {
- if (!target.getTargets().isEmpty()) {
- Cards chosen = new CardsImpl(target.getTargets());
- controller.moveCards(chosen, Zone.BATTLEFIELD, source, game);
- }
- }
- controller.shuffleLibrary(source, game);
- return true;
+ Permanent sourcePermanent = source.getSourcePermanentOrLKI(game);
+ if (sourcePermanent == null || controller == null) {
+ return false;
}
-
- return false;
+ FilterCard filter = new FilterCreatureCard("creature card with mana value " + sourcePermanent.getManaValue());
+ filter.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, sourcePermanent.getManaValue()));
+ TargetCardInLibrary target = new TargetCardInLibrary(filter);
+ controller.searchLibrary(target, source, game);
+ controller.moveCards(controller.getLibrary().getCard(target.getFirstTarget(), game), Zone.BATTLEFIELD, source, game);
+ controller.shuffleLibrary(source, game);
+ return true;
}
@Override
diff --git a/Mage.Sets/src/mage/cards/f/ForerunnerOfTheEmpire.java b/Mage.Sets/src/mage/cards/f/ForerunnerOfTheEmpire.java
index 77f339d3e9..52268e9239 100644
--- a/Mage.Sets/src/mage/cards/f/ForerunnerOfTheEmpire.java
+++ b/Mage.Sets/src/mage/cards/f/ForerunnerOfTheEmpire.java
@@ -24,7 +24,7 @@ import java.util.UUID;
*/
public final class ForerunnerOfTheEmpire extends CardImpl {
- private static final FilterCreaturePermanent filterAnyDinosaur = new FilterCreaturePermanent(SubType.DINOSAUR, SubType.DINOSAUR.toString());
+ private static final FilterCreaturePermanent filterAnyDinosaur = new FilterCreaturePermanent(SubType.DINOSAUR, "a " + SubType.DINOSAUR.toString());
static {
filterAnyDinosaur.add(TargetController.YOU.getControllerPredicate());
diff --git a/Mage.Sets/src/mage/cards/f/Foresight.java b/Mage.Sets/src/mage/cards/f/Foresight.java
index 2fee2df480..d4c450ddd7 100644
--- a/Mage.Sets/src/mage/cards/f/Foresight.java
+++ b/Mage.Sets/src/mage/cards/f/Foresight.java
@@ -28,7 +28,7 @@ public final class Foresight extends CardImpl {
this.getSpellAbility().addEffect(new ForesightEffect());
// Draw a card at the beginning of the next turn's upkeep.
- this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false).concatBy("
"));
}
private Foresight(final Foresight card) {
diff --git a/Mage.Sets/src/mage/cards/g/GaeasBounty.java b/Mage.Sets/src/mage/cards/g/GaeasBounty.java
index b1188eda5b..7c3bdae094 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasBounty.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasBounty.java
@@ -16,7 +16,7 @@ import mage.target.common.TargetCardInLibrary;
*/
public final class GaeasBounty extends CardImpl {
- private static final FilterLandCard filter = new FilterLandCard("Forest");
+ private static final FilterLandCard filter = new FilterLandCard("Forest cards");
static {
filter.add(SubType.FOREST.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/g/GaeasTouch.java b/Mage.Sets/src/mage/cards/g/GaeasTouch.java
index 2718503693..c39ad5d322 100644
--- a/Mage.Sets/src/mage/cards/g/GaeasTouch.java
+++ b/Mage.Sets/src/mage/cards/g/GaeasTouch.java
@@ -1,7 +1,6 @@
package mage.cards.g;
-import java.util.UUID;
import mage.Mana;
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
@@ -13,21 +12,28 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.FilterCard;
+import java.util.UUID;
+
/**
- *
* @author spjspj
*/
public final class GaeasTouch extends CardImpl {
+ private static final FilterCard filter = new FilterCard("a basic Forest card");
+
+ static {
+ filter.add(SuperType.BASIC.getPredicate());
+ filter.add(SubType.FOREST.getPredicate());
+ }
+
public GaeasTouch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}{G}");
// You may put a basic Forest card from your hand onto the battlefield. Activate this ability only any time you could cast a sorcery and only once each turn.
- FilterCard filter = new FilterCard("basic Forest card");
- filter.add(SuperType.BASIC.getPredicate());
- filter.add(SubType.FOREST.getPredicate());
- LimitedTimesPerTurnActivatedAbility ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD,
- new PutCardFromHandOntoBattlefieldEffect(filter), new GenericManaCost(0), 1);
+ LimitedTimesPerTurnActivatedAbility ability = new LimitedTimesPerTurnActivatedAbility(
+ Zone.BATTLEFIELD, new PutCardFromHandOntoBattlefieldEffect(filter),
+ new GenericManaCost(0), 1
+ );
ability.setTiming(TimingRule.SORCERY);
addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java b/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java
index 0a0bd474bb..336f6185f0 100644
--- a/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java
+++ b/Mage.Sets/src/mage/cards/g/GateToTheAfterlife.java
@@ -56,7 +56,7 @@ public final class GateToTheAfterlife extends CardImpl {
// {2}, {T}, Sacrifice Gate to the Afterlife: Search your graveyard, hand, and/or library for a card named God-Pharaoh's Gift and put it onto the battlefield. If you seearch your library this way, shuffle it. Activate this ability only if there are six or more creature cards in your graveyard.
ability = new ConditionalActivatedAbility(
Zone.BATTLEFIELD, new GateToTheAfterlifeEffect(), new GenericManaCost(2),
- new CardsInControllerGraveyardCondition(6, StaticFilters.FILTER_CARD_CREATURE)
+ new CardsInControllerGraveyardCondition(6, StaticFilters.FILTER_CARD_CREATURES)
);
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/g/GrandMoffTarkin.java b/Mage.Sets/src/mage/cards/g/GrandMoffTarkin.java
index d21f3e43af..6f904ab2d2 100644
--- a/Mage.Sets/src/mage/cards/g/GrandMoffTarkin.java
+++ b/Mage.Sets/src/mage/cards/g/GrandMoffTarkin.java
@@ -108,7 +108,7 @@ class GrandMoffTarkinEffect extends OneShotEffect {
public GrandMoffTarkinEffect() {
super(Outcome.ReturnToHand);
- this.staticText = "destroy target creature that that player controls unless that player pays 2 life. If a player pays life this way, draw a card";
+ this.staticText = "destroy target creature that that player controls unless that player pays 2 life. If a player pays life this way, draw a card";
}
public GrandMoffTarkinEffect(final GrandMoffTarkinEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/g/GryffsBoon.java b/Mage.Sets/src/mage/cards/g/GryffsBoon.java
index a98d486874..ed5703a9d4 100644
--- a/Mage.Sets/src/mage/cards/g/GryffsBoon.java
+++ b/Mage.Sets/src/mage/cards/g/GryffsBoon.java
@@ -66,7 +66,7 @@ class GryffsBoonEffect extends OneShotEffect {
public GryffsBoonEffect() {
super(Outcome.PutCardInPlay);
- staticText = "Return {this} from your graveyard to the battlefield attached to target creatur";
+ staticText = "Return {this} from your graveyard to the battlefield attached to target creature";
}
public GryffsBoonEffect(final GryffsBoonEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/h/HarvestSeason.java b/Mage.Sets/src/mage/cards/h/HarvestSeason.java
index 4e189e3ab3..1c56015d4b 100644
--- a/Mage.Sets/src/mage/cards/h/HarvestSeason.java
+++ b/Mage.Sets/src/mage/cards/h/HarvestSeason.java
@@ -55,7 +55,7 @@ class HarvestSeasonEffect extends OneShotEffect {
HarvestSeasonEffect() {
super(Outcome.Benefit);
this.staticText = "Search your library for up to X basic land cards, where X is the number of tapped creatures you control,"
- + " and put those cards onto the battlefield tapped, then shuffle.";
+ + " put those cards onto the battlefield tapped, then shuffle.";
}
HarvestSeasonEffect(final HarvestSeasonEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/j/JacesDefeat.java b/Mage.Sets/src/mage/cards/j/JacesDefeat.java
index 0d0953bbf7..007bdbb1f0 100644
--- a/Mage.Sets/src/mage/cards/j/JacesDefeat.java
+++ b/Mage.Sets/src/mage/cards/j/JacesDefeat.java
@@ -59,7 +59,7 @@ class JacesDefeatEffect extends OneShotEffect {
public JacesDefeatEffect() {
super(Outcome.Damage);
- this.staticText = "Counter target blue spell. If it was a Jace planeswalker spell, scry 2.";
+ this.staticText = "Counter target blue spell. If it was a Jace planeswalker spell, scry 2.";
}
public JacesDefeatEffect(final JacesDefeatEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java b/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java
index 5af016e5b8..2f2b75f23d 100644
--- a/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java
+++ b/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java
@@ -39,7 +39,7 @@ public final class KariZevsExpertise extends CardImpl {
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn).setText("It gains haste until end of turn"));
// You may cast a card with converted mana cost 2 or less from your hand without paying its mana cost.
- this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(2));
+ this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(2).concatBy("
"));
}
private KariZevsExpertise(final KariZevsExpertise card) {
diff --git a/Mage.Sets/src/mage/cards/k/KhalniHeartExpedition.java b/Mage.Sets/src/mage/cards/k/KhalniHeartExpedition.java
index d730ec5f0e..49e59e7660 100644
--- a/Mage.Sets/src/mage/cards/k/KhalniHeartExpedition.java
+++ b/Mage.Sets/src/mage/cards/k/KhalniHeartExpedition.java
@@ -29,7 +29,7 @@ public final class KhalniHeartExpedition extends CardImpl {
this.addAbility(new SimpleActivatedAbility(
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(
- 0, 2, StaticFilters.FILTER_CARD_BASIC_LAND
+ 0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS
), true, Outcome.PutLandInPlay),
new CompositeCost(
new RemoveCountersSourceCost(CounterType.QUEST.createInstance(3)),
diff --git a/Mage.Sets/src/mage/cards/k/KindlyStranger.java b/Mage.Sets/src/mage/cards/k/KindlyStranger.java
index 0b33ba3ea8..cffa5a75ad 100644
--- a/Mage.Sets/src/mage/cards/k/KindlyStranger.java
+++ b/Mage.Sets/src/mage/cards/k/KindlyStranger.java
@@ -34,7 +34,7 @@ public final class KindlyStranger extends CardImpl {
this.addAbility(new ConditionalActivatedAbility(
Zone.BATTLEFIELD, new TransformSourceEffect(true), new ManaCostsImpl<>("{2}{B}"),
DeliriumCondition.instance, "Delirium — {2}{B}: Transform {this}. " +
- "Activate this ability only if there are four or more card types among cards in your graveyard."
+ "Activate only if there are four or more card types among cards in your graveyard."
).addHint(DeliriumHint.instance));
}
diff --git a/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java b/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java
index 64f5f39a0c..74c783c0e4 100644
--- a/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java
+++ b/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java
@@ -36,7 +36,7 @@ public final class KuldothaPhoenix extends CardImpl {
// Metalcraft — {4}: Return Kuldotha Phoenix from your graveyard to the battlefield.
// Activate this ability only during your upkeep and only if you control three or more artifacts.
Ability ability = new ConditionalActivatedAbility(Zone.GRAVEYARD,
- new ReturnSourceFromGraveyardToBattlefieldEffect(false, true),
+ new ReturnSourceFromGraveyardToBattlefieldEffect(false, false),
new ManaCostsImpl("{4}"),
new CompoundCondition("during your upkeep and only if you control three or more artifacts",
new IsStepCondition(PhaseStep.UPKEEP), MetalcraftCondition.instance)
diff --git a/Mage.Sets/src/mage/cards/l/LlanowarSentinel.java b/Mage.Sets/src/mage/cards/l/LlanowarSentinel.java
index 4393c77dd1..a815e1114e 100644
--- a/Mage.Sets/src/mage/cards/l/LlanowarSentinel.java
+++ b/Mage.Sets/src/mage/cards/l/LlanowarSentinel.java
@@ -1,40 +1,41 @@
-
package mage.cards.l;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.costs.Cost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Outcome;
import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.NamePredicate;
-import mage.game.Game;
-import mage.players.Player;
import mage.target.common.TargetCardInLibrary;
-/**
- *
- * @author LoneFox
+import java.util.UUID;
+/**
+ * @author LoneFox
*/
public final class LlanowarSentinel extends CardImpl {
+ private static final FilterCard filter = new FilterCard("a card named Llanowar Sentinel");
+
+ static {
+ filter.add(new NamePredicate("Llanowar Sentinel"));
+ }
+
public LlanowarSentinel(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
+ super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
this.subtype.add(SubType.ELF);
this.power = new MageInt(2);
this.toughness = new MageInt(3);
// When Llanowar Sentinel enters the battlefield, you may pay {1}{G}. If you do, search your library for a card named Llanowar Sentinel and put that card onto the battlefield. Then shuffle your library.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new LlanowarSentinelEffect()));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new DoIfCostPaid(
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new ManaCostsImpl<>("{1}{G}")
+ )));
}
private LlanowarSentinel(final LlanowarSentinel card) {
@@ -46,36 +47,3 @@ public final class LlanowarSentinel extends CardImpl {
return new LlanowarSentinel(this);
}
}
-
-class LlanowarSentinelEffect extends OneShotEffect {
-
- LlanowarSentinelEffect() {
- super(Outcome.Benefit);
- this.staticText = "you may pay {1}{G}. If you do, search your library for a card named Llanowar Sentinel and put that card onto the battlefield. Then shuffle"; }
-
- LlanowarSentinelEffect(final LlanowarSentinelEffect effect) {
- super(effect);
- }
-
- @Override
- public LlanowarSentinelEffect copy() {
- return new LlanowarSentinelEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if(player != null) {
- if(player.chooseUse(Outcome.BoostCreature, "Do you want to to pay {1}{G}?", source, game)) {
- Cost cost = new ManaCostsImpl("{1}{G}");
- if(cost.pay(source, game, source, source.getControllerId(), false, null)) {
- FilterCard filter = new FilterCard("card named Llanowar Sentinel");
- filter.add(new NamePredicate("Llanowar Sentinel"));
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, filter), false, true).apply(game, source);
- }
- return true;
- }
- }
- return false;
- }
-}
diff --git a/Mage.Sets/src/mage/cards/m/ManaSeverance.java b/Mage.Sets/src/mage/cards/m/ManaSeverance.java
index 86ae4527ef..5220003094 100644
--- a/Mage.Sets/src/mage/cards/m/ManaSeverance.java
+++ b/Mage.Sets/src/mage/cards/m/ManaSeverance.java
@@ -43,7 +43,7 @@ class ManaSeveranceEffect extends SearchEffect {
public ManaSeveranceEffect() {
super(new TargetCardInLibrary(0, Integer.MAX_VALUE, new FilterLandCard()), Outcome.Exile);
- this.staticText = "Search your library for any number of land cards and remove them from the game. Shuffle your library afterwards.";
+ this.staticText = "search your library for any number of land cards, exile them, then shuffle";
}
public ManaSeveranceEffect(final ManaSeveranceEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/m/Misfortune.java b/Mage.Sets/src/mage/cards/m/Misfortune.java
index 4823ac906e..6c94dcddd0 100644
--- a/Mage.Sets/src/mage/cards/m/Misfortune.java
+++ b/Mage.Sets/src/mage/cards/m/Misfortune.java
@@ -67,7 +67,7 @@ class MisfortuneEffect extends OneShotEffect {
if (controller != null
&& chosenOpponent != null) {
if (chosenOpponent.chooseUse(Outcome.Neutral, "If you choose Yes, the controller puts a +1/+1 counter"
- + "on each creature they control and they gain 4 life. If no, the controller puts a -1/-1 counter"
+ + "on each creature they control and they gain 4 life. If no, the controller puts a -1/-1 counter"
+ "on each creature you control and {this} deals 4 damage to you.", source, game)) {
Effect putP1P1CounterOnEachControlledCreature = new AddCountersAllEffect(
CounterType.P1P1.createInstance(), new FilterControlledCreaturePermanent());
diff --git a/Mage.Sets/src/mage/cards/n/NemesisOfMortals.java b/Mage.Sets/src/mage/cards/n/NemesisOfMortals.java
index 9ae86b05a6..8e761f5ebb 100644
--- a/Mage.Sets/src/mage/cards/n/NemesisOfMortals.java
+++ b/Mage.Sets/src/mage/cards/n/NemesisOfMortals.java
@@ -47,7 +47,7 @@ public final class NemesisOfMortals extends CardImpl {
// {7}{G}{G}: Monstrosity 5. This ability costs {1} less to activate for each creature card in your graveyard.
ability = new MonstrosityAbility("{7}{G}{G}", 5);
for (Effect effect : ability.getEffects()) {
- effect.setText("Monstrosity 5. This ability costs {1} less to activate for each creature card in your graveyard");
+ effect.setText("Monstrosity 5. This ability costs {1} less to activate for each creature card in your graveyard");
}
ability.setCostAdjuster(NemesisOfMortalsAdjuster.instance);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java
index 07bd0b2c8b..9eab0f0dfd 100644
--- a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java
+++ b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java
@@ -70,7 +70,7 @@ class NissaWorldwakerSearchEffect extends OneShotEffect {
public NissaWorldwakerSearchEffect() {
super(Outcome.PutCreatureInPlay);
- this.staticText = "Search your library for any number of basic land cards, put them onto the battlefield, then shuffle. Those lands become 4/4 Elemental creatures with trample. They're still lands";
+ this.staticText = "Search your library for any number of basic land cards, put them onto the battlefield, then shuffle. Those lands become 4/4 Elemental creatures with trample. They're still lands";
}
public NissaWorldwakerSearchEffect(final NissaWorldwakerSearchEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java
index f56b14ebdd..dd062015bd 100644
--- a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java
+++ b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java
@@ -56,7 +56,7 @@ class NissasPilgrimageEffect extends OneShotEffect {
public NissasPilgrimageEffect() {
super(Outcome.Benefit);
- this.staticText = "Search your library for up to two basic Forest cards, reveal those cards, and put one onto the battlefield tapped and the rest into your hand. Then shuffle."
+ this.staticText = "Search your library for up to two basic Forest cards, reveal those cards, and put one onto the battlefield tapped and the rest into your hand. Then shuffle."
+ "
Spell Mastery — If there are two or more instant and/or sorcery cards in your graveyard, search your library for up to three basic Forest cards instead of two.";
}
diff --git a/Mage.Sets/src/mage/cards/o/OpenTheGates.java b/Mage.Sets/src/mage/cards/o/OpenTheGates.java
index 5ee1edd55e..a30e7575ad 100644
--- a/Mage.Sets/src/mage/cards/o/OpenTheGates.java
+++ b/Mage.Sets/src/mage/cards/o/OpenTheGates.java
@@ -17,7 +17,7 @@ import java.util.UUID;
*/
public final class OpenTheGates extends CardImpl {
- private static final FilterCard filter = new FilterCard("basic land card or a Gate card");
+ private static final FilterCard filter = new FilterCard("a basic land card or a Gate card");
static {
filter.add(Predicates.or(
diff --git a/Mage.Sets/src/mage/cards/o/OracleEnVec.java b/Mage.Sets/src/mage/cards/o/OracleEnVec.java
index bac9e50667..fed320eeed 100644
--- a/Mage.Sets/src/mage/cards/o/OracleEnVec.java
+++ b/Mage.Sets/src/mage/cards/o/OracleEnVec.java
@@ -68,7 +68,7 @@ class OracleEnVecEffect extends OneShotEffect {
super(Outcome.Benefit);
this.staticText = "Target opponent chooses any number of creatures they control. During that player's next turn, " +
"the chosen creatures attack if able, and other creatures can't attack. At the beginning of that turn's end step, " +
- "destroy each of the chosen creatures that didn't attack";
+ "destroy each of the chosen creatures that didn't attack this turn";
}
OracleEnVecEffect(final OracleEnVecEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/o/OraclesVault.java b/Mage.Sets/src/mage/cards/o/OraclesVault.java
index 5802c4b584..4342bf440b 100644
--- a/Mage.Sets/src/mage/cards/o/OraclesVault.java
+++ b/Mage.Sets/src/mage/cards/o/OraclesVault.java
@@ -42,7 +42,7 @@ public final class OraclesVault extends CardImpl {
this.addAbility(new ConditionalActivatedAbility(Zone.BATTLEFIELD,
new OraclesVaultFreeEffect(), new TapSourceCost(), new SourceHasCounterCondition(CounterType.BRICK, 3, Integer.MAX_VALUE),
"{T}: Exile the top card of your library. Until end of turn, you may play that card without paying its mana cost. "
- + "Activate only if there are three or more brick counters on {this}"));
+ + "Activate only if there are three or more brick counters on {this}."));
}
private OraclesVault(final OraclesVault card) {
diff --git a/Mage.Sets/src/mage/cards/p/ParallaxNexus.java b/Mage.Sets/src/mage/cards/p/ParallaxNexus.java
index 8140564837..3f1163d779 100644
--- a/Mage.Sets/src/mage/cards/p/ParallaxNexus.java
+++ b/Mage.Sets/src/mage/cards/p/ParallaxNexus.java
@@ -37,7 +37,7 @@ public final class ParallaxNexus extends CardImpl {
this.addAbility(ability);
// When Parallax Nexus leaves the battlefield, each player returns to their hand all cards they own exiled with Parallax Nexus.
- this.addAbility(new LeavesBattlefieldTriggeredAbility(new ReturnFromExileEffect(Zone.HAND), false));
+ this.addAbility(new LeavesBattlefieldTriggeredAbility(new ReturnFromExileEffect(Zone.HAND).setText("each player returns to their hand all cards they own exiled with {this}"), false));
}
private ParallaxNexus(final ParallaxNexus card) {
diff --git a/Mage.Sets/src/mage/cards/p/PutridCyclops.java b/Mage.Sets/src/mage/cards/p/PutridCyclops.java
index 6d0f8254d9..8ca48fa147 100644
--- a/Mage.Sets/src/mage/cards/p/PutridCyclops.java
+++ b/Mage.Sets/src/mage/cards/p/PutridCyclops.java
@@ -53,7 +53,7 @@ class PutridCyclopEffect extends OneShotEffect {
public PutridCyclopEffect() {
super(Outcome.Detriment);
- this.staticText = "scry 1, then reveal the top card of your library. {this} gets -X/-X until end of turn, where X is that card's mana value"
+ this.staticText = "scry 1, then reveal the top card of your library. {this} gets -X/-X until end of turn, where X is that card's mana value."
+ " (To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.)";
}
diff --git a/Mage.Sets/src/mage/cards/r/RaidersSpoils.java b/Mage.Sets/src/mage/cards/r/RaidersSpoils.java
index a2114b3862..6e1aee5214 100644
--- a/Mage.Sets/src/mage/cards/r/RaidersSpoils.java
+++ b/Mage.Sets/src/mage/cards/r/RaidersSpoils.java
@@ -78,6 +78,6 @@ class RaidersSpoilsTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever a Warrior you control deals combat damage to a player, you may pay 1 life. If you do, draw a card";
+ return "Whenever a Warrior you control deals combat damage to a player, you may pay 1 life. If you do, draw a card";
}
}
diff --git a/Mage.Sets/src/mage/cards/r/RishkarsExpertise.java b/Mage.Sets/src/mage/cards/r/RishkarsExpertise.java
index a7bb010470..1db510524f 100644
--- a/Mage.Sets/src/mage/cards/r/RishkarsExpertise.java
+++ b/Mage.Sets/src/mage/cards/r/RishkarsExpertise.java
@@ -24,7 +24,7 @@ public final class RishkarsExpertise extends CardImpl {
this.getSpellAbility().addEffect(effect);
// You may cast a card with converted mana cost 5 or less from your hand without paying its mana cost.
- this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(5));
+ this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(5).concatBy("
"));
}
private RishkarsExpertise(final RishkarsExpertise card) {
diff --git a/Mage.Sets/src/mage/cards/r/RitesOfSpring.java b/Mage.Sets/src/mage/cards/r/RitesOfSpring.java
index b8c67042d4..9136f5d424 100644
--- a/Mage.Sets/src/mage/cards/r/RitesOfSpring.java
+++ b/Mage.Sets/src/mage/cards/r/RitesOfSpring.java
@@ -44,8 +44,8 @@ class RitesOfSpringEffect extends OneShotEffect {
RitesOfSpringEffect() {
super(Outcome.DrawCard);
- this.staticText = "Discard any number of cards. Search your library for up to that many basic land cards, " +
- "reveal those cards, and put them into your hand. Then shuffle.";
+ this.staticText = "discard any number of cards. Search your library for up to that many basic land cards, " +
+ "reveal them, put them into your hand, then shuffle";
}
private RitesOfSpringEffect(final RitesOfSpringEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/SanctumPrelate.java b/Mage.Sets/src/mage/cards/s/SanctumPrelate.java
index a4fb509320..250130906a 100644
--- a/Mage.Sets/src/mage/cards/s/SanctumPrelate.java
+++ b/Mage.Sets/src/mage/cards/s/SanctumPrelate.java
@@ -63,7 +63,7 @@ class ChooseNumberEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
- int numberChoice = controller.announceXMana(0, Integer.MAX_VALUE, "Choose a number. Noncreature spells with the chosen mana value can't be cast", game, source);
+ int numberChoice = controller.announceXMana(0, Integer.MAX_VALUE, "Choose a number.", game, source);
game.getState().setValue(source.getSourceId().toString(), numberChoice);
Permanent permanent = game.getPermanentEntering(source.getSourceId());
@@ -82,7 +82,7 @@ class ChooseNumberEffect extends OneShotEffect {
}
private String setText() {
- return "Choose a number. Noncreature spells with the chosen mana value can't be cast";
+ return "Choose a number. Noncreature spells with mana value equal to the chosen number can't be cast";
}
}
@@ -92,7 +92,7 @@ class SanctumPrelateReplacementEffect extends ContinuousRuleModifyingEffectImpl
public SanctumPrelateReplacementEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment);
- staticText = "Noncreature spells with the chosen mana value can't be cast";
+ staticText = "Noncreature spells with mana value equal to the chosen number can't be cast";
}
public SanctumPrelateReplacementEffect(final SanctumPrelateReplacementEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java b/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java
index 7b9def742d..7d51f4caf2 100644
--- a/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java
+++ b/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java
@@ -63,7 +63,7 @@ public final class SarkhanTheMad extends CardImpl {
class SarkhanTheMadRevealAndDrawEffect extends OneShotEffect {
- private static final String effectText = "Reveal the top card of your library and put it into your hand. {this} deals damage to himself equal to that card's mana value";
+ private static final String effectText = "Reveal the top card of your library and put it into your hand. {this} deals damage to himself equal to that card's mana value";
SarkhanTheMadRevealAndDrawEffect() {
super(Outcome.DrawCard);
diff --git a/Mage.Sets/src/mage/cards/s/ScatteringStroke.java b/Mage.Sets/src/mage/cards/s/ScatteringStroke.java
index e95e297b5a..2c3bb9f6eb 100644
--- a/Mage.Sets/src/mage/cards/s/ScatteringStroke.java
+++ b/Mage.Sets/src/mage/cards/s/ScatteringStroke.java
@@ -47,7 +47,7 @@ class ScatteringStrokeEffect extends OneShotEffect {
public ScatteringStrokeEffect() {
super(Outcome.Benefit);
- this.staticText = "Counter target spell. Clash with an opponent. If you win, at the beginning of your next main phase, you may add {X}, where X is that spell's mana value";
+ this.staticText = "Counter target spell. Clash with an opponent. If you win, at the beginning of your next main phase, you may add an amount of {C} equal to that spell's mana value";
}
public ScatteringStrokeEffect(final ScatteringStrokeEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/SchemingSymmetry.java b/Mage.Sets/src/mage/cards/s/SchemingSymmetry.java
index 0518bc1272..b8a244d827 100644
--- a/Mage.Sets/src/mage/cards/s/SchemingSymmetry.java
+++ b/Mage.Sets/src/mage/cards/s/SchemingSymmetry.java
@@ -42,7 +42,7 @@ class SchemingSymmetryEffect extends OneShotEffect {
SchemingSymmetryEffect() {
super(Outcome.Benefit);
staticText = "Choose two target players. Each of them searches their library for a card, " +
- "then shuffles and puts that card on top of it.";
+ "then shuffles and puts that card on top";
}
private SchemingSymmetryEffect(final SchemingSymmetryEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/ScryingGlass.java b/Mage.Sets/src/mage/cards/s/ScryingGlass.java
index 96e407fc89..5de031332d 100644
--- a/Mage.Sets/src/mage/cards/s/ScryingGlass.java
+++ b/Mage.Sets/src/mage/cards/s/ScryingGlass.java
@@ -70,7 +70,7 @@ class ScryingGlassEffect extends OneShotEffect {
filter.add(new ColorPredicate(color.getColor()));
targetOpponent.revealCards(source, targetOpponent.getHand(), game);
if (targetOpponent.getHand().count(filter, game) == amount) {
- game.informPlayers(controller.getLogName() + " has chosen the exact number and color of the revealed cards from " + targetOpponent.getName() + "'s hand. They draw a card.");
+ game.informPlayers(controller.getLogName() + " has chosen the exact number and color of the revealed cards from " + targetOpponent.getName() + "'s hand. They draw a card.");
controller.drawCards(1, source, game);
return true;
} else {
diff --git a/Mage.Sets/src/mage/cards/s/SearchForSurvivors.java b/Mage.Sets/src/mage/cards/s/SearchForSurvivors.java
index a1d84138c9..b539cc8a93 100644
--- a/Mage.Sets/src/mage/cards/s/SearchForSurvivors.java
+++ b/Mage.Sets/src/mage/cards/s/SearchForSurvivors.java
@@ -68,7 +68,7 @@ class SearchForSurvivorsEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
- game.informPlayers("The controller of Search for Survivors will have their graveyard randomized. "
+ game.informPlayers("The controller of Search for Survivors will have their graveyard randomized. "
+ " A card will be chosen at random from the controller's graveyard. "
+ " The result is essentially the same as the card rule");
// randomly arrange the graveyard
diff --git a/Mage.Sets/src/mage/cards/s/SearingBlaze.java b/Mage.Sets/src/mage/cards/s/SearingBlaze.java
index 78932b62ff..b6aa4a0a7f 100644
--- a/Mage.Sets/src/mage/cards/s/SearingBlaze.java
+++ b/Mage.Sets/src/mage/cards/s/SearingBlaze.java
@@ -53,7 +53,7 @@ class SearingBlazeEffect extends OneShotEffect {
public SearingBlazeEffect() {
super(Outcome.Damage);
- staticText = "{this} deals 1 damage to target player or planeswalker and 1 damage to target creature that player or that planeswalker's controller controls. \nLandfall - If you had a land enter the battlefield under your control this turn, {this} deals 3 damage to that player or planeswalker and 3 damage to that creature instead.";
+ staticText = "{this} deals 1 damage to target player or planeswalker and 1 damage to target creature that player or that planeswalker's controller controls. \nLandfall - If you had a land enter the battlefield under your control this turn, {this} deals 3 damage to that player or planeswalker and 3 damage to that creature instead.";
}
public SearingBlazeEffect(final SearingBlazeEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java b/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java
index f31070c802..b5d84e34d9 100644
--- a/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java
+++ b/Mage.Sets/src/mage/cards/s/SentinelOfThePearlTrident.java
@@ -66,7 +66,7 @@ class SentinelOfThePearlTridentEffect extends OneShotEffect {
private static final String effectText = "exile target historic permanent you control. "
+ "If you do, return that card to the battlefield under its owner's control"
- + " at the beginning of the next end step. (Artifacts, legendaries, and Sagas are historic.)";
+ + " at the beginning of the next end step. (Artifacts, legendaries, and Sagas are historic.)";
SentinelOfThePearlTridentEffect() {
super(Outcome.Detriment);
diff --git a/Mage.Sets/src/mage/cards/s/ShardConvergence.java b/Mage.Sets/src/mage/cards/s/ShardConvergence.java
index 96143d5646..02af1d610c 100644
--- a/Mage.Sets/src/mage/cards/s/ShardConvergence.java
+++ b/Mage.Sets/src/mage/cards/s/ShardConvergence.java
@@ -25,7 +25,8 @@ public final class ShardConvergence extends CardImpl {
// Search your library for a Plains card, an Island card, a Swamp card, and a Mountain card. Reveal those cards and put them into your hand. Then shuffle your library.
this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(
new ShardConvergenceTarget(), true
- ));
+ ).setText("search your library for a Plains card, an Island card, a Swamp card, and a Mountain card. " +
+ "Reveal those cards, put them into your hand, then shuffle"));
}
private ShardConvergence(final ShardConvergence card) {
diff --git a/Mage.Sets/src/mage/cards/s/SramsExpertise.java b/Mage.Sets/src/mage/cards/s/SramsExpertise.java
index 6a6fbe2148..6334c3bf86 100644
--- a/Mage.Sets/src/mage/cards/s/SramsExpertise.java
+++ b/Mage.Sets/src/mage/cards/s/SramsExpertise.java
@@ -23,7 +23,7 @@ public final class SramsExpertise extends CardImpl {
this.getSpellAbility().addEffect(new CreateTokenEffect(new ServoToken(), 3));
// You may cast a card with converted mana cost 3 or less from your hand without paying its mana cost.
- this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(3));
+ this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(3).concatBy("
"));
}
private SramsExpertise(final SramsExpertise card) {
diff --git a/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java b/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java
index 7affcc074a..5ee04a8b99 100644
--- a/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java
+++ b/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java
@@ -1,7 +1,5 @@
package mage.cards.s;
-import java.util.UUID;
-
import mage.MageInt;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
@@ -10,10 +8,9 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.DeliriumHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.SubType;
-import mage.constants.Duration;
-import mage.constants.Zone;
+import mage.constants.*;
+
+import java.util.UUID;
/**
* @author fireshoes
@@ -32,9 +29,8 @@ public final class StallionOfAshmouth extends CardImpl {
this.addAbility(new ConditionalActivatedAbility(
Zone.BATTLEFIELD,
new BoostSourceEffect(1, 1, Duration.EndOfTurn),
- new ManaCostsImpl("{1}{B}"),
- DeliriumCondition.instance)
- .addHint(DeliriumHint.instance));
+ new ManaCostsImpl<>("{1}{B}"), DeliriumCondition.instance
+ ).setAbilityWord(AbilityWord.DELIRIUM).addHint(DeliriumHint.instance));
}
private StallionOfAshmouth(final StallionOfAshmouth card) {
diff --git a/Mage.Sets/src/mage/cards/t/Tariff.java b/Mage.Sets/src/mage/cards/t/Tariff.java
index 1eb0f27951..205dab61c6 100644
--- a/Mage.Sets/src/mage/cards/t/Tariff.java
+++ b/Mage.Sets/src/mage/cards/t/Tariff.java
@@ -51,7 +51,7 @@ class TariffEffect extends OneShotEffect {
public TariffEffect() {
super(Outcome.DestroyPermanent);
- this.staticText = "Each player sacrifices the creature they control with the highest mana value unless they pay that creature's mana cost. If two or more creatures a player controls are tied for highest cost, that player chooses one.";
+ this.staticText = "Each player sacrifices the creature they control with the highest mana value unless they pay that creature's mana cost. If two or more creatures a player controls are tied for highest, that player chooses one.";
}
public TariffEffect(final TariffEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java b/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java
index 3778aefb11..4713f68764 100644
--- a/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java
+++ b/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java
@@ -34,7 +34,7 @@ public final class ThrabenFoulbloods extends CardImpl {
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), DeliriumCondition.instance, "Delirium — {this} gets +1/+1");
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility()), DeliriumCondition.instance,
- "and has menace as long as there are four or more card types among cards in your graveyard. (A creature with menace can't be blocked except by two or more creatures.)"));
+ "and has menace as long as there are four or more card types among cards in your graveyard. (A creature with menace can't be blocked except by two or more creatures.)"));
ability.addHint(DeliriumHint.instance);
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/t/TrenchGorger.java b/Mage.Sets/src/mage/cards/t/TrenchGorger.java
index 31c5cb1c50..b7f3772777 100644
--- a/Mage.Sets/src/mage/cards/t/TrenchGorger.java
+++ b/Mage.Sets/src/mage/cards/t/TrenchGorger.java
@@ -50,7 +50,8 @@ class TrenchGorgerEffect extends OneShotEffect {
public TrenchGorgerEffect() {
super(Outcome.BoostCreature);
- this.staticText = "you may search your library for any number of land cards, exile them, then shuffle. If you do, {this}'s power and toughness each become equal to the number of cards exiled this way";
+ this.staticText = "search your library for any number of land cards, exile them, then shuffle. " +
+ "If you do, {this} has base power and base toughness each equal to the number of cards exiled this way";
}
public TrenchGorgerEffect(final TrenchGorgerEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/t/TwoHeadedGiant.java b/Mage.Sets/src/mage/cards/t/TwoHeadedGiant.java
index 9161d98cee..fce10ac9a4 100644
--- a/Mage.Sets/src/mage/cards/t/TwoHeadedGiant.java
+++ b/Mage.Sets/src/mage/cards/t/TwoHeadedGiant.java
@@ -50,7 +50,7 @@ class TwoHeadedGiantEffect extends OneShotEffect {
public TwoHeadedGiantEffect() {
super(Outcome.Benefit);
- this.staticText = "flip two coins. If both coins come up heads, {this} gains double strike until end of turn."
+ this.staticText = "flip two coins. If both coins come up heads, {this} gains double strike until end of turn."
+ " If both coins come up tails, {this} gains menace until end of turn";
}
diff --git a/Mage.Sets/src/mage/cards/v/VancesBlastingCannons.java b/Mage.Sets/src/mage/cards/v/VancesBlastingCannons.java
index 678577b954..c7b94a362c 100644
--- a/Mage.Sets/src/mage/cards/v/VancesBlastingCannons.java
+++ b/Mage.Sets/src/mage/cards/v/VancesBlastingCannons.java
@@ -62,7 +62,7 @@ class VancesBlastingCannonsExileEffect extends OneShotEffect {
public VancesBlastingCannonsExileEffect() {
super(Outcome.Benefit);
- this.staticText = "exile the top card of your library. If it's a nonland card, you may cast that card this turn";
+ this.staticText = "exile the top card of your library. If it's a nonland card, you may cast that card this turn";
}
public VancesBlastingCannonsExileEffect(final VancesBlastingCannonsExileEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/v/VerdantSuccession.java b/Mage.Sets/src/mage/cards/v/VerdantSuccession.java
index a5094c23c0..6b60d0f286 100644
--- a/Mage.Sets/src/mage/cards/v/VerdantSuccession.java
+++ b/Mage.Sets/src/mage/cards/v/VerdantSuccession.java
@@ -95,7 +95,7 @@ class VerdantSuccessionTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever a green nontoken creature dies, that creature's controller may search their library for a card with the same name as that creature and put it onto the battlefield. If that player does, they shuffle.";
+ return "Whenever a green nontoken creature dies, that creature's controller may search their library for a card with the same name as that creature, put it onto the battlefield, then shuffle.";
}
}
diff --git a/Mage.Sets/src/mage/cards/w/WallOfStolenIdentity.java b/Mage.Sets/src/mage/cards/w/WallOfStolenIdentity.java
index ececc544a8..9e8ebf2890 100644
--- a/Mage.Sets/src/mage/cards/w/WallOfStolenIdentity.java
+++ b/Mage.Sets/src/mage/cards/w/WallOfStolenIdentity.java
@@ -36,7 +36,7 @@ import java.util.UUID;
public final class WallOfStolenIdentity extends CardImpl {
final static private String rule = "You may have Wall of Stolen Identity enter the battlefield as a copy of any "
- + "creature on the battlefield, except it's a wall in addition to its other types and it has defender. "
+ + "creature on the battlefield, except it's a wall in addition to its other types and it has defender. "
+ "When you do, tap the copied creature and it doesn't untap during its "
+ "controller's untap step for as long as you control {this}";
diff --git a/Mage.Sets/src/mage/cards/w/WarpedLandscape.java b/Mage.Sets/src/mage/cards/w/WarpedLandscape.java
index 294c84c3f3..806b22c726 100644
--- a/Mage.Sets/src/mage/cards/w/WarpedLandscape.java
+++ b/Mage.Sets/src/mage/cards/w/WarpedLandscape.java
@@ -31,7 +31,7 @@ public final class WarpedLandscape extends CardImpl {
// {2}, {T}, Sacrifice Warped Landscape: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
new GenericManaCost(2));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
diff --git a/Mage.Sets/src/mage/cards/w/WildFieldScarecrow.java b/Mage.Sets/src/mage/cards/w/WildFieldScarecrow.java
index e75d460ca5..f476e1e38d 100644
--- a/Mage.Sets/src/mage/cards/w/WildFieldScarecrow.java
+++ b/Mage.Sets/src/mage/cards/w/WildFieldScarecrow.java
@@ -34,7 +34,7 @@ public final class WildFieldScarecrow extends CardImpl {
// {2}, Sacrifice Wild-Field Scarecrow: Search your library for up to two basic land cards, reveal them, and put them into your hand. Then shuffle your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), true, true),
+ new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true, true),
new GenericManaCost(2));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/w/WindZendikon.java b/Mage.Sets/src/mage/cards/w/WindZendikon.java
index 826f44bba4..697cc9a7ec 100644
--- a/Mage.Sets/src/mage/cards/w/WindZendikon.java
+++ b/Mage.Sets/src/mage/cards/w/WindZendikon.java
@@ -40,7 +40,7 @@ public final class WindZendikon extends CardImpl {
this.addAbility(ability);
Ability ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAttachedEffect(
- new WindZendikonElementalToken(), "Enchanted land is a 2/2 blue Elemental creature with flying. It's still a land",
+ new WindZendikonElementalToken(), "Enchanted land is a 2/2 blue Elemental creature with flying. It's still a land",
Duration.WhileOnBattlefield, BecomesCreatureAttachedEffect.LoseType.COLOR));
this.addAbility(ability2);
diff --git a/Mage.Sets/src/mage/cards/w/WolfOfDevilsBreach.java b/Mage.Sets/src/mage/cards/w/WolfOfDevilsBreach.java
index f09250fcc5..8a7915319f 100644
--- a/Mage.Sets/src/mage/cards/w/WolfOfDevilsBreach.java
+++ b/Mage.Sets/src/mage/cards/w/WolfOfDevilsBreach.java
@@ -42,7 +42,7 @@ public final class WolfOfDevilsBreach extends CardImpl {
toPay.add(new DiscardCardCost());
Ability ability = new AttacksTriggeredAbility(new DoIfCostPaid(new DamageTargetEffect(new WolfOfDevilsBreachDiscardCostCardConvertedMana()), toPay,
"Pay {1}{R} and discard a card to let {this} do damage to target creature or planeswalker equal to the discarded card's mana value?", true), false,
- "Whenever {this} attacks you may pay {1}{R} and discard a card. If you do, {this} deals damage to target creature or planeswalker "
+ "Whenever {this} attacks, you may pay {1}{R} and discard a card. If you do, {this} deals damage to target creature or planeswalker "
+ "equal to the discarded card's mana value.");
ability.addTarget(new TargetCreatureOrPlaneswalker());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/y/YahennisExpertise.java b/Mage.Sets/src/mage/cards/y/YahennisExpertise.java
index effd7ee403..526e36f83d 100644
--- a/Mage.Sets/src/mage/cards/y/YahennisExpertise.java
+++ b/Mage.Sets/src/mage/cards/y/YahennisExpertise.java
@@ -23,7 +23,7 @@ public final class YahennisExpertise extends CardImpl {
this.getSpellAbility().addEffect(new BoostAllEffect(-3, -3, Duration.EndOfTurn));
// You may cast a card with converted mana cost 3 or less from your hand without paying its mana cost.
- this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(3));
+ this.getSpellAbility().addEffect(new CastWithoutPayingManaCostEffect(3).concatBy("
"));
}
private YahennisExpertise(final YahennisExpertise card) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/RollPlanarDieEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RollPlanarDieEffect.java
index 45a4d9df39..6385d094df 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/RollPlanarDieEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/RollPlanarDieEffect.java
@@ -158,7 +158,7 @@ public class RollPlanarDieEffect extends OneShotEffect {
}
}
}
- sb.append(". If you roll PW, planeswalk to a new plane");
+ sb.append(". If you roll PW, planeswalk to a new plane");
return sb.toString();
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java
index 462b2ae55e..3a786431d1 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/BecomesCreatureTargetEffect.java
@@ -188,7 +188,7 @@ public class BecomesCreatureTargetEffect extends ContinuousEffectImpl {
sb.append(". It's still a land");
}
}
- return sb.toString();
+ return sb.toString().replace(" .", ".");
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java b/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java
index 5556928314..81d42fd7c8 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/cost/CastWithoutPayingManaCostEffect.java
@@ -39,7 +39,7 @@ public class CastWithoutPayingManaCostEffect extends OneShotEffect {
public CastWithoutPayingManaCostEffect(DynamicValue maxCost) {
super(Outcome.PlayForFree);
this.manaCost = maxCost;
- this.staticText = "you may cast a card with mana value "
+ this.staticText = "you may cast a spell with mana value "
+ maxCost + " or less from your hand without paying its mana cost";
}
diff --git a/Mage/src/main/java/mage/abilities/keyword/GravestormAbility.java b/Mage/src/main/java/mage/abilities/keyword/GravestormAbility.java
index 20b06deb9e..f4f36701ff 100644
--- a/Mage/src/main/java/mage/abilities/keyword/GravestormAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/GravestormAbility.java
@@ -55,7 +55,7 @@ public class GravestormAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Gravestorm (When you cast this spell, copy it for each permanent put into a graveyard this turn. You may choose new targets for the copies.)";
+ return "Gravestorm (When you cast this spell, copy it for each permanent put into a graveyard this turn. You may choose new targets for the copies.)";
}
}
diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java
index 0a9a6ea933..c12d8fba34 100644
--- a/Mage/src/main/java/mage/game/GameImpl.java
+++ b/Mage/src/main/java/mage/game/GameImpl.java
@@ -1211,7 +1211,7 @@ public abstract class GameImpl implements Game, Serializable {
return player.getId();
}
}
- logger.debug("Game was not possible to pick a choosing player. GameId:" + getId());
+ logger.debug("Game was not possible to pick a choosing player. GameId:" + getId());
return null;
}
diff --git a/Mage/src/main/java/mage/game/permanent/token/BelzenlokDemonToken.java b/Mage/src/main/java/mage/game/permanent/token/BelzenlokDemonToken.java
index 7965e2b21b..795165bd02 100644
--- a/Mage/src/main/java/mage/game/permanent/token/BelzenlokDemonToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/BelzenlokDemonToken.java
@@ -34,7 +34,7 @@ public final class BelzenlokDemonToken extends TokenImpl {
public BelzenlokDemonToken() {
super("Demon", "6/6 black Demon creature token with flying, trample, and "
- + "\"At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you.\"");
+ + "\"At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you.\"");
availableImageSetCodes = tokenImageSets;
cardType.add(CardType.CREATURE);
color.setBlack(true);
@@ -75,7 +75,7 @@ class BelzenlokDemonTokenEffect extends OneShotEffect {
BelzenlokDemonTokenEffect() {
super(Outcome.Benefit);
- this.staticText = "sacrifice another creature. If you can't, this creature deals 6 damage to you.";
+ this.staticText = "sacrifice another creature. If you can't, this creature deals 6 damage to you.";
}
BelzenlokDemonTokenEffect(final BelzenlokDemonTokenEffect effect) {