diff --git a/Mage.Sets/src/mage/cards/a/AcrobaticManeuver.java b/Mage.Sets/src/mage/cards/a/AcrobaticManeuver.java index c505455aa14..2bb0e021d22 100644 --- a/Mage.Sets/src/mage/cards/a/AcrobaticManeuver.java +++ b/Mage.Sets/src/mage/cards/a/AcrobaticManeuver.java @@ -22,7 +22,7 @@ public final class AcrobaticManeuver extends CardImpl { // Exile target creature you control, then return that card to the battlefield under its owner's control. this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); this.getSpellAbility().addEffect(new ExileTargetForSourceEffect()); - this.getSpellAbility().addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false).concatBy(",")); + this.getSpellAbility().addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/a/AminatouTheFateshifter.java b/Mage.Sets/src/mage/cards/a/AminatouTheFateshifter.java index 6d346dc5f56..7fcc5223997 100644 --- a/Mage.Sets/src/mage/cards/a/AminatouTheFateshifter.java +++ b/Mage.Sets/src/mage/cards/a/AminatouTheFateshifter.java @@ -33,7 +33,7 @@ import java.util.UUID; */ public class AminatouTheFateshifter extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("permanent you own"); + private static final FilterPermanent filter = new FilterPermanent("another target permanent you own"); static { filter.add(TargetController.YOU.getOwnerPredicate()); diff --git a/Mage.Sets/src/mage/cards/d/Displace.java b/Mage.Sets/src/mage/cards/d/Displace.java index 7173f443fa3..eb1a9896c3f 100644 --- a/Mage.Sets/src/mage/cards/d/Displace.java +++ b/Mage.Sets/src/mage/cards/d/Displace.java @@ -23,7 +23,7 @@ public final class Displace extends CardImpl { this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent(0, 2, StaticFilters.FILTER_CONTROLLED_CREATURES, false)); this.getSpellAbility().addEffect(new ExileTargetForSourceEffect()); this.getSpellAbility().addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false) - .withReturnNames("those cards", "their owner's").concatBy(", then")); + .withReturnNames("those cards", "their owner's")); } private Displace(final Displace card) { diff --git a/Mage.Sets/src/mage/cards/d/DisplacerKitten.java b/Mage.Sets/src/mage/cards/d/DisplacerKitten.java index cbf2b198ad5..9331f16d3c0 100644 --- a/Mage.Sets/src/mage/cards/d/DisplacerKitten.java +++ b/Mage.Sets/src/mage/cards/d/DisplacerKitten.java @@ -9,7 +9,10 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; +import mage.constants.TargetController; +import mage.filter.FilterPermanent; import mage.filter.StaticFilters; +import mage.filter.common.FilterNonlandPermanent; import mage.target.TargetPermanent; import java.util.UUID; @@ -19,6 +22,12 @@ import java.util.UUID; */ public final class DisplacerKitten extends CardImpl { + private static final FilterPermanent filter = new FilterNonlandPermanent("nonland permanent you control"); + + static { + filter.add(TargetController.YOU.getControllerPredicate()); + } + public DisplacerKitten(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}"); @@ -32,9 +41,7 @@ public final class DisplacerKitten extends CardImpl { new ExileTargetForSourceEffect(), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false ); ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false)); - ability.addTarget(new TargetPermanent( - 0, 1, StaticFilters.FILTER_CONTROLLED_PERMANENT_NON_LAND - )); + ability.addTarget(new TargetPermanent(0, 1, filter)); this.addAbility(ability.withFlavorWord("Avoidance")); } diff --git a/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java b/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java index 13d0ab9db8f..70878cdb5f2 100644 --- a/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java +++ b/Mage.Sets/src/mage/cards/e/EldraziDisplacer.java @@ -41,7 +41,7 @@ public final class EldraziDisplacer extends CardImpl { // {2}{C}: Exile another target creature, then return it to the battlefield tapped under its owner's control. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetForSourceEffect(), new ManaCostsImpl<>("{2}{C}")); ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(true, false) - .withReturnNames("it", "its owner's").concatBy(", then")); + .withReturnNames("it", "its owner's")); ability.addTarget(new TargetCreaturePermanent(FILTER)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FelidarGuardian.java b/Mage.Sets/src/mage/cards/f/FelidarGuardian.java index 5bb596028b0..155d6d53fa7 100644 --- a/Mage.Sets/src/mage/cards/f/FelidarGuardian.java +++ b/Mage.Sets/src/mage/cards/f/FelidarGuardian.java @@ -36,7 +36,7 @@ public final class FelidarGuardian extends CardImpl { // When Felidar Guardian enters the battlefield, you may exile another target permanent you control, then return that card to the battlefield under its owner's control. Ability ability = new EntersBattlefieldTriggeredAbility(new ExileTargetForSourceEffect(), true); - ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false).concatBy(",")); + ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false)); ability.addTarget(new TargetControlledPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/IllusionistsStratagem.java b/Mage.Sets/src/mage/cards/i/IllusionistsStratagem.java index 179ced6e00a..73b1dce4eb8 100644 --- a/Mage.Sets/src/mage/cards/i/IllusionistsStratagem.java +++ b/Mage.Sets/src/mage/cards/i/IllusionistsStratagem.java @@ -22,7 +22,7 @@ public final class IllusionistsStratagem extends CardImpl { // Exile up to two target creatures you control, then return those cards to the battlefield under their owner's control. this.getSpellAbility().addEffect(new ExileTargetForSourceEffect()); this.getSpellAbility().addEffect(new ReturnToBattlefieldUnderYourControlTargetEffect(false) - .withReturnNames("those cards", "their owner's").concatBy(", then")); + .withReturnNames("those cards", "their owner's")); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent(0, 2, StaticFilters.FILTER_CONTROLLED_CREATURES, false)); diff --git a/Mage.Sets/src/mage/cards/r/RuinGhost.java b/Mage.Sets/src/mage/cards/r/RuinGhost.java index 9fc803b4925..2b64d866d96 100644 --- a/Mage.Sets/src/mage/cards/r/RuinGhost.java +++ b/Mage.Sets/src/mage/cards/r/RuinGhost.java @@ -32,7 +32,7 @@ public final class RuinGhost extends CardImpl { // {W}, {T}: Exile target land you control, then return it to the battlefield under your control. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetForSourceEffect(), new ManaCostsImpl("{W}")); ability.addCost(new TapSourceCost()); - ability.addEffect(new ReturnToBattlefieldUnderYourControlTargetEffect(false).concatBy(", then")); + ability.addEffect(new ReturnToBattlefieldUnderYourControlTargetEffect(false)); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SacredGround.java b/Mage.Sets/src/mage/cards/s/SacredGround.java index 6e14051323d..6b2a7d21948 100644 --- a/Mage.Sets/src/mage/cards/s/SacredGround.java +++ b/Mage.Sets/src/mage/cards/s/SacredGround.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlTargetEffect; import mage.cards.CardImpl; @@ -14,8 +12,9 @@ import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; import mage.target.targetpointer.FixedTarget; +import java.util.UUID; + /** - * * @author dustinconrad */ public final class SacredGround extends CardImpl { @@ -73,7 +72,7 @@ class SacredGroundTriggeredAbility extends TriggeredAbilityImpl { } @Override - public String getTriggerPhrase() { - return "Whenever a spell or ability an opponent controls causes a land to be put into your graveyard from the battlefield, " ; + public String getRule() { + return "Whenever a spell or ability an opponent controls causes a land to be put into your graveyard from the battlefield, return that card to the battlefield."; } } diff --git a/Mage.Sets/src/mage/cards/s/SoulCollector.java b/Mage.Sets/src/mage/cards/s/SoulCollector.java index a59acd0df5e..ff07dbc4f0e 100644 --- a/Mage.Sets/src/mage/cards/s/SoulCollector.java +++ b/Mage.Sets/src/mage/cards/s/SoulCollector.java @@ -28,7 +28,7 @@ public final class SoulCollector extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever a creature dealt damage by Soul Collector this turn dies, return that card to the battlefield under your control. - this.addAbility(new DealtDamageAndDiedTriggeredAbility(new ReturnToBattlefieldUnderYourControlTargetEffect())); + this.addAbility(new DealtDamageAndDiedTriggeredAbility(new ReturnToBattlefieldUnderYourControlTargetEffect().setText("return that card to the battlefield under your control"))); // Morph {B}{B}{B} this.addAbility(new MorphAbility(new ManaCostsImpl("{B}{B}{B}"))); diff --git a/Mage.Sets/src/mage/cards/s/Soulherder.java b/Mage.Sets/src/mage/cards/s/Soulherder.java index adb1ffe805a..dfd231d31b6 100644 --- a/Mage.Sets/src/mage/cards/s/Soulherder.java +++ b/Mage.Sets/src/mage/cards/s/Soulherder.java @@ -50,7 +50,7 @@ public final class Soulherder extends CardImpl { Ability ability = new BeginningOfEndStepTriggeredAbility( new ExileTargetForSourceEffect(), TargetController.YOU, true ); - ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false).concatBy(",")); + ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false)); ability.addTarget(new TargetControlledCreaturePermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TeleportationCircle.java b/Mage.Sets/src/mage/cards/t/TeleportationCircle.java index dad8f59323e..e3260936ac0 100644 --- a/Mage.Sets/src/mage/cards/t/TeleportationCircle.java +++ b/Mage.Sets/src/mage/cards/t/TeleportationCircle.java @@ -3,7 +3,7 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.common.BeginningOfYourEndStepTriggeredAbility; import mage.abilities.effects.common.ExileTargetForSourceEffect; -import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlTargetEffect; +import mage.abilities.effects.common.ReturnToBattlefieldUnderOwnerControlTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -34,7 +34,7 @@ public final class TeleportationCircle extends CardImpl { // At the beginning of your end step, exile up to one target artifact or creature you control, then return that card to the battlefield under its owner's control. Ability ability = new BeginningOfYourEndStepTriggeredAbility(new ExileTargetForSourceEffect(), false); - ability.addEffect(new ReturnToBattlefieldUnderYourControlTargetEffect(false)); + ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false)); ability.addTarget(new TargetPermanent(0, 1, filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/ThassaDeepDwelling.java b/Mage.Sets/src/mage/cards/t/ThassaDeepDwelling.java index 5df900ab9e5..ae5f1f1f4db 100644 --- a/Mage.Sets/src/mage/cards/t/ThassaDeepDwelling.java +++ b/Mage.Sets/src/mage/cards/t/ThassaDeepDwelling.java @@ -59,7 +59,7 @@ public final class ThassaDeepDwelling extends CardImpl { new ExileTargetForSourceEffect(), TargetController.YOU, false ); - ability.addEffect(new ReturnToBattlefieldUnderYourControlTargetEffect().concatBy(", then")); + ability.addEffect(new ReturnToBattlefieldUnderYourControlTargetEffect()); ability.addTarget(new TargetPermanent( 0, 1, filterOther, false )); diff --git a/Mage.Sets/src/mage/cards/w/WispweaverAngel.java b/Mage.Sets/src/mage/cards/w/WispweaverAngel.java index 6ae0e572d8a..cf28a17d89f 100644 --- a/Mage.Sets/src/mage/cards/w/WispweaverAngel.java +++ b/Mage.Sets/src/mage/cards/w/WispweaverAngel.java @@ -38,7 +38,7 @@ public final class WispweaverAngel extends CardImpl { // When Wispweaver Angel enters the battlefield, you may exile another target creature you control, then return that card to the battlefield under its owner's control. Ability ability = new EntersBattlefieldTriggeredAbility(new ExileTargetForSourceEffect(), true); - ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false).concatBy(",")); + ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false)); ability.addTarget(new TargetControlledCreaturePermanent(1, 1, filter, false)); this.addAbility(ability); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlTargetEffect.java index 092c4447805..9ee2a3e58c7 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlTargetEffect.java @@ -47,7 +47,7 @@ public class ReturnToBattlefieldUnderOwnerControlTargetEffect extends OneShotEff } private void updateText() { - this.staticText = "then return " + this.returnName + this.staticText = ", then return " + this.returnName + " to the battlefield" + (tapped ? " tapped" : "") + " under " + this.returnUnderControlName + " control"; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlTargetEffect.java index c209ad21638..06656afeff9 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlTargetEffect.java @@ -59,7 +59,7 @@ public class ReturnToBattlefieldUnderYourControlTargetEffect extends OneShotEffe } private void updateText() { - this.staticText = "return " + returnName + " to the battlefield under " + returnUnderControlName + " control" + this.staticText = ", then return " + returnName + " to the battlefield under " + returnUnderControlName + " control" + (tapped ? " tapped" : "") + (tapped && attacking ? " and" : "") + (attacking ? " attacking" : "");