diff --git a/Mage.Sets/src/mage/cards/a/ArchonOfAbsolution.java b/Mage.Sets/src/mage/cards/a/ArchonOfAbsolution.java index e2175f84b8..cb5d9b0504 100644 --- a/Mage.Sets/src/mage/cards/a/ArchonOfAbsolution.java +++ b/Mage.Sets/src/mage/cards/a/ArchonOfAbsolution.java @@ -35,7 +35,7 @@ public final class ArchonOfAbsolution extends CardImpl { // Creatures can't attack you or a planeswalker you control unless their controller pays {1} for each of those creatures. this.addAbility(new SimpleStaticAbility(new CantAttackYouUnlessPayManaAllEffect( new ManaCostsImpl("{1}"), true - ).setText("creatures can't attack you or a planeswalker you control " + + ).setText("creatures can't attack you or planeswalkers you control " + "unless their controller pays {1} for each of those creatures"))); } diff --git a/Mage.Sets/src/mage/cards/b/BurnishedHart.java b/Mage.Sets/src/mage/cards/b/BurnishedHart.java index 3213e577ef..76ad304ba1 100644 --- a/Mage.Sets/src/mage/cards/b/BurnishedHart.java +++ b/Mage.Sets/src/mage/cards/b/BurnishedHart.java @@ -33,7 +33,7 @@ public final class BurnishedHart extends CardImpl { // {3}, Sacrifice Burnished Hart: Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library. Ability ability = new SimpleActivatedAbility( Zone.BATTLEFIELD, - new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LAND), true, true), + new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LANDS), true, true), new GenericManaCost(3)); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java b/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java index cf082db7df..581b78a710 100644 --- a/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java +++ b/Mage.Sets/src/mage/cards/c/CombustibleGearhulk.java @@ -54,7 +54,7 @@ class CombustibleGearhulkEffect extends OneShotEffect { public CombustibleGearhulkEffect() { super(Outcome.AIDontUseIt); - staticText = "target opponent may have you draw three cards. If the player doesn't, put the top three cards of your library into your graveyard, then {this} deals damage to that player equal to the total mana value of those cards"; + staticText = "target opponent may have you draw three cards. If the player doesn't, mill three cards, then {this} deals damage to that player equal to the total mana value of those cards"; } public CombustibleGearhulkEffect(final CombustibleGearhulkEffect effect) { @@ -95,7 +95,6 @@ class CombustibleGearhulkMillAndDamageEffect extends OneShotEffect { public CombustibleGearhulkMillAndDamageEffect() { super(Outcome.Damage); - staticText = "mill three cards, then {this} deals damage to that player equal to the total mana value of those cards."; } public CombustibleGearhulkMillAndDamageEffect(final CombustibleGearhulkMillAndDamageEffect effect) { diff --git a/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java b/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java index a019c18867..720ec792b8 100644 --- a/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java +++ b/Mage.Sets/src/mage/cards/c/ConfiscationCoup.java @@ -28,7 +28,7 @@ import mage.target.targetpointer.FixedTarget; */ public final class ConfiscationCoup extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or artifact"); + private static final FilterPermanent filter = new FilterPermanent("artifact or creature"); static { filter.add(Predicates.or(CardType.CREATURE.getPredicate(), CardType.ARTIFACT.getPredicate())); diff --git a/Mage.Sets/src/mage/cards/c/CranialExtraction.java b/Mage.Sets/src/mage/cards/c/CranialExtraction.java index b6cdb7d070..283ce176dd 100644 --- a/Mage.Sets/src/mage/cards/c/CranialExtraction.java +++ b/Mage.Sets/src/mage/cards/c/CranialExtraction.java @@ -17,6 +17,7 @@ import mage.constants.SubType; import mage.game.Game; import mage.players.Player; import mage.target.TargetPlayer; +import mage.util.CardUtil; /** * @@ -85,6 +86,6 @@ class CranialExtractionEffect extends SearchTargetGraveyardHandLibraryForCardNam @Override public String getText(Mode mode) { - return "Name a nonland card. " + super.getText(mode); + return "Choose a nonland card name. " + CardUtil.getTextWithFirstCharUpperCase(super.getText(mode)); } } diff --git a/Mage.Sets/src/mage/cards/c/Cryptwailing.java b/Mage.Sets/src/mage/cards/c/Cryptwailing.java index 047814b46e..8756057189 100644 --- a/Mage.Sets/src/mage/cards/c/Cryptwailing.java +++ b/Mage.Sets/src/mage/cards/c/Cryptwailing.java @@ -10,7 +10,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.TargetPlayer; import mage.target.common.TargetCardInYourGraveyard; @@ -25,7 +25,7 @@ public final class Cryptwailing extends CardImpl { // {1}, Exile two creature cards from your graveyard: Target player discards a card. Activate this ability only any time you could cast a sorcery. ActivateAsSorceryActivatedAbility ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new GenericManaCost(1)); - ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2,2, new FilterCreatureCard("two creature cards from your graveyard")))); + ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD))); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DefenseOfTheHeart.java b/Mage.Sets/src/mage/cards/d/DefenseOfTheHeart.java index d1ea95f12c..3b65cf7c77 100644 --- a/Mage.Sets/src/mage/cards/d/DefenseOfTheHeart.java +++ b/Mage.Sets/src/mage/cards/d/DefenseOfTheHeart.java @@ -32,7 +32,7 @@ public final class DefenseOfTheHeart extends CardImpl { TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new SacrificeSourceEffect(), TargetController.YOU, false); ability.addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_CREATURE), false, Outcome.PutLandInPlay)); DefenseOfTheHeartCondition contition = new DefenseOfTheHeartCondition(); - this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, contition, "At the beginning of your upkeep, if an opponent controls three or more creatures, sacrifice {this}, search your library for up to two creature cards, and put those cards onto the battlefield. Then shuffle")); + this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, contition, "At the beginning of your upkeep, if an opponent controls three or more creatures, sacrifice {this}, search your library for up to two creature cards, put those cards onto the battlefield, then shuffle")); } diff --git a/Mage.Sets/src/mage/cards/e/EternalDragon.java b/Mage.Sets/src/mage/cards/e/EternalDragon.java index da46b16e53..a2d68b9d61 100644 --- a/Mage.Sets/src/mage/cards/e/EternalDragon.java +++ b/Mage.Sets/src/mage/cards/e/EternalDragon.java @@ -7,6 +7,7 @@ import mage.abilities.Ability; import mage.abilities.condition.common.IsStepCondition; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.decorator.ConditionalActivatedAbility; +import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.PlainscyclingAbility; @@ -36,7 +37,7 @@ public final class EternalDragon extends CardImpl { // {3}{W}{W}: Return Eternal Dragon from your graveyard to your hand. Activate this ability only during your upkeep. Ability ability = new ConditionalActivatedAbility(Zone.GRAVEYARD, - new ReturnToHandSourceEffect(), + new ReturnSourceFromGraveyardToHandEffect(), new ManaCostsImpl("{3}{W}{W}"), new IsStepCondition(PhaseStep.UPKEEP), null diff --git a/Mage.Sets/src/mage/cards/f/Fabricate.java b/Mage.Sets/src/mage/cards/f/Fabricate.java index ca18d95f0c..b3daae45b9 100644 --- a/Mage.Sets/src/mage/cards/f/Fabricate.java +++ b/Mage.Sets/src/mage/cards/f/Fabricate.java @@ -1,32 +1,26 @@ - package mage.cards.f; -import java.util.UUID; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** - * * @author Loki */ public final class Fabricate extends CardImpl { - private static final FilterCard filter = new FilterCard("artifact"); - - static { - filter.add(CardType.ARTIFACT.getPredicate()); - } - public Fabricate(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{U}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}"); // Search your library for an artifact card, reveal it, and put it into your hand. Then shuffle your library. - this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, filter), true)); + this.getSpellAbility().addEffect(new SearchLibraryPutInHandEffect( + new TargetCardInLibrary(1, StaticFilters.FILTER_CARD_ARTIFACT), true + )); } private Fabricate(final Fabricate card) { diff --git a/Mage.Sets/src/mage/cards/f/FeastingTrollKing.java b/Mage.Sets/src/mage/cards/f/FeastingTrollKing.java index 5e021705ba..a37e9cf881 100644 --- a/Mage.Sets/src/mage/cards/f/FeastingTrollKing.java +++ b/Mage.Sets/src/mage/cards/f/FeastingTrollKing.java @@ -55,7 +55,7 @@ public final class FeastingTrollKing extends CardImpl { // Sacrifice three Foods: Return Feasting Troll King from your graveyard to the battlefield. Activate this ability only during your turn. this.addAbility(new ActivateIfConditionActivatedAbility( Zone.GRAVEYARD, - new ReturnSourceFromGraveyardToBattlefieldEffect(), + new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), new SacrificeTargetCost(new TargetControlledPermanent(3, filter)), MyTurnCondition.instance ).addHint(MyTurnHint.instance)); diff --git a/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java b/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java index 8c016dfe09..d7c2388295 100644 --- a/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java +++ b/Mage.Sets/src/mage/cards/g/GovernTheGuildless.java @@ -30,7 +30,7 @@ public final class GovernTheGuildless extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}"); // Gain control of target monocolored creature. - this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfGame)); + this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.Custom)); this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); // Forecast - {1}{U}, Reveal Govern the Guildless from your hand: Target creature becomes the color or colors of your choice until end of turn. diff --git a/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java b/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java index 7bbb6d6ac0..74ea14fa65 100644 --- a/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java +++ b/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java @@ -18,7 +18,7 @@ import mage.target.common.TargetCardInLibrary; */ public final class HeliodsPilgrim extends CardImpl { - private static final FilterCard filter = new FilterCard("Aura card"); + private static final FilterCard filter = new FilterCard("an Aura card"); static { filter.add(CardType.ENCHANTMENT.getPredicate()); @@ -34,7 +34,7 @@ public final class HeliodsPilgrim extends CardImpl { this.toughness = new MageInt(2); // When Heliod's Pilgrim enters the battlefield, you may search your library for an Aura card, reveal it, put it into your hand, then shuffle your library. - this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, false), true)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true, true), true)); } diff --git a/Mage.Sets/src/mage/cards/h/HellsCaretaker.java b/Mage.Sets/src/mage/cards/h/HellsCaretaker.java index 7de49f9906..deb906c923 100644 --- a/Mage.Sets/src/mage/cards/h/HellsCaretaker.java +++ b/Mage.Sets/src/mage/cards/h/HellsCaretaker.java @@ -34,7 +34,7 @@ public final class HellsCaretaker extends CardImpl { // {tap}, Sacrifice a creature: Return target creature card from your graveyard to the battlefield. Activate this ability only during your upkeep. Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, - new ReturnFromGraveyardToBattlefieldTargetEffect(), + new ReturnFromGraveyardToBattlefieldTargetEffect(false, false), new TapSourceCost(), new IsStepCondition(PhaseStep.UPKEEP), null); ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT))); diff --git a/Mage.Sets/src/mage/cards/i/InameDeathAspect.java b/Mage.Sets/src/mage/cards/i/InameDeathAspect.java index 79d5057b9b..14b22005a8 100644 --- a/Mage.Sets/src/mage/cards/i/InameDeathAspect.java +++ b/Mage.Sets/src/mage/cards/i/InameDeathAspect.java @@ -51,7 +51,7 @@ class InameDeathAspectEffect extends SearchEffect { public InameDeathAspectEffect() { super(new TargetCardInLibrary(0, Integer.MAX_VALUE, filter), Outcome.Neutral); - staticText = "search your library for any number of Spirit cards and put them into your graveyard. If you do, shuffle"; + staticText = "search your library for any number of Spirit cards, put them into your graveyard, then shuffle"; } public InameDeathAspectEffect(final InameDeathAspectEffect effect) { diff --git a/Mage.Sets/src/mage/cards/i/InventorsFair.java b/Mage.Sets/src/mage/cards/i/InventorsFair.java index 550052600d..1784e3503a 100644 --- a/Mage.Sets/src/mage/cards/i/InventorsFair.java +++ b/Mage.Sets/src/mage/cards/i/InventorsFair.java @@ -53,7 +53,6 @@ public final class InventorsFair extends CardImpl { new GenericManaCost(4), MetalcraftCondition.instance); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.setAbilityWord(AbilityWord.METALCRAFT); ability.addHint(MetalcraftHint.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/j/Juxtapose.java b/Mage.Sets/src/mage/cards/j/Juxtapose.java index 7ca7671864..236ee8147d 100644 --- a/Mage.Sets/src/mage/cards/j/Juxtapose.java +++ b/Mage.Sets/src/mage/cards/j/Juxtapose.java @@ -30,7 +30,7 @@ public final class Juxtapose extends CardImpl { // You and target player exchange control of the creature you each control with the highest converted mana cost. Then exchange control of artifacts the same way. If two or more permanents a player controls are tied for highest cost, their controller chooses one of them. this.getSpellAbility().addEffect(new JuxtaposeEffect(StaticFilters.FILTER_PERMANENT_CREATURE, "You and target player exchange control of the creature you each control with the highest mana value")); - this.getSpellAbility().addEffect(new JuxtaposeEffect(new FilterArtifactPermanent(), "Then exchange control of artifacts the same way. If two or more permanents a player controls are tied for highest cost, their controller chooses one of them")); + this.getSpellAbility().addEffect(new JuxtaposeEffect(new FilterArtifactPermanent(), "Then exchange control of artifacts the same way. If two or more permanents a player controls are tied for highest, their controller chooses one of them")); this.getSpellAbility().addTarget(new TargetPlayer()); } diff --git a/Mage.Sets/src/mage/cards/k/KodamasReach.java b/Mage.Sets/src/mage/cards/k/KodamasReach.java index 1efd3ed2db..9ace6ccedc 100644 --- a/Mage.Sets/src/mage/cards/k/KodamasReach.java +++ b/Mage.Sets/src/mage/cards/k/KodamasReach.java @@ -47,7 +47,8 @@ class KodamasReachEffect extends OneShotEffect { public KodamasReachEffect() { super(Outcome.PutLandInPlay); - staticText = "Search your library for up to two basic land cards, reveal those cards, and put one onto the battlefield tapped and the other into your hand. Then shuffle"; + staticText = "search your library for up to two basic land cards, reveal those cards, " + + "put one onto the battlefield tapped and the other into your hand, then shuffle"; } public KodamasReachEffect(final KodamasReachEffect effect) { diff --git a/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java b/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java index 5ccf70cad9..cd16582fde 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java +++ b/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java @@ -1,6 +1,5 @@ package mage.cards.l; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; @@ -11,7 +10,10 @@ import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffec import mage.abilities.effects.common.discard.DiscardEachPlayerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.Predicates; @@ -21,8 +23,9 @@ import mage.game.command.emblems.LilianaDefiantNecromancerEmblem; import mage.target.common.TargetCardInYourGraveyard; import mage.target.targetadjustment.TargetAdjuster; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class LilianaDefiantNecromancer extends CardImpl { @@ -47,7 +50,7 @@ public final class LilianaDefiantNecromancer extends CardImpl { this.addAbility(new LoyaltyAbility(new DiscardEachPlayerEffect(1, false), 2)); // -X: Return target nonlegendary creature with converted mana cost X from your graveyard to the battlefield. - Ability ability = new LoyaltyAbility(new ReturnFromGraveyardToBattlefieldTargetEffect()); + Ability ability = new LoyaltyAbility(new ReturnFromGraveyardToBattlefieldTargetEffect(false, false)); ability.addTarget(new TargetCardInYourGraveyard(filter)); ability.setTargetAdjuster(LilianaDefiantNecromancerAdjuster.instance); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/l/LostLegacy.java b/Mage.Sets/src/mage/cards/l/LostLegacy.java index 33b2d42aab..7cbd30a66b 100644 --- a/Mage.Sets/src/mage/cards/l/LostLegacy.java +++ b/Mage.Sets/src/mage/cards/l/LostLegacy.java @@ -75,6 +75,6 @@ class LostLegacyEffect extends SearchTargetGraveyardHandLibraryForCardNameAndExi @Override public String getText(Mode mode) { - return "Search target player's graveyard, hand and library for any number of cards with that name and exile them. That player shuffles, then draws a card for each card exiled from hand this way"; + return "Search target player's graveyard, hand, and library for any number of cards with that name and exile them. That player shuffles, then draws a card for each card exiled from their hand this way"; } } diff --git a/Mage.Sets/src/mage/cards/m/Mindblaze.java b/Mage.Sets/src/mage/cards/m/Mindblaze.java index d73ef09194..c332bca81a 100644 --- a/Mage.Sets/src/mage/cards/m/Mindblaze.java +++ b/Mage.Sets/src/mage/cards/m/Mindblaze.java @@ -53,7 +53,7 @@ class MindblazeEffect extends OneShotEffect { MindblazeEffect() { super(Outcome.Damage); - staticText = "Name a nonland card and choose a number greater than 0. Target player reveals their library. If that library contains exactly the chosen number of the named card, {this} deals 8 damage to that player. Then that player shuffles"; + staticText = "Choose a nonland card name and a number greater than 0. Target player reveals their library. If that library contains exactly the chosen number of cards with the chosen name, {this} deals 8 damage to that player. Then that player shuffles"; } MindblazeEffect(final MindblazeEffect effect) { diff --git a/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java b/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java index 7b7f168e90..c7bc45c34d 100644 --- a/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java +++ b/Mage.Sets/src/mage/cards/m/MomirVigSimicVisionary.java @@ -51,7 +51,7 @@ public final class MomirVigSimicVisionary extends CardImpl { // Whenever you cast a green creature spell, you may search your library for a creature card and reveal it. If you do, shuffle your library and put that card on top of it. Effect effect = new SearchLibraryPutOnLibraryEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_CREATURE), true, true); - effect.setText("you may search your library for a creature card and reveal it. If you do, shuffle and put that card on top of it"); + effect.setText("search your library for a creature card, reveal it, then shuffle and put that card on top"); this.addAbility(new SpellCastControllerTriggeredAbility(effect, filter, true)); // Whenever you cast a blue creature spell, reveal the top card of your library. If it's a creature card, put that card into your hand. diff --git a/Mage.Sets/src/mage/cards/m/MuzzioVisionaryArchitect.java b/Mage.Sets/src/mage/cards/m/MuzzioVisionaryArchitect.java index b1dc33560b..20944c90d9 100644 --- a/Mage.Sets/src/mage/cards/m/MuzzioVisionaryArchitect.java +++ b/Mage.Sets/src/mage/cards/m/MuzzioVisionaryArchitect.java @@ -56,7 +56,7 @@ class MuzzioVisionaryArchitectEffect extends OneShotEffect { public MuzzioVisionaryArchitectEffect() { super(Outcome.Benefit); - this.staticText = "Look at the top X cards of your library, where X is the highest mana value among artifacts you control. You may reveal an artifact card from among them and put it onto the battlefield. Put the rest on the bottom of your library in any order"; + this.staticText = "look at the top X cards of your library, where X is the highest mana value among artifacts you control. You may put an artifact card from among them onto the battlefield. Put the rest on the bottom of your library in any order"; } public MuzzioVisionaryArchitectEffect(final MuzzioVisionaryArchitectEffect effect) { diff --git a/Mage.Sets/src/mage/cards/n/NightDealings.java b/Mage.Sets/src/mage/cards/n/NightDealings.java index 515132f3f0..f130b49c6f 100644 --- a/Mage.Sets/src/mage/cards/n/NightDealings.java +++ b/Mage.Sets/src/mage/cards/n/NightDealings.java @@ -125,7 +125,7 @@ public final class NightDealings extends CardImpl { private NightDealingsSearchEffect() { super(Outcome.DrawCard); this.staticText = "Search your library for a nonland card with mana value X, " + - "reveal it, and put it into your hand. Then shuffle"; + "reveal it, put it into your hand, then shuffle"; } private NightDealingsSearchEffect(final NightDealingsSearchEffect effect) { diff --git a/Mage.Sets/src/mage/cards/o/OrdealOfNylea.java b/Mage.Sets/src/mage/cards/o/OrdealOfNylea.java index 910b4d6d20..387a358673 100644 --- a/Mage.Sets/src/mage/cards/o/OrdealOfNylea.java +++ b/Mage.Sets/src/mage/cards/o/OrdealOfNylea.java @@ -49,7 +49,7 @@ public final class OrdealOfNylea extends CardImpl { this.addAbility(ability); // When you sacrifice Ordeal of Nylea, search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library. ability = new SacrificeSourceTriggeredAbility( - new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LAND),true, true),false); + new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0,2, StaticFilters.FILTER_CARD_BASIC_LANDS),true, true),false); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OrimsThunder.java b/Mage.Sets/src/mage/cards/o/OrimsThunder.java index e686cb5036..2700155061 100644 --- a/Mage.Sets/src/mage/cards/o/OrimsThunder.java +++ b/Mage.Sets/src/mage/cards/o/OrimsThunder.java @@ -37,7 +37,7 @@ public final class OrimsThunder extends CardImpl { this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new OrimsThunderEffect2(), KickedCondition.instance, - "If Orim's Thunder was kicked, it deals damage equal to that permanent's mana value to target creature") + "If this spell was kicked, it deals damage equal to that permanent's mana value to target creature") ); this.getSpellAbility().setTargetAdjuster(OrimsThunderAdjuster.instance); } diff --git a/Mage.Sets/src/mage/cards/p/ProclamationOfRebirth.java b/Mage.Sets/src/mage/cards/p/ProclamationOfRebirth.java index dcf8e71930..9bf8546663 100644 --- a/Mage.Sets/src/mage/cards/p/ProclamationOfRebirth.java +++ b/Mage.Sets/src/mage/cards/p/ProclamationOfRebirth.java @@ -1,7 +1,5 @@ - package mage.cards.p; -import java.util.UUID; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.keyword.ForecastAbility; @@ -13,24 +11,28 @@ import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.target.common.TargetCardInYourGraveyard; +import java.util.UUID; + /** - * * @author Plopman */ public final class ProclamationOfRebirth extends CardImpl { - private static final FilterCreatureCard filter1 = new FilterCreatureCard("creature card with mana value {1} or less from your graveyard"); - private static final FilterCreatureCard filter3 = new FilterCreatureCard("creature cards with mana value {1} or less from your graveyard"); + private static final FilterCreatureCard filter1 = new FilterCreatureCard("creature card with mana value 1 or less from your graveyard"); + private static final FilterCreatureCard filter3 = new FilterCreatureCard("creature cards with mana value 1 or less from your graveyard"); + static { filter1.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 2)); filter3.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 2)); } + public ProclamationOfRebirth(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}"); // Return up to three target creature cards with converted mana cost 1 or less from your graveyard to the battlefield. - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0,3,filter3)); - this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 3, filter3)); + this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect(false, false)); + // Forecast - {5}{W}, Reveal Proclamation of Rebirth from your hand: Return target creature card with converted mana cost 1 or less from your graveyard to the battlefield. ForecastAbility ability = new ForecastAbility(new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl("{5}{W}")); ability.addTarget(new TargetCardInYourGraveyard(filter1)); diff --git a/Mage.Sets/src/mage/cards/p/ProteanHulk.java b/Mage.Sets/src/mage/cards/p/ProteanHulk.java index 7e4f2aa49f..59cf04d5c0 100644 --- a/Mage.Sets/src/mage/cards/p/ProteanHulk.java +++ b/Mage.Sets/src/mage/cards/p/ProteanHulk.java @@ -45,7 +45,7 @@ public final class ProteanHulk extends CardImpl { class ProteanHulkTarget extends TargetCardInLibrary { private static final FilterCard filter - = new FilterCreatureCard("any number of creature cards with total mana value 6 or less"); + = new FilterCreatureCard("creature cards with total mana value 6 or less"); ProteanHulkTarget() { super(0, Integer.MAX_VALUE, filter); diff --git a/Mage.Sets/src/mage/cards/r/Reanimate.java b/Mage.Sets/src/mage/cards/r/Reanimate.java index 8b136ada50..c4bc8ba2ee 100644 --- a/Mage.Sets/src/mage/cards/r/Reanimate.java +++ b/Mage.Sets/src/mage/cards/r/Reanimate.java @@ -1,7 +1,5 @@ - package mage.cards.r; -import java.util.UUID; import mage.abilities.dynamicvalue.common.TargetManaValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; @@ -9,25 +7,26 @@ import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffec import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInGraveyard; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class Reanimate extends CardImpl { public Reanimate(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}"); // Put target creature card from a graveyard onto the battlefield under your control. You lose life equal to its converted mana cost. - getSpellAbility().addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); - getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); + getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE)); + getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect() + .setText("put target creature card from a graveyard onto the battlefield under your control")); Effect effect = new LoseLifeSourceControllerEffect(TargetManaValue.instance); effect.setText("You lose life equal to its mana value"); - getSpellAbility().addEffect(effect); + getSpellAbility().addEffect(effect); } private Reanimate(final Reanimate card) { diff --git a/Mage.Sets/src/mage/cards/r/RecurringNightmare.java b/Mage.Sets/src/mage/cards/r/RecurringNightmare.java index b262f6c2d9..6a82489060 100644 --- a/Mage.Sets/src/mage/cards/r/RecurringNightmare.java +++ b/Mage.Sets/src/mage/cards/r/RecurringNightmare.java @@ -26,8 +26,8 @@ public final class RecurringNightmare extends CardImpl { // Sacrifice a creature, Return Recurring Nightmare to its owner's hand: Return target creature card from your graveyard to the battlefield. Activate this ability only any time you could cast a sorcery. Ability ability = new ActivateAsSorceryActivatedAbility( Zone.BATTLEFIELD, - new ReturnFromGraveyardToBattlefieldTargetEffect(), - new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_CREATURE)) + new ReturnFromGraveyardToBattlefieldTargetEffect(false, false), + new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT)) ); ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); ability.addCost(new ReturnToHandFromBattlefieldSourceCost()); diff --git a/Mage.Sets/src/mage/cards/r/Repeal.java b/Mage.Sets/src/mage/cards/r/Repeal.java index c62b6f84fd..341689d768 100644 --- a/Mage.Sets/src/mage/cards/r/Repeal.java +++ b/Mage.Sets/src/mage/cards/r/Repeal.java @@ -30,7 +30,7 @@ public final class Repeal extends CardImpl { this.getSpellAbility().setTargetAdjuster(RepealAdjuster.instance); // Draw a card. - this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); } private Repeal(final Repeal card) { diff --git a/Mage.Sets/src/mage/cards/r/Reweave.java b/Mage.Sets/src/mage/cards/r/Reweave.java index 7093fd0723..9ee0a52621 100644 --- a/Mage.Sets/src/mage/cards/r/Reweave.java +++ b/Mage.Sets/src/mage/cards/r/Reweave.java @@ -54,7 +54,7 @@ class ReweaveEffect extends OneShotEffect { public ReweaveEffect() { super(Outcome.Detriment); - this.staticText = "Target permanent's controller sacrifices it. If they do, that player reveals cards from the top of their library until they reveal a permanent card that shares a card type with the sacrificed permanent, puts that card onto the battlefield, then shuffles"; + this.staticText = "Target permanent's controller sacrifices it. If the player does, they reveal cards from the top of their library until they reveal a permanent card that shares a card type with the sacrificed permanent, put that card onto the battlefield, then shuffle"; } public ReweaveEffect(final ReweaveEffect effect) { diff --git a/Mage.Sets/src/mage/cards/s/SiftThroughSands.java b/Mage.Sets/src/mage/cards/s/SiftThroughSands.java index cdeb45edcd..b26ca9b1f0 100644 --- a/Mage.Sets/src/mage/cards/s/SiftThroughSands.java +++ b/Mage.Sets/src/mage/cards/s/SiftThroughSands.java @@ -30,7 +30,7 @@ import java.util.UUID; */ public final class SiftThroughSands extends CardImpl { - private static final String rule = "If you've cast a spell named Peer Through Depths and a spell named Reach Through Mists this turn, you may search your library for a card named The Unspeakable, put it onto the battlefield, then shuffle"; + private static final String rule = "
If you've cast a spell named Peer Through Depths and a spell named Reach Through Mists this turn, you may search your library for a card named The Unspeakable, put it onto the battlefield, then shuffle"; private static final FilterCreatureCard filter = new FilterCreatureCard("a card named The Unspeakable"); static { diff --git a/Mage.Sets/src/mage/cards/s/SilkwingScout.java b/Mage.Sets/src/mage/cards/s/SilkwingScout.java index 45a547d946..5ade8a775f 100644 --- a/Mage.Sets/src/mage/cards/s/SilkwingScout.java +++ b/Mage.Sets/src/mage/cards/s/SilkwingScout.java @@ -36,7 +36,7 @@ public final class SilkwingScout extends CardImpl { // {G}, Sacrifice Silkwing Scout: Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), true, true), + new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), new ManaCostsImpl("{G}")); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/t/TheCauldronOfEternity.java b/Mage.Sets/src/mage/cards/t/TheCauldronOfEternity.java index a1d627c1de..2aca28116c 100644 --- a/Mage.Sets/src/mage/cards/t/TheCauldronOfEternity.java +++ b/Mage.Sets/src/mage/cards/t/TheCauldronOfEternity.java @@ -48,7 +48,7 @@ public final class TheCauldronOfEternity extends CardImpl { // {2}{B}, {T}, Pay 2 life: Return target creature card from your graveyard to the battlefield. Activate this ability only any time you could cast a sorcery. ability = new ActivateAsSorceryActivatedAbility( - Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl("{2}{B}") + Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(false, false), new ManaCostsImpl("{2}{B}") ); ability.addCost(new TapSourceCost()); ability.addCost(new PayLifeCost(2)); diff --git a/Mage.Sets/src/mage/cards/t/ThiefOfHope.java b/Mage.Sets/src/mage/cards/t/ThiefOfHope.java index e6f5aa3844..c86a9916e4 100644 --- a/Mage.Sets/src/mage/cards/t/ThiefOfHope.java +++ b/Mage.Sets/src/mage/cards/t/ThiefOfHope.java @@ -28,7 +28,7 @@ public final class ThiefOfHope extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); Ability ability = new SpellCastControllerTriggeredAbility(new LoseLifeTargetEffect(1), StaticFilters.SPIRIT_OR_ARCANE_CARD, false); - ability.addEffect(new GainLifeEffect(1)); + ability.addEffect(new GainLifeEffect(1).concatBy("and")); ability.addTarget(new TargetOpponent()); this.addAbility(ability); this.addAbility(new SoulshiftAbility(2)); diff --git a/Mage.Sets/src/mage/cards/u/Unearth.java b/Mage.Sets/src/mage/cards/u/Unearth.java index a764d042f4..3ef2db8354 100644 --- a/Mage.Sets/src/mage/cards/u/Unearth.java +++ b/Mage.Sets/src/mage/cards/u/Unearth.java @@ -31,7 +31,7 @@ public final class Unearth extends CardImpl { // Return target creature card with converted mana cost 3 or less from your graveyard to the battlefield. - this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); + this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect(false, false)); this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(filter)); // Cycling {2} diff --git a/Mage.Sets/src/mage/cards/w/WhipOfErebos.java b/Mage.Sets/src/mage/cards/w/WhipOfErebos.java index 820ee74781..a33e03bb00 100644 --- a/Mage.Sets/src/mage/cards/w/WhipOfErebos.java +++ b/Mage.Sets/src/mage/cards/w/WhipOfErebos.java @@ -42,7 +42,7 @@ public final class WhipOfErebos extends CardImpl { // Creatures you control have lifelink. this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( LifelinkAbility.getInstance(), Duration.WhileOnBattlefield, - StaticFilters.FILTER_CONTROLLED_CREATURES + StaticFilters.FILTER_PERMANENT_CREATURES ))); // {2}{B}{B}, {T}: Return target creature card from your graveyard to the battlefield. diff --git a/Mage/src/main/java/mage/abilities/common/LimitedTimesPerTurnActivatedAbility.java b/Mage/src/main/java/mage/abilities/common/LimitedTimesPerTurnActivatedAbility.java index 5692c5c6a2..8f43b20284 100644 --- a/Mage/src/main/java/mage/abilities/common/LimitedTimesPerTurnActivatedAbility.java +++ b/Mage/src/main/java/mage/abilities/common/LimitedTimesPerTurnActivatedAbility.java @@ -44,7 +44,7 @@ public class LimitedTimesPerTurnActivatedAbility extends ActivatedAbilityImpl { public String getRule() { StringBuilder sb = new StringBuilder(super.getRule()).append(" Activate "); if (condition != null) { - sb.append("only if ").append(condition.toString()).append(" and "); + sb.append("only ").append(condition.toString()).append(" and "); } if (getTiming() == TimingRule.SORCERY) { sb.append("only as a sorcery and "); diff --git a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardWithLessMVPutIntoPlay.java b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardWithLessMVPutIntoPlay.java index 9740879cba..bbca957698 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardWithLessMVPutIntoPlay.java +++ b/Mage/src/main/java/mage/abilities/effects/common/search/SearchLibraryGraveyardWithLessMVPutIntoPlay.java @@ -30,7 +30,7 @@ public class SearchLibraryGraveyardWithLessMVPutIntoPlay extends OneShotEffect { public SearchLibraryGraveyardWithLessMVPutIntoPlay(FilterCard filter) { super(Outcome.PutCreatureInPlay); this.filter = filter; - staticText = "Search your library or graveyard for a " + filter.getMessage() + " with mana value X or less, put it onto the battlefield, then shuffle"; + staticText = "Search your library and/or graveyard for a " + filter.getMessage() + " with mana value X or less, put it onto the battlefield. If you search your library this way, shuffle."; } public SearchLibraryGraveyardWithLessMVPutIntoPlay(final SearchLibraryGraveyardWithLessMVPutIntoPlay effect) {