diff --git a/Mage.Sets/src/mage/cards/b/BeholdTheBeyond.java b/Mage.Sets/src/mage/cards/b/BeholdTheBeyond.java
index 58f560c1e9..a0d235b692 100644
--- a/Mage.Sets/src/mage/cards/b/BeholdTheBeyond.java
+++ b/Mage.Sets/src/mage/cards/b/BeholdTheBeyond.java
@@ -24,7 +24,7 @@ public final class BeholdTheBeyond extends CardImpl {
this.getSpellAbility().addEffect(new DiscardHandControllerEffect());
TargetCardInLibrary target = new TargetCardInLibrary(0, 3, new FilterCard("cards"));
Effect effect = new SearchLibraryPutInHandEffect(target);
- effect.setText("Search your library for three cards and put those cards into your hand. Then shuffle");
+ effect.setText("Search your library for three cards, put those cards into your hand, then shuffle");
this.getSpellAbility().addEffect(effect);
}
diff --git a/Mage.Sets/src/mage/cards/b/BloodpyreElemental.java b/Mage.Sets/src/mage/cards/b/BloodpyreElemental.java
index b1eaad371e..bc61c9a52a 100644
--- a/Mage.Sets/src/mage/cards/b/BloodpyreElemental.java
+++ b/Mage.Sets/src/mage/cards/b/BloodpyreElemental.java
@@ -28,7 +28,7 @@ public final class BloodpyreElemental extends CardImpl {
this.toughness = new MageInt(1);
// Sacrifice Bloodpyre Elemental: Bloodpyre Elemental deals 4 damage to target creature. Activate this ability only any time you could cast a sorcery.
- Ability ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(4), new SacrificeSourceCost());
+ Ability ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(4, "it"), new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java b/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java
index 63f81ebe21..12ac972ffd 100644
--- a/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java
+++ b/Mage.Sets/src/mage/cards/b/BoundByMoonsilver.java
@@ -45,7 +45,7 @@ public final class BoundByMoonsilver extends CardImpl {
// Enchanted permanent can't attack, block, or transform.
Effect effect = new CantAttackBlockTransformAttachedEffect();
- effect.setText("Enchanted permanent can't attack, block, or transform.");
+ effect.setText("Enchanted creature can't attack, block, or transform.");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
// Sacrifice another permanent: Attach Bound by Moonsilver to target creature. Activate this ability only any time you could cast a sorcery and only once each turn.
diff --git a/Mage.Sets/src/mage/cards/c/CloudhoofKirin.java b/Mage.Sets/src/mage/cards/c/CloudhoofKirin.java
index 3c99bb0d51..b3fcff2f4e 100644
--- a/Mage.Sets/src/mage/cards/c/CloudhoofKirin.java
+++ b/Mage.Sets/src/mage/cards/c/CloudhoofKirin.java
@@ -54,7 +54,7 @@ class CloudhoofKirinEffect extends OneShotEffect {
CloudhoofKirinEffect() {
super(Outcome.Detriment);
- this.staticText = "have target player mill X cards, where X is that spell's mana value";
+ this.staticText = "target player mill X cards, where X is that spell's mana value";
}
private CloudhoofKirinEffect(final CloudhoofKirinEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/d/DefiantVanguard.java b/Mage.Sets/src/mage/cards/d/DefiantVanguard.java
index 480673d4d5..380b596fb2 100644
--- a/Mage.Sets/src/mage/cards/d/DefiantVanguard.java
+++ b/Mage.Sets/src/mage/cards/d/DefiantVanguard.java
@@ -110,7 +110,7 @@ class DefiantVanguardTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "When {this} blocks, at end of combat, destroy it and all creatures it blocked this turn";
+ return "When {this} blocks, at end of combat, destroy it and all creatures it blocked this turn.";
}
}
diff --git a/Mage.Sets/src/mage/cards/e/ElderPineOfJukai.java b/Mage.Sets/src/mage/cards/e/ElderPineOfJukai.java
index 85d33d865b..0363c022d5 100644
--- a/Mage.Sets/src/mage/cards/e/ElderPineOfJukai.java
+++ b/Mage.Sets/src/mage/cards/e/ElderPineOfJukai.java
@@ -28,7 +28,7 @@ public final class ElderPineOfJukai extends CardImpl {
this.toughness = new MageInt(1);
// Whenever you cast a Spirit or Arcane spell, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order.
- this.addAbility(new SpellCastControllerTriggeredAbility(new RevealLibraryPutIntoHandEffect(3, new FilterLandCard(), Zone.LIBRARY), StaticFilters.SPIRIT_OR_ARCANE_CARD, false));
+ this.addAbility(new SpellCastControllerTriggeredAbility(new RevealLibraryPutIntoHandEffect(3, StaticFilters.FILTER_CARD_LANDS, Zone.LIBRARY), StaticFilters.SPIRIT_OR_ARCANE_CARD, false));
// Soulshift 2
this.addAbility(new SoulshiftAbility(2));
diff --git a/Mage.Sets/src/mage/cards/e/EsperPanorama.java b/Mage.Sets/src/mage/cards/e/EsperPanorama.java
index 055b82ccbf..979a18654e 100644
--- a/Mage.Sets/src/mage/cards/e/EsperPanorama.java
+++ b/Mage.Sets/src/mage/cards/e/EsperPanorama.java
@@ -22,7 +22,7 @@ import mage.target.common.TargetCardInLibrary;
*/
public final class EsperPanorama extends CardImpl {
- private static final FilterCard filter = new FilterCard("a basic Plains, Island, or Swamp");
+ private static final FilterCard filter = new FilterCard("a basic Plains, Island, or Swamp card");
static {
filter.add(CardType.LAND.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/g/GryffsBoon.java b/Mage.Sets/src/mage/cards/g/GryffsBoon.java
index b88fef5ba1..a98d486874 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 creature. Activate only as a sorcery.";
+ staticText = "Return {this} from your graveyard to the battlefield attached to target creatur";
}
public GryffsBoonEffect(final GryffsBoonEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/h/HorizonSpellbomb.java b/Mage.Sets/src/mage/cards/h/HorizonSpellbomb.java
index f32db6d651..a85f77ad24 100644
--- a/Mage.Sets/src/mage/cards/h/HorizonSpellbomb.java
+++ b/Mage.Sets/src/mage/cards/h/HorizonSpellbomb.java
@@ -1,7 +1,7 @@
package mage.cards.h;
-import mage.abilities.common.DiesSourceTriggeredAbility;
+import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.common.TapSourceCost;
@@ -35,7 +35,7 @@ public final class HorizonSpellbomb extends CardImpl {
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
// When Horizon Spellbomb is put into a graveyard from the battlefield, you may pay {G}. If you do, draw a card.
- this.addAbility(new DiesSourceTriggeredAbility(new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new ManaCostsImpl("{G}"))));
+ this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new ManaCostsImpl("{G}"))));
}
private HorizonSpellbomb(final HorizonSpellbomb card) {
diff --git a/Mage.Sets/src/mage/cards/k/KindlyStranger.java b/Mage.Sets/src/mage/cards/k/KindlyStranger.java
index bd4e98cc96..0b33ba3ea8 100644
--- a/Mage.Sets/src/mage/cards/k/KindlyStranger.java
+++ b/Mage.Sets/src/mage/cards/k/KindlyStranger.java
@@ -1,7 +1,5 @@
package mage.cards.k;
-import java.util.UUID;
-
import mage.MageInt;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
@@ -15,6 +13,8 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
+import java.util.UUID;
+
/**
* @author fireshoes
*/
@@ -31,9 +31,11 @@ public final class KindlyStranger extends CardImpl {
// Delirium — {2}{B}: Transform Kindly Stranger. Activate this ability only if there are four or more card types among cards in your graveyard.
this.addAbility(new TransformAbility());
- this.addAbility(new ConditionalActivatedAbility(Zone.BATTLEFIELD,
- new TransformSourceEffect(true), new ManaCostsImpl<>("{2}{B}"), DeliriumCondition.instance)
- .addHint(DeliriumHint.instance));
+ 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."
+ ).addHint(DeliriumHint.instance));
}
private KindlyStranger(final KindlyStranger card) {
diff --git a/Mage.Sets/src/mage/cards/k/KuldothaForgemaster.java b/Mage.Sets/src/mage/cards/k/KuldothaForgemaster.java
index 4adb47b1cc..60d0887014 100644
--- a/Mage.Sets/src/mage/cards/k/KuldothaForgemaster.java
+++ b/Mage.Sets/src/mage/cards/k/KuldothaForgemaster.java
@@ -12,6 +12,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterArtifactCard;
import mage.filter.common.FilterControlledArtifactPermanent;
import mage.target.common.TargetCardInLibrary;
@@ -34,7 +35,7 @@ public final class KuldothaForgemaster extends CardImpl {
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterArtifactCard())),
new TapSourceCost());
- ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(3, 3, new FilterControlledArtifactPermanent("three artifacts you control"), false)));
+ ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(3, 3, StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, false)));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java b/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java
index 71a7c57390..64f5f39a0c 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(),
+ new ReturnSourceFromGraveyardToBattlefieldEffect(false, true),
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/m/MobileFort.java b/Mage.Sets/src/mage/cards/m/MobileFort.java
index 7a1297e084..deab260e39 100644
--- a/Mage.Sets/src/mage/cards/m/MobileFort.java
+++ b/Mage.Sets/src/mage/cards/m/MobileFort.java
@@ -34,7 +34,7 @@ public final class MobileFort extends CardImpl {
// {3}: Mobile Fort gets +3/-1 until end of turn and can attack this turn as though it didn't have defender. Activate this ability only once each turn.
Effect effect = new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.EndOfTurn);
- effect.setText("and can attack as though it didn't have defender");
+ effect.setText("and can attack this turn as though it didn't have defender");
Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(3, -1, Duration.EndOfTurn), new ManaCostsImpl("{3}"));
ability.addEffect(effect);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/r/RazorHippogriff.java b/Mage.Sets/src/mage/cards/r/RazorHippogriff.java
index fe71f9a1de..c4f2c1dc11 100644
--- a/Mage.Sets/src/mage/cards/r/RazorHippogriff.java
+++ b/Mage.Sets/src/mage/cards/r/RazorHippogriff.java
@@ -7,6 +7,7 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.Card;
@@ -37,7 +38,7 @@ public final class RazorHippogriff extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
- Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect());
+ Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect());
TargetCard target = new TargetCardInYourGraveyard(new FilterArtifactCard("artifact card from your graveyard"));
ability.addTarget(target);
ability.addEffect(new RazorHippogriffGainLifeEffect());
diff --git a/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java b/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java
index 552cf304ee..39b0888966 100644
--- a/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java
+++ b/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java
@@ -41,7 +41,7 @@ public final class ReaperOfFlightMoonsilver extends CardImpl {
new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)),
DeliriumCondition.instance,
"Delirium — Sacrifice another creature: Reaper of Flight Moonsilver gets +2/+1 until end of turn. "
- + "Activate 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/r/RelentlessDead.java b/Mage.Sets/src/mage/cards/r/RelentlessDead.java
index b248eeaf51..f0c19dddf2 100644
--- a/Mage.Sets/src/mage/cards/r/RelentlessDead.java
+++ b/Mage.Sets/src/mage/cards/r/RelentlessDead.java
@@ -37,7 +37,7 @@ public final class RelentlessDead extends CardImpl {
this.addAbility(new MenaceAbility());
// When Relentless Dead dies, you may pay {B}. If you do, return it to its owner's hand.
- this.addAbility(new DiesSourceTriggeredAbility(new DoIfCostPaid(new ReturnToHandSourceEffect(), new ManaCostsImpl("{B}"))));
+ this.addAbility(new DiesSourceTriggeredAbility(new DoIfCostPaid(new ReturnToHandSourceEffect().setText("return it to its owner's hand"), new ManaCostsImpl("{B}"))));
// When Relentless Dead dies, you may pay {X}. If you do, return another target Zombie creature card with converted mana cost X from your graveyard to the battlefield.
this.addAbility(new DiesSourceTriggeredAbility(new RelentlessDeadEffect()));
diff --git a/Mage.Sets/src/mage/cards/r/Remembrance.java b/Mage.Sets/src/mage/cards/r/Remembrance.java
index d9d0f7ed19..f957d3b46a 100644
--- a/Mage.Sets/src/mage/cards/r/Remembrance.java
+++ b/Mage.Sets/src/mage/cards/r/Remembrance.java
@@ -91,6 +91,6 @@ class RemembranceTriggeredAbility extends TriggeredAbilityImpl {
public String getRule() {
return "Whenever a nontoken creature you control dies, " +
"you may search your library for a card with the same name as that creature, " +
- "reveal it, and put it into your hand. If you do, shuffle.";
+ "reveal it, put it into your hand, then shuffle.";
}
}
diff --git a/Mage.Sets/src/mage/cards/r/RendingVines.java b/Mage.Sets/src/mage/cards/r/RendingVines.java
index 10ad200f45..20bd980a07 100644
--- a/Mage.Sets/src/mage/cards/r/RendingVines.java
+++ b/Mage.Sets/src/mage/cards/r/RendingVines.java
@@ -32,7 +32,7 @@ public final class RendingVines extends CardImpl {
this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
// Draw a card.
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
}
private RendingVines(final RendingVines card) {
diff --git a/Mage.Sets/src/mage/cards/s/SelectiveMemory.java b/Mage.Sets/src/mage/cards/s/SelectiveMemory.java
index f189f8aac7..e4b7d72c03 100644
--- a/Mage.Sets/src/mage/cards/s/SelectiveMemory.java
+++ b/Mage.Sets/src/mage/cards/s/SelectiveMemory.java
@@ -42,7 +42,7 @@ class SelectiveMemoryEffect extends OneShotEffect {
public SelectiveMemoryEffect() {
super(Outcome.Exile);
- this.staticText = "Search your library for any number of nonland cards and exile them. Then shuffle";
+ this.staticText = "Search your library for any number of nonland cards, exile them, then shuffle";
}
public SelectiveMemoryEffect(final SelectiveMemoryEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java b/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java
index 1d5ce2eeac..3f480e6625 100644
--- a/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java
+++ b/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java
@@ -57,7 +57,7 @@ class SorinGrimNemesisRevealEffect extends OneShotEffect {
public SorinGrimNemesisRevealEffect() {
super(Outcome.DrawCard);
- this.staticText = "reveal the top card of your library and put that card into your hand. Each opponent loses life equal to that card's mana value";
+ this.staticText = "reveal the top card of your library and put that card into your hand. Each opponent loses life equal to its mana value";
}
public SorinGrimNemesisRevealEffect(final SorinGrimNemesisRevealEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/t/TamiyosJournal.java b/Mage.Sets/src/mage/cards/t/TamiyosJournal.java
index 354892deb4..4a20c0daef 100644
--- a/Mage.Sets/src/mage/cards/t/TamiyosJournal.java
+++ b/Mage.Sets/src/mage/cards/t/TamiyosJournal.java
@@ -22,7 +22,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class TamiyosJournal extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("three Clues");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Clues");
static {
filter.add(SubType.CLUE.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java b/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java
index cfc3a7ec31..8790069986 100644
--- a/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java
+++ b/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java
@@ -61,7 +61,7 @@ class TezzeretTheSeekerEffect2 extends OneShotEffect {
public TezzeretTheSeekerEffect2() {
super(Outcome.DrawCard);
- this.staticText = "Search your library for an artifact card with mana value X or less and put it onto the battlefield. Then shuffle";
+ this.staticText = "Search your library for an artifact card with mana value X or less, put it onto the battlefield, then shuffle";
}
public TezzeretTheSeekerEffect2(final TezzeretTheSeekerEffect2 effect) {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/EpicEffect.java b/Mage/src/main/java/mage/abilities/effects/common/EpicEffect.java
index 7143dcfdc5..87f7eb6a92 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/EpicEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/EpicEffect.java
@@ -28,7 +28,7 @@ public class EpicEffect extends OneShotEffect {
private static final String rule = "Epic (For the rest of the game, you can't cast spells. " +
"At the beginning of each of your upkeeps for the rest of the game, copy this spell " +
- "except for its epic ability. If the spell has targets, you may choose new targets for the copy)";
+ "except for its epic ability. If the spell has targets, you may choose new targets for the copy)";
public EpicEffect() {
super(Outcome.Benefit);
diff --git a/Mage/src/main/java/mage/abilities/keyword/UnearthAbility.java b/Mage/src/main/java/mage/abilities/keyword/UnearthAbility.java
index 56ddae7bad..4edf5d7103 100644
--- a/Mage/src/main/java/mage/abilities/keyword/UnearthAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/UnearthAbility.java
@@ -52,7 +52,7 @@ public class UnearthAbility extends ActivatedAbilityImpl {
public String getRule() {
StringBuilder sb = new StringBuilder("Unearth ").append(this.getManaCosts().getText());
sb.append(" (").append(this.getManaCosts().getText());
- sb.append(": Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)");
+ sb.append(": Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)");
return sb.toString();
}