diff --git a/Mage.Sets/src/mage/cards/a/AlertHeedbonder.java b/Mage.Sets/src/mage/cards/a/AlertHeedbonder.java
index 8e77c371bdd..02eb1bdb7cf 100644
--- a/Mage.Sets/src/mage/cards/a/AlertHeedbonder.java
+++ b/Mage.Sets/src/mage/cards/a/AlertHeedbonder.java
@@ -44,7 +44,9 @@ public final class AlertHeedbonder extends CardImpl {
// At the beginning of your end step, you gain 1 life for each creature you control with vigilance.
this.addAbility(new BeginningOfEndStepTriggeredAbility(
- new GainLifeEffect(xValue), TargetController.YOU, false
+ new GainLifeEffect(xValue)
+ .setText("you gain 1 life for each creature you control with vigilance"),
+ TargetController.YOU, false
));
}
diff --git a/Mage.Sets/src/mage/cards/a/Archipelagore.java b/Mage.Sets/src/mage/cards/a/Archipelagore.java
index 55a15bdb0db..276ce4a252b 100644
--- a/Mage.Sets/src/mage/cards/a/Archipelagore.java
+++ b/Mage.Sets/src/mage/cards/a/Archipelagore.java
@@ -34,7 +34,7 @@ public final class Archipelagore extends CardImpl {
// Whenever this creature mutates, tap up to X target creatures, where X is the number of times this creature has mutated. Those creatures don't untap during their controller's next untap step.
Ability ability = new MutatesSourceTriggeredAbility(new TapTargetEffect(
- "up to X target creatures, where X is the number of times this creature has mutated."
+ "tap up to X target creatures, where X is the number of times this creature has mutated."
));
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("Those creatures"));
ability.setTargetAdjuster(ArchipelagoreAdjuster.instance);
diff --git a/Mage.Sets/src/mage/cards/b/BushmeatPoacher.java b/Mage.Sets/src/mage/cards/b/BushmeatPoacher.java
index 7be8a1fb834..5219f808060 100644
--- a/Mage.Sets/src/mage/cards/b/BushmeatPoacher.java
+++ b/Mage.Sets/src/mage/cards/b/BushmeatPoacher.java
@@ -12,9 +12,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterControlledPermanent;
-import mage.filter.predicate.mageobject.AnotherPredicate;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
@@ -27,12 +25,6 @@ import java.util.UUID;
*/
public final class BushmeatPoacher extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("another creature");
-
- static {
- filter.add(AnotherPredicate.instance);
- }
-
public BushmeatPoacher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
@@ -44,7 +36,7 @@ public final class BushmeatPoacher extends CardImpl {
// {1}, {T}, Sacrifice another creature: You gain life equal to that creature's toughness. Draw a card.
Ability ability = new SimpleActivatedAbility(new BushmeatPoacherEffect(), new GenericManaCost(1));
ability.addCost(new TapSourceCost());
- ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
+ ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
this.addAbility(ability);
}
@@ -62,7 +54,7 @@ class BushmeatPoacherEffect extends OneShotEffect {
BushmeatPoacherEffect() {
super(Outcome.Benefit);
- staticText = "you gain life equal to that creature's toughness. Draw a card";
+ staticText = "you gain life equal to the sacrificed creature's toughness. Draw a card";
}
private BushmeatPoacherEffect(final BushmeatPoacherEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/c/ChanneledForce.java b/Mage.Sets/src/mage/cards/c/ChanneledForce.java
index 7e933d29193..698172bc82b 100644
--- a/Mage.Sets/src/mage/cards/c/ChanneledForce.java
+++ b/Mage.Sets/src/mage/cards/c/ChanneledForce.java
@@ -25,7 +25,7 @@ public final class ChanneledForce extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{R}");
// As an additional cost to cast this spell, discard X cards.
- this.getSpellAbility().addCost(new DiscardXTargetCost(StaticFilters.FILTER_CARD_CARDS, true));
+ this.getSpellAbility().addCost(new DiscardXTargetCost(StaticFilters.FILTER_CARD_CARDS));
// Target player draws X cards. Channeled Force deals X damage to up to one target creature or planeswalker.
this.getSpellAbility().addEffect(new ChanneledForceEffect());
diff --git a/Mage.Sets/src/mage/cards/e/EscapeProtocol.java b/Mage.Sets/src/mage/cards/e/EscapeProtocol.java
index 4aa3a6b6027..a67aebae611 100644
--- a/Mage.Sets/src/mage/cards/e/EscapeProtocol.java
+++ b/Mage.Sets/src/mage/cards/e/EscapeProtocol.java
@@ -38,7 +38,7 @@ public final class EscapeProtocol extends CardImpl {
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(
new ExileTargetForSourceEffect(), false,
"exile target artifact or creature you control, " +
- "then return it to the battlefield under its owner's control."
+ "then return it to the battlefield under its owner's control"
);
ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false));
ability.addTarget(new TargetPermanent(filter));
diff --git a/Mage.Sets/src/mage/cards/e/ExuberantWolfbear.java b/Mage.Sets/src/mage/cards/e/ExuberantWolfbear.java
index 7b2432fd808..c676b9cc540 100644
--- a/Mage.Sets/src/mage/cards/e/ExuberantWolfbear.java
+++ b/Mage.Sets/src/mage/cards/e/ExuberantWolfbear.java
@@ -55,7 +55,7 @@ class ExuberantWolfbearEffect extends OneShotEffect {
ExuberantWolfbearEffect() {
super(Outcome.Benefit);
- staticText = "change the base power and toughness of target Human you control " +
+ staticText = "you may change the base power and toughness of target Human you control " +
"to {this}'s power and toughness until end of turn";
}
diff --git a/Mage.Sets/src/mage/cards/f/FerociousTigorilla.java b/Mage.Sets/src/mage/cards/f/FerociousTigorilla.java
index 25e4776a2b3..d5b09548e57 100644
--- a/Mage.Sets/src/mage/cards/f/FerociousTigorilla.java
+++ b/Mage.Sets/src/mage/cards/f/FerociousTigorilla.java
@@ -27,8 +27,7 @@ public final class FerociousTigorilla extends CardImpl {
// Ferocious Tigorilla enters the battlefield with your choice of a trample counter or a menace counter on it.
this.addAbility(new EntersBattlefieldAbility(
new AddCounterChoiceSourceEffect(CounterType.TRAMPLE, CounterType.MENACE),
- "Ferocious Tigorilla enters the battlefield with your choice of " +
- "a trample counter or a menace counter on it. " +
+ "with your choice of a trample counter or a menace counter on it. " +
"(A creature with menace can't be blocked except by two or more creatures.)"
));
}
diff --git a/Mage.Sets/src/mage/cards/g/GustOfWind.java b/Mage.Sets/src/mage/cards/g/GustOfWind.java
index 19c5a506f20..b114d177736 100644
--- a/Mage.Sets/src/mage/cards/g/GustOfWind.java
+++ b/Mage.Sets/src/mage/cards/g/GustOfWind.java
@@ -51,7 +51,7 @@ public final class GustOfWind extends CardImpl {
this.getSpellAbility().addTarget(new TargetPermanent(filter2));
// Draw a card.
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
}
private GustOfWind(final GustOfWind card) {
diff --git a/Mage.Sets/src/mage/cards/h/HuntmasterLiger.java b/Mage.Sets/src/mage/cards/h/HuntmasterLiger.java
index 3524529dd90..14dd6f51a18 100644
--- a/Mage.Sets/src/mage/cards/h/HuntmasterLiger.java
+++ b/Mage.Sets/src/mage/cards/h/HuntmasterLiger.java
@@ -32,7 +32,7 @@ public final class HuntmasterLiger extends CardImpl {
// Whenever this creature mutates, other creatures you control get +X/+X until end of turn, where X is the number of times this creature has mutated.
this.addAbility(new MutatesSourceTriggeredAbility(new BoostControlledEffect(
SourceMutatedCount.instance, SourceMutatedCount.instance, Duration.EndOfTurn,
- StaticFilters.FILTER_PERMANENT_CREATURE, true, true
+ StaticFilters.FILTER_PERMANENT_CREATURES, true, true
)));
}
diff --git a/Mage.Sets/src/mage/cards/k/KaheeraTheOrphanguard.java b/Mage.Sets/src/mage/cards/k/KaheeraTheOrphanguard.java
index 90a868ddd7b..d9d7611fba8 100644
--- a/Mage.Sets/src/mage/cards/k/KaheeraTheOrphanguard.java
+++ b/Mage.Sets/src/mage/cards/k/KaheeraTheOrphanguard.java
@@ -80,7 +80,7 @@ enum KaheeraTheOrphanguardCompanionCondition implements CompanionCondition {
@Override
public String getRule() {
- return "Each creature card in your starting deck is a Cat, Elemental, Nightmare, Dinosaur or Beast card.";
+ return "Each creature card in your starting deck is a Cat, Elemental, Nightmare, Dinosaur, or Beast card.";
}
private static final List subtypes = Arrays.asList(
diff --git a/Mage.Sets/src/mage/cards/k/KeepSafe.java b/Mage.Sets/src/mage/cards/k/KeepSafe.java
index a7a676677e6..86857f6a1fe 100644
--- a/Mage.Sets/src/mage/cards/k/KeepSafe.java
+++ b/Mage.Sets/src/mage/cards/k/KeepSafe.java
@@ -31,7 +31,7 @@ public final class KeepSafe extends CardImpl {
this.getSpellAbility().addTarget(new TargetSpell(filter));
// Draw a card.
- this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
}
private KeepSafe(final KeepSafe card) {
diff --git a/Mage.Sets/src/mage/cards/n/NightsquadCommando.java b/Mage.Sets/src/mage/cards/n/NightsquadCommando.java
index 8ae8c016bc7..90943a1c836 100644
--- a/Mage.Sets/src/mage/cards/n/NightsquadCommando.java
+++ b/Mage.Sets/src/mage/cards/n/NightsquadCommando.java
@@ -8,7 +8,6 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.common.RaidHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.HumanSoldierToken;
@@ -31,12 +30,10 @@ public final class NightsquadCommando extends CardImpl {
// When Nightsquad Commando enters the battlefield, if you attacked this turn, create a 1/1 white Human Soldier creature token.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
- new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new HumanSoldierToken())),
- RaidCondition.instance, "When {this} enters the battlefield, " +
- "if you attacked this turn, create a 1/1 white Human Soldier creature token.")
- .setAbilityWord(AbilityWord.RAID)
- .addHint(RaidHint.instance),
- new PlayerAttackedWatcher());
+ new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new HumanSoldierToken())),
+ RaidCondition.instance, "When {this} enters the battlefield, " +
+ "if you attacked this turn, create a 1/1 white Human Soldier creature token."
+ ).addHint(RaidHint.instance), new PlayerAttackedWatcher());
}
private NightsquadCommando(final NightsquadCommando card) {
diff --git a/Mage.Sets/src/mage/cards/p/Porcuparrot.java b/Mage.Sets/src/mage/cards/p/Porcuparrot.java
index 1f8bf3b988c..a6a5fed909b 100644
--- a/Mage.Sets/src/mage/cards/p/Porcuparrot.java
+++ b/Mage.Sets/src/mage/cards/p/Porcuparrot.java
@@ -32,9 +32,12 @@ public final class Porcuparrot extends CardImpl {
this.addAbility(new MutateAbility(this, "{2}{R}"));
// {T}: This creature deals X damage to any target, where X is the number of times this creature has mutated.
- Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(
- SourceMutatedCount.instance, "this creature"
- ), new TapSourceCost());
+ Ability ability = new SimpleActivatedAbility(
+ new DamageTargetEffect(SourceMutatedCount.instance)
+ .setText("this creature deals X damage to any target, " +
+ "where X is the number of times this creature has mutated"),
+ new TapSourceCost()
+ );
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/r/RegalLeosaur.java b/Mage.Sets/src/mage/cards/r/RegalLeosaur.java
index da3993b7e8b..24ef8eba65e 100644
--- a/Mage.Sets/src/mage/cards/r/RegalLeosaur.java
+++ b/Mage.Sets/src/mage/cards/r/RegalLeosaur.java
@@ -30,7 +30,7 @@ public final class RegalLeosaur extends CardImpl {
// Whenever this creature mutates, other creatures you control get +2/+1 until end of turn.
this.addAbility(new MutatesSourceTriggeredAbility(
- new BoostControlledEffect(2, 1, Duration.EndOfTurn, false)
+ new BoostControlledEffect(2, 1, Duration.EndOfTurn, true)
));
}
diff --git a/Mage.Sets/src/mage/cards/s/SeaDasherOctopus.java b/Mage.Sets/src/mage/cards/s/SeaDasherOctopus.java
index a79023fef81..0fe597505f0 100644
--- a/Mage.Sets/src/mage/cards/s/SeaDasherOctopus.java
+++ b/Mage.Sets/src/mage/cards/s/SeaDasherOctopus.java
@@ -33,7 +33,7 @@ public final class SeaDasherOctopus extends CardImpl {
// Whenever this creature deals combat damage to a player, draw a card.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
new DrawCardSourceControllerEffect(1), false
- ));
+ ).setTriggerPhrase("Whenever this creature deals combat damage to a player, "));
}
private SeaDasherOctopus(final SeaDasherOctopus card) {
diff --git a/Mage.Sets/src/mage/cards/t/TitansNest.java b/Mage.Sets/src/mage/cards/t/TitansNest.java
index 1b6e3a2c292..fd7d9af5279 100644
--- a/Mage.Sets/src/mage/cards/t/TitansNest.java
+++ b/Mage.Sets/src/mage/cards/t/TitansNest.java
@@ -92,7 +92,7 @@ class TitansNestManaAbility extends ActivatedManaAbilityImpl {
TitansNestManaAbility() {
super(Zone.BATTLEFIELD, (BasicManaEffect) new BasicManaEffect(
new TitansNestConditionalMana(), new CardsInControllerGraveyardCount())
- .setText("Add {C}. Spend this mana only to cast a colored spell without {X} in its mana cost."),
+ .setText("Add {C}. Spend this mana only to cast a spell that's one or more colors without {X} in its mana cost."),
new ExileFromGraveCost(new TargetCardInYourGraveyard()));
this.netMana.add(Mana.ColorlessMana(1));
}
@@ -111,7 +111,7 @@ class TitansNestConditionalMana extends ConditionalMana {
TitansNestConditionalMana() {
super(Mana.ColorlessMana(1));
- staticText = "Spend this mana only to cast a colored spell without {X} in its mana cost.";
+ staticText = "Spend this mana only to cast a spell that's one or more colors without {X} in its mana cost.";
addCondition(new TitansNestManaCondition());
}
}
diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
index 3d2b0189a24..d0c2a698907 100644
--- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
+++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
@@ -62,7 +62,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
- private static final String FULL_ABILITIES_CHECK_SET_CODE = "SLD"; // check all abilities and output cards with wrong abilities texts;
+ private static final String FULL_ABILITIES_CHECK_SET_CODE = "IKO"; // check all abilities and output cards with wrong abilities texts;
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages