diff --git a/Mage.Sets/src/mage/cards/b/BaruWurmspeaker.java b/Mage.Sets/src/mage/cards/b/BaruWurmspeaker.java
index 29665c5982f..2a2e148d71e 100644
--- a/Mage.Sets/src/mage/cards/b/BaruWurmspeaker.java
+++ b/Mage.Sets/src/mage/cards/b/BaruWurmspeaker.java
@@ -58,7 +58,7 @@ public final class BaruWurmspeaker extends CardImpl {
));
ability.addEffect(new GainAbilityControlledEffect(
TrampleAbility.getInstance(), Duration.WhileOnBattlefield, filter2
- ));
+ ).setText("and have trample"));
this.addAbility(ability);
// {7}{G}, {T}: Create a 4/4 green Wurm creature token. This ability costs {X} less to activate, whre X is the greatest power among Wurms you control.
diff --git a/Mage.Sets/src/mage/cards/c/Chromanticore.java b/Mage.Sets/src/mage/cards/c/Chromanticore.java
index 2d50b327e64..bb089e575fe 100644
--- a/Mage.Sets/src/mage/cards/c/Chromanticore.java
+++ b/Mage.Sets/src/mage/cards/c/Chromanticore.java
@@ -56,7 +56,7 @@ public final class Chromanticore extends CardImpl {
effect.setText(", trample");
ability.addEffect(effect);
effect = new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.AURA);
- effect.setText("and lifelink");
+ effect.setText(", and lifelink");
ability.addEffect(effect);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/f/FallajiWayfarer.java b/Mage.Sets/src/mage/cards/f/FallajiWayfarer.java
index 1569485f240..7d5ae19bae4 100644
--- a/Mage.Sets/src/mage/cards/f/FallajiWayfarer.java
+++ b/Mage.Sets/src/mage/cards/f/FallajiWayfarer.java
@@ -21,7 +21,7 @@ import java.util.UUID;
*/
public final class FallajiWayfarer extends CardImpl {
- private static final FilterCard filter = new FilterCard("multicolored spells you cast");
+ private static final FilterCard filter = new FilterCard("multicolored spells");
static {
filter.add(MulticoloredPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/h/HonorWornShaku.java b/Mage.Sets/src/mage/cards/h/HonorWornShaku.java
index 7cd73f4862c..a21c84042a8 100644
--- a/Mage.Sets/src/mage/cards/h/HonorWornShaku.java
+++ b/Mage.Sets/src/mage/cards/h/HonorWornShaku.java
@@ -1,8 +1,5 @@
-
-
package mage.cards.h;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapTargetCost;
@@ -17,12 +14,15 @@ import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.target.common.TargetControlledPermanent;
+import java.util.UUID;
+
/**
* @author Loki
*/
public final class HonorWornShaku extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped legendary permanent");
+ private static final FilterControlledPermanent filter
+ = new FilterControlledPermanent("untapped legendary permanent you control");
static {
filter.add(TappedPredicate.UNTAPPED);
@@ -47,5 +47,4 @@ public final class HonorWornShaku extends CardImpl {
public HonorWornShaku copy() {
return new HonorWornShaku(this);
}
-
}
diff --git a/Mage.Sets/src/mage/cards/o/OKagachiVengefulKami.java b/Mage.Sets/src/mage/cards/o/OKagachiVengefulKami.java
index 8020208b794..0c7b9eb2bbe 100644
--- a/Mage.Sets/src/mage/cards/o/OKagachiVengefulKami.java
+++ b/Mage.Sets/src/mage/cards/o/OKagachiVengefulKami.java
@@ -113,7 +113,7 @@ class OKagachiVengefulKamiTriggeredAbility extends TriggeredAbilityImpl {
public String getRule() {
return "Whenever {this} deals combat damage to a player, " +
"if that player attacked you during their last turn, " +
- "exile target nonland permanent that player controls";
+ "exile target nonland permanent that player controls.";
}
}
diff --git a/Mage.Sets/src/mage/cards/s/ShanidSleepersScourge.java b/Mage.Sets/src/mage/cards/s/ShanidSleepersScourge.java
index c3d25608379..ddc34abf20b 100644
--- a/Mage.Sets/src/mage/cards/s/ShanidSleepersScourge.java
+++ b/Mage.Sets/src/mage/cards/s/ShanidSleepersScourge.java
@@ -5,8 +5,6 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
-import mage.abilities.effects.Effect;
-import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
@@ -17,12 +15,8 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.FilterSpell;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.mageobject.AnotherPredicate;
-import mage.game.Game;
-import mage.players.Player;
+import mage.filter.common.FilterLandPermanent;
import java.util.UUID;
@@ -30,16 +24,15 @@ import java.util.UUID;
* @author freaisdead
*/
public final class ShanidSleepersScourge extends CardImpl {
- private static final FilterCreaturePermanent otherLegendaryCreaturesFilter = new FilterCreaturePermanent("other legendary creatures");
+ private static final FilterCreaturePermanent otherLegendaryCreaturesFilter = new FilterCreaturePermanent("legendary creatures");
private static final FilterSpell legendarySpellFilter = new FilterSpell("a legendary spell");
- private static final FilterPermanent legendaryLandFilter = new FilterPermanent("a legendary land");
+ private static final FilterPermanent legendaryLandFilter = new FilterLandPermanent("a legendary land");
static {
otherLegendaryCreaturesFilter.add(SuperType.LEGENDARY.getPredicate());
legendarySpellFilter.add(SuperType.LEGENDARY.getPredicate());
- legendaryLandFilter.add(CardType.LAND.getPredicate());
legendaryLandFilter.add(SuperType.LEGENDARY.getPredicate());
}
@@ -62,13 +55,14 @@ public final class ShanidSleepersScourge extends CardImpl {
otherLegendaryCreaturesFilter,
true)));
// Whenever you play a legendary land or cast a legendary spell, you draw a card and you lose 1 life.
- this.addAbility(new OrTriggeredAbility(Zone.BATTLEFIELD,
- new DrawAndLoseEffect(1, 1),
- false,
+ Ability ability = new OrTriggeredAbility(Zone.BATTLEFIELD,
+ new DrawCardSourceControllerEffect(1).setText("you draw a card"), false,
"Whenever you play a legendary land or cast a legendary spell, ",
new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, null, legendaryLandFilter, true),
new SpellCastControllerTriggeredAbility(null, legendarySpellFilter, false)
- ));
+ );
+ ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
+ this.addAbility(ability);
}
private ShanidSleepersScourge(final ShanidSleepersScourge card) {
@@ -80,40 +74,3 @@ public final class ShanidSleepersScourge extends CardImpl {
return new ShanidSleepersScourge(this);
}
}
-
-
-class DrawAndLoseEffect extends OneShotEffect {
-
- DrawAndLoseEffect(int drawAmount, int loseLifeAMount) {
- super(Outcome.Benefit);
- String cardRule = "a card";
- if (drawAmount > 1) {
- cardRule = String.format("%d cards", drawAmount);
- }
- this.staticText = String.format("draw %s and you lose %d life", cardRule, loseLifeAMount);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getControllerId());
- if (controller == null) {
- return false;
- }
-
- Effect drawEffectController = new DrawCardSourceControllerEffect(1);
- drawEffectController.apply(game, source);
- Effect drawEffectOpponent = new LoseLifeSourceControllerEffect(1);
- drawEffectOpponent.apply(game, source);
-
- return true;
- }
-
- private DrawAndLoseEffect(final DrawAndLoseEffect effect) {
- super(effect);
- }
-
- @Override
- public DrawAndLoseEffect copy() {
- return new DrawAndLoseEffect(this);
- }
-}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/cards/t/TenzaGodosMaul.java b/Mage.Sets/src/mage/cards/t/TenzaGodosMaul.java
index 05a093325fb..06e16519006 100644
--- a/Mage.Sets/src/mage/cards/t/TenzaGodosMaul.java
+++ b/Mage.Sets/src/mage/cards/t/TenzaGodosMaul.java
@@ -1,39 +1,10 @@
-/*
- *
- * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of BetaSteward_at_googlemail.com.
- *
- */
package mage.cards.t;
-import java.util.UUID;
import mage.ObjectColor;
+import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.condition.Condition;
import mage.abilities.condition.common.AttachedToMatchesFilterCondition;
-import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
@@ -41,20 +12,20 @@ import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.*;
+import mage.constants.AttachmentType;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.constants.SuperType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
-import mage.target.common.TargetControlledCreaturePermanent;
+
+import java.util.UUID;
/**
* @author LevelX
*/
-
public final class TenzaGodosMaul extends CardImpl {
- private static final String rule1 = "As long as it's legendary, it gets an additional +2/+2";
- private static final String rule2 = "As long as it's red, it has trample.";
-
private static final FilterCreaturePermanent legendaryFilter = new FilterCreaturePermanent("legendary");
private static final FilterCreaturePermanent redFilter = new FilterCreaturePermanent("red");
@@ -63,24 +34,29 @@ public final class TenzaGodosMaul extends CardImpl {
redFilter.add(new ColorPredicate(ObjectColor.RED));
}
+ private static final Condition condition1 = new AttachedToMatchesFilterCondition(legendaryFilter);
+ private static final Condition condition2 = new AttachedToMatchesFilterCondition(redFilter);
+
public TenzaGodosMaul(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.EQUIPMENT);
- // Equipped creature gets +1/+1.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(1, 1)));
- // As long as it's legendary, it gets an additional +2/+2.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
- new BoostEquippedEffect(2, 2),
- new AttachedToMatchesFilterCondition(legendaryFilter), rule1)));
- // As long as it's red, it has trample.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
- new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.EQUIPMENT),
- new AttachedToMatchesFilterCondition(redFilter), rule2)));
- // Equip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.)
- this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(1), new TargetControlledCreaturePermanent()));
+ // Equipped creature gets +1/+1. As long as it's legendary, it gets an additional +2/+2. As long as it's red, it has trample.
+ Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(1, 1));
+ ability.addEffect(new ConditionalContinuousEffect(
+ new BoostEquippedEffect(2, 2), condition1,
+ "As long as it's legendary, it gets an additional +2/+2"
+ ));
+ ability.addEffect(new ConditionalContinuousEffect(
+ new GainAbilityAttachedEffect(
+ TrampleAbility.getInstance(), AttachmentType.EQUIPMENT
+ ), condition2, "As long as it's red, it has trample."
+ ));
+ this.addAbility(ability);
+ // Equip {1}
+ this.addAbility(new EquipAbility(1));
}
private TenzaGodosMaul(final TenzaGodosMaul card) {
@@ -92,5 +68,3 @@ public final class TenzaGodosMaul extends CardImpl {
return new TenzaGodosMaul(this);
}
}
-
-
diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
index a3605b70419..a6ed06caf7c 100644
--- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
+++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
@@ -60,7 +60,7 @@ public class VerifyCardDataTest {
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
- private static final String FULL_ABILITIES_CHECK_SET_CODE = "DMU"; // check all abilities and output cards with wrong abilities texts;
+ private static final String FULL_ABILITIES_CHECK_SET_CODE = "DMC"; // 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
diff --git a/Mage/src/main/java/mage/abilities/keyword/ConvokeAbility.java b/Mage/src/main/java/mage/abilities/keyword/ConvokeAbility.java
index bb1d8f7c496..48170510ef8 100644
--- a/Mage/src/main/java/mage/abilities/keyword/ConvokeAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/ConvokeAbility.java
@@ -93,7 +93,7 @@ public class ConvokeAbility extends SimpleStaticAbility implements AlternateMana
@Override
public String getRule() {
- return "Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)";
+ return "convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)";
}
@Override
diff --git a/Mage/src/main/java/mage/game/permanent/token/HazezonTamarSandWarriorToken.java b/Mage/src/main/java/mage/game/permanent/token/HazezonTamarSandWarriorToken.java
index e4beae8f30b..7ca0cc46a05 100644
--- a/Mage/src/main/java/mage/game/permanent/token/HazezonTamarSandWarriorToken.java
+++ b/Mage/src/main/java/mage/game/permanent/token/HazezonTamarSandWarriorToken.java
@@ -12,7 +12,7 @@ import mage.constants.SubType;
public final class HazezonTamarSandWarriorToken extends TokenImpl {
public HazezonTamarSandWarriorToken() {
- super("Sand Warrior Token", "1/1 Sand Warrior creature tokens that are red, green, and white");
+ super("Sand Warrior Token", "1/1 red, green, and white Sand Warrior creature tokens");
cardType.add(CardType.CREATURE);
color.setRed(true);
color.setGreen(true);