diff --git a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java
index fc3b22aba5f..7620727df5a 100644
--- a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java
+++ b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java
@@ -53,7 +53,7 @@ import java.util.UUID;
*/
public class BrassTalonChimera extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature you control");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Chimera creature");
static {
filter.add(new SubtypePredicate(SubType.CHIMERA));
diff --git a/Mage.Sets/src/mage/cards/c/CallToGlory.java b/Mage.Sets/src/mage/cards/c/CallToGlory.java
index 9d678be5157..b2c31e6112d 100644
--- a/Mage.Sets/src/mage/cards/c/CallToGlory.java
+++ b/Mage.Sets/src/mage/cards/c/CallToGlory.java
@@ -28,21 +28,16 @@
package mage.cards.c;
import java.util.UUID;
-import mage.abilities.Ability;
-import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.UntapAllEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Outcome;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
/**
* @author Loki
@@ -57,8 +52,9 @@ public class CallToGlory extends CardImpl {
public CallToGlory(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
-
- this.getSpellAbility().addEffect(new CalltoGloryFirstEffect());
+
+ //Untap all creatures you control. Samurai creatures you control get +1/+1 until end of turn.
+ this.getSpellAbility().addEffect(new UntapAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURE));
this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter, false));
}
@@ -70,35 +66,4 @@ public class CallToGlory extends CardImpl {
public CallToGlory copy() {
return new CallToGlory(this);
}
-
-}
-
-class CalltoGloryFirstEffect extends OneShotEffect {
-
- public CalltoGloryFirstEffect() {
- super(Outcome.Untap);
- staticText = "Untap all creatures you control";
- }
-
- public CalltoGloryFirstEffect(final CalltoGloryFirstEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- if (player != null) {
- for (Permanent creature : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, player.getId(), game)) {
- creature.untap(game);
- }
- return true;
- }
- return false;
- }
-
- @Override
- public CalltoGloryFirstEffect copy() {
- return new CalltoGloryFirstEffect(this);
- }
-
}
diff --git a/Mage.Sets/src/mage/cards/e/ExaltedDragon.java b/Mage.Sets/src/mage/cards/e/ExaltedDragon.java
index 55ee01bf792..941f15b0e4c 100644
--- a/Mage.Sets/src/mage/cards/e/ExaltedDragon.java
+++ b/Mage.Sets/src/mage/cards/e/ExaltedDragon.java
@@ -80,7 +80,7 @@ class ExaltedDragonCostToAttackBlockEffect extends PayCostToAttackBlockEffectImp
ExaltedDragonCostToAttackBlockEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment, RestrictType.ATTACK,
new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land"))));
- staticText = "{this} can't attack unless you sacrifice a land (This cost is paid as attackers are declared.)";
+ staticText = "{this} can't attack unless you sacrifice a land. (This cost is paid as attackers are declared.)";
}
ExaltedDragonCostToAttackBlockEffect(ExaltedDragonCostToAttackBlockEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/k/KaerveksSpite.java b/Mage.Sets/src/mage/cards/k/KaerveksSpite.java
index 349fa1ccf82..8602a8c41be 100644
--- a/Mage.Sets/src/mage/cards/k/KaerveksSpite.java
+++ b/Mage.Sets/src/mage/cards/k/KaerveksSpite.java
@@ -16,7 +16,7 @@ public class KaerveksSpite extends CardImpl {
super(ownerId, cardSetInfo, new CardType[]{CardType.INSTANT}, "{B}{B}{B}");
// As an additional cost to cast Kaervek's Spite, sacrifice all permanents you control and discard your hand.
- this.getSpellAbility().addCost(new SacrificeAllCost(new FilterControlledPermanent("all permanents you control")));
+ this.getSpellAbility().addCost(new SacrificeAllCost(new FilterControlledPermanent("permanents you control")));
this.getSpellAbility().addCost(new DiscardHandCost());
// Target player loses 5 life.
diff --git a/Mage.Sets/src/mage/cards/l/Leviathan.java b/Mage.Sets/src/mage/cards/l/Leviathan.java
index cf79670e671..7f5d4b1cb2f 100644
--- a/Mage.Sets/src/mage/cards/l/Leviathan.java
+++ b/Mage.Sets/src/mage/cards/l/Leviathan.java
@@ -118,7 +118,7 @@ class LeviathanCostToAttackBlockEffect extends PayCostToAttackBlockEffectImpl {
LeviathanCostToAttackBlockEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment, RestrictType.ATTACK,
new SacrificeTargetCost(new TargetControlledPermanent(2, 2, filter, false)));
- staticText = "{this} can't attack unless you sacrifice two Islands (This cost is paid as attackers are declared.)";
+ staticText = "{this} can't attack unless you sacrifice two Islands. (This cost is paid as attackers are declared.)";
}
LeviathanCostToAttackBlockEffect(LeviathanCostToAttackBlockEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/l/LyevDecree.java b/Mage.Sets/src/mage/cards/l/LyevDecree.java
index c332e4bf099..70326ded261 100644
--- a/Mage.Sets/src/mage/cards/l/LyevDecree.java
+++ b/Mage.Sets/src/mage/cards/l/LyevDecree.java
@@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
public class LyevDecree extends CardImpl {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponent controls");
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
}
@@ -56,7 +56,7 @@ public class LyevDecree extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}");
- // Detain up to two target creatures your opponent controls.
+ // Detain up to two target creatures your opponents control.
this.getSpellAbility().addEffect(new DetainTargetEffect());
Target target = new TargetCreaturePermanent(0,2,filter,false);
this.getSpellAbility().addTarget(target);
diff --git a/Mage.Sets/src/mage/cards/m/MerfolkRaiders.java b/Mage.Sets/src/mage/cards/m/MerfolkRaiders.java
index 21611866db1..09e408b51b5 100644
--- a/Mage.Sets/src/mage/cards/m/MerfolkRaiders.java
+++ b/Mage.Sets/src/mage/cards/m/MerfolkRaiders.java
@@ -50,10 +50,10 @@ public class MerfolkRaiders extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(3);
- // Phasing
- this.addAbility(PhasingAbility.getInstance());
// Islandwalk
this.addAbility(new IslandwalkAbility());
+ // Phasing
+ this.addAbility(PhasingAbility.getInstance());
}
public MerfolkRaiders(final MerfolkRaiders card) {
diff --git a/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java b/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java
index 05df6afc78a..9b3e8127988 100644
--- a/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java
+++ b/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java
@@ -49,7 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class MilitantInquisitor extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("equipment you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Equipment you control");
static {
filter.add(new CardTypePredicate(CardType.ARTIFACT));
diff --git a/Mage.Sets/src/mage/cards/s/SpireTracer.java b/Mage.Sets/src/mage/cards/s/SpireTracer.java
index 8c36e4d18c3..7846832cbf4 100644
--- a/Mage.Sets/src/mage/cards/s/SpireTracer.java
+++ b/Mage.Sets/src/mage/cards/s/SpireTracer.java
@@ -76,7 +76,7 @@ class CantBeBlockedExceptByCreaturesWithFlyingOrReachEffect extends RestrictionE
public CantBeBlockedExceptByCreaturesWithFlyingOrReachEffect() {
super(Duration.WhileOnBattlefield);
- staticText = "Can't be blocked except by creatures with flying or reach";
+ staticText = "{this} can't be blocked except by creatures with flying or reach";
}
public CantBeBlockedExceptByCreaturesWithFlyingOrReachEffect(final CantBeBlockedExceptByCreaturesWithFlyingOrReachEffect effect) {
diff --git a/Mage.Sets/src/mage/cards/s/SpiritCairn.java b/Mage.Sets/src/mage/cards/s/SpiritCairn.java
index 0153958df44..1d1f92e0b46 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritCairn.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritCairn.java
@@ -51,7 +51,7 @@ public class SpiritCairn extends CardImpl {
// Whenever a player discards a card, you may pay {W}. If you do, create a 1/1 white Spirit creature token with flying.
this.addAbility(new SimpleTriggeredAbility(Zone.BATTLEFIELD, GameEvent.EventType.DISCARDED_CARD,
new DoIfCostPaid(new CreateTokenEffect(new SpiritWhiteToken()), new ManaCostsImpl("{W}")),
- "Whenever a player discards a card, you ",
+ "Whenever a player discards a card, ",
false, false));
}
diff --git a/Mage.Sets/src/mage/cards/s/SpiritMirror.java b/Mage.Sets/src/mage/cards/s/SpiritMirror.java
index 77edaee3128..e9c03b254c6 100644
--- a/Mage.Sets/src/mage/cards/s/SpiritMirror.java
+++ b/Mage.Sets/src/mage/cards/s/SpiritMirror.java
@@ -66,7 +66,7 @@ public class SpiritMirror extends CardImpl {
this.addAbility(new ConditionalTriggeredAbility(
new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect(new ReflectionToken()), TargetController.YOU, false),
new PermanentsOnTheBattlefieldCondition(filterToken, ComparisonType.EQUAL_TO, 0, false),
- "At the beginning of your upkeep, if there are no Reflection tokens on the battlefield, create a 2/2 white Reflection creature token"));
+ "At the beginning of your upkeep, if there are no Reflection tokens on the battlefield, create a 2/2 white Reflection creature token."));
// {0}: Destroy target Reflection.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new GenericManaCost(0));
diff --git a/Mage/src/main/java/mage/abilities/effects/common/CantBeRegeneratedTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CantBeRegeneratedTargetEffect.java
index a0219501fb8..d844803f730 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/CantBeRegeneratedTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/CantBeRegeneratedTargetEffect.java
@@ -81,7 +81,6 @@ public class CantBeRegeneratedTargetEffect extends ContinuousRuleModifyingEffect
}
sb.append(" can't be regenerated");
if (!duration.toString().isEmpty()) {
- sb.append(' ');
if (duration == Duration.EndOfTurn) {
sb.append(" this turn");
} else {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java
index 993422a0d4b..6bb2ce18c58 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java
@@ -286,7 +286,7 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect {
sb.append("tokens that are copies of target ");
}
if (!mode.getTargets().isEmpty()) {
- sb.append(mode.getTargets().get(0).getMessage());
+ sb.append(mode.getTargets().get(0).getTargetName());
} else {
throw new UnsupportedOperationException("Using default rule generation of target effect without having a target object");
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/PreventDamageByTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/PreventDamageByTargetEffect.java
index e26affa441f..081cd81b8c8 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/PreventDamageByTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/PreventDamageByTargetEffect.java
@@ -96,7 +96,7 @@ public class PreventDamageByTargetEffect extends PreventionEffectImpl {
StringBuilder sb = new StringBuilder();
sb.append("Prevent all");
if (onlyCombat) {
- sb.append(" combat ");
+ sb.append(" combat");
}
sb.append(" damage target ");
sb.append(mode.getTargets().get(0).getTargetName()).append(" would deal ").append(duration.toString());
diff --git a/Mage/src/main/java/mage/abilities/effects/common/PreventNextDamageFromChosenSourceToYouEffect.java b/Mage/src/main/java/mage/abilities/effects/common/PreventNextDamageFromChosenSourceToYouEffect.java
index 6164d9c2de3..86f10acf760 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/PreventNextDamageFromChosenSourceToYouEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/PreventNextDamageFromChosenSourceToYouEffect.java
@@ -71,7 +71,7 @@ public class PreventNextDamageFromChosenSourceToYouEffect extends PreventionEffe
StringBuilder sb = new StringBuilder("The next time a ").append(targetSource.getFilter().getMessage());
sb.append(" of your choice would deal damage to you");
if (duration == Duration.EndOfTurn) {
- sb.append(" this turn");
+ sb.append(" this turn");
}
sb.append(", prevent that damage");
return sb.toString();
diff --git a/Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveEachPlayerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveEachPlayerEffect.java
index 77ebb1377df..0a378703ab4 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveEachPlayerEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveEachPlayerEffect.java
@@ -123,9 +123,12 @@ public class PutTopCardOfLibraryIntoGraveEachPlayerEffect extends OneShotEffect
throw new UnsupportedOperationException("TargetController type not supported.");
}
sb.append("puts the top ");
- sb.append(CardUtil.numberToText(numberCards.toString(), "a"));
- sb.append(" card");
- sb.append(numberCards.toString().equals("1") ? "" : "s");
+ if(numberCards.toString().equals("1")) {
+ sb.append("card");
+ } else {
+ sb.append(CardUtil.numberToText(numberCards.toString()));
+ sb.append(" cards");
+ }
sb.append(" of his or her library into his or her graveyard");
return sb.toString();
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/TapAllTargetPlayerControlsEffect.java b/Mage/src/main/java/mage/abilities/effects/common/TapAllTargetPlayerControlsEffect.java
index 08ca0c506f2..ac2bee4e1da 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/TapAllTargetPlayerControlsEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/TapAllTargetPlayerControlsEffect.java
@@ -80,6 +80,6 @@ public class TapAllTargetPlayerControlsEffect extends OneShotEffect {
if (staticText != null && !staticText.isEmpty()) {
return staticText;
}
- return "tap all " + filter.toString() + " target " + mode.getTargets().get(0).getMessage() + " controls";
+ return "tap all " + filter.toString() + " target " + mode.getTargets().get(0).getTargetName() + " controls";
}
}
diff --git a/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostIncreasementAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostIncreasementAllEffect.java
index 95d6d6e524b..6b371b0dc49 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostIncreasementAllEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/cost/SpellsCostIncreasementAllEffect.java
@@ -48,7 +48,7 @@ public class SpellsCostIncreasementAllEffect extends CostModificationEffectImpl
private int amount;
public SpellsCostIncreasementAllEffect(int amount) {
- this(new FilterCard("All Spells "), amount);
+ this(new FilterCard("Spells"), amount);
}
public SpellsCostIncreasementAllEffect(FilterCard filter, int amount) {
diff --git a/Mage/src/main/java/mage/abilities/keyword/DefenderAbility.java b/Mage/src/main/java/mage/abilities/keyword/DefenderAbility.java
index 293ad9adb2a..a6cf1ce515b 100644
--- a/Mage/src/main/java/mage/abilities/keyword/DefenderAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/DefenderAbility.java
@@ -56,7 +56,7 @@ public class DefenderAbility extends StaticAbility implements MageSingleton {
@Override
public String getRule() {
- return "Defender";
+ return "defender";
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/keyword/LifelinkAbility.java b/Mage/src/main/java/mage/abilities/keyword/LifelinkAbility.java
index c22dde451aa..7a12b664265 100644
--- a/Mage/src/main/java/mage/abilities/keyword/LifelinkAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/LifelinkAbility.java
@@ -56,7 +56,7 @@ public class LifelinkAbility extends StaticAbility implements MageSingleton {
@Override
public String getRule() {
- return "Lifelink (Damage dealt by this creature also causes you to gain that much life.)";
+ return "lifelink (Damage dealt by this creature also causes you to gain that much life.)";
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java b/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java
index 5f1b480406e..46471af292f 100644
--- a/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java
@@ -89,7 +89,7 @@ public class ProtectionAbility extends StaticAbility {
@Override
public String getRule() {
- return "Protection from " + filter.getMessage() + (removeAuras ? "" : ". This effect doesn't remove auras.");
+ return "protection from " + filter.getMessage() + (removeAuras ? "" : ". This effect doesn't remove auras.");
}
public boolean canTarget(MageObject source, Game game) {
diff --git a/Mage/src/main/java/mage/abilities/keyword/TotemArmorAbility.java b/Mage/src/main/java/mage/abilities/keyword/TotemArmorAbility.java
index 604f1645040..f31280d1bf3 100644
--- a/Mage/src/main/java/mage/abilities/keyword/TotemArmorAbility.java
+++ b/Mage/src/main/java/mage/abilities/keyword/TotemArmorAbility.java
@@ -65,7 +65,7 @@ public class TotemArmorAbility extends SimpleStaticAbility {
@Override
public String getRule() {
- return "Totem Armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.)";
+ return "Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.)";
}
}
diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java
index c724734fa89..e6ccc996578 100644
--- a/Mage/src/main/java/mage/filter/StaticFilters.java
+++ b/Mage/src/main/java/mage/filter/StaticFilters.java
@@ -179,7 +179,13 @@ public final class StaticFilters {
static {
FILTER_CONTROLLED_CREATURE.setLockedFilter(true);
+ }
+ public static final FilterControlledCreaturePermanent FILTER_CONTROLLED_CREATURES = new FilterControlledCreaturePermanent("creatures you control");
+
+ static {
+ FILTER_CONTROLLED_CREATURES.setLockedFilter(true);
}
+
public static final FilterControlledCreaturePermanent FILTER_CONTROLLED_A_CREATURE = new FilterControlledCreaturePermanent("a creature you control");
static {