diff --git a/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java b/Mage.Sets/src/mage/cards/b/BrassTalonChimera.java index fc3b22aba5..7620727df5 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 9d678be515..b2c31e6112 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 55ee01bf79..941f15b0e4 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 <i>(This cost is paid as attackers are declared.)</i>"; + staticText = "{this} can't attack unless you sacrifice a land. <i>(This cost is paid as attackers are declared.)</i>"; } ExaltedDragonCostToAttackBlockEffect(ExaltedDragonCostToAttackBlockEffect effect) { diff --git a/Mage.Sets/src/mage/cards/k/KaerveksSpite.java b/Mage.Sets/src/mage/cards/k/KaerveksSpite.java index 349fa1ccf8..8602a8c41b 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 cf79670e67..7f5d4b1cb2 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 <i>(This cost is paid as attackers are declared.)</i>"; + staticText = "{this} can't attack unless you sacrifice two Islands. <i>(This cost is paid as attackers are declared.)</i>"; } LeviathanCostToAttackBlockEffect(LeviathanCostToAttackBlockEffect effect) { diff --git a/Mage.Sets/src/mage/cards/l/LyevDecree.java b/Mage.Sets/src/mage/cards/l/LyevDecree.java index c332e4bf09..70326ded26 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 21611866db..09e408b51b 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 05df6afc78..9b3e812798 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 8c36e4d18c..7846832cbf 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 0153958df4..1d1f92e0b4 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 77edaee312..e9c03b254c 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 a0219501fb..d844803f73 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 993422a0d4..6bb2ce18c5 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 e26affa441..081cd81b8c 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 6164d9c2de..86f10acf76 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 77ebb1377d..0a378703ab 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 08ca0c506f..ac2bee4e1d 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 95d6d6e524..6b371b0dc4 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 293ad9adb2..a6cf1ce515 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 c22dde451a..7a12b66426 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 <i>(Damage dealt by this creature also causes you to gain that much life.)</i>"; + return "lifelink <i>(Damage dealt by this creature also causes you to gain that much life.)</i>"; } @Override diff --git a/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java b/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java index 5f1b480406..46471af292 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 604f164504..f31280d1bf 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 <i>(If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.)</i>"; + return "Totem armor <i>(If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.)</i>"; } } diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index c724734fa8..e6ccc99657 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 {