diff --git a/Mage.Sets/src/mage/sets/elspethvstezzeret/CelestialCrusader.java b/Mage.Sets/src/mage/sets/elspethvstezzeret/CelestialCrusader.java index 8728903abfb..efbdae45a89 100644 --- a/Mage.Sets/src/mage/sets/elspethvstezzeret/CelestialCrusader.java +++ b/Mage.Sets/src/mage/sets/elspethvstezzeret/CelestialCrusader.java @@ -65,7 +65,7 @@ public class CelestialCrusader extends CardImpl { this.toughness = new MageInt(2); this.addAbility(FlashAbility.getInstance()); - this.addAbility(SplitSecondAbility.getInstance()); + this.addAbility(new SplitSecondAbility()); this.addAbility(FlyingAbility.getInstance()); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true))); } diff --git a/Mage.Sets/src/mage/sets/elspethvstezzeret/Thoughtcast.java b/Mage.Sets/src/mage/sets/elspethvstezzeret/Thoughtcast.java index 3bdb607dc81..397ea472ae3 100644 --- a/Mage.Sets/src/mage/sets/elspethvstezzeret/Thoughtcast.java +++ b/Mage.Sets/src/mage/sets/elspethvstezzeret/Thoughtcast.java @@ -28,11 +28,11 @@ package mage.sets.elspethvstezzeret; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Rarity; -import mage.abilities.effects.common.DrawCardControllerEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.keyword.AffinityForArtifactsAbility; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; /** * @@ -49,7 +49,7 @@ public class Thoughtcast extends CardImpl { // Affinity for artifacts this.addAbility(new AffinityForArtifactsAbility()); // Draw two cards. - this.getSpellAbility().addEffect(new DrawCardControllerEffect(2)); + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2)); } public Thoughtcast(final Thoughtcast card) { diff --git a/Mage.Sets/src/mage/sets/modernmasters/MoltenDisaster.java b/Mage.Sets/src/mage/sets/modernmasters/MoltenDisaster.java index 715f485c371..429987fca1b 100644 --- a/Mage.Sets/src/mage/sets/modernmasters/MoltenDisaster.java +++ b/Mage.Sets/src/mage/sets/modernmasters/MoltenDisaster.java @@ -86,7 +86,7 @@ public class MoltenDisaster extends CardImpl { class MoltenDisasterTriggeredAbility extends TriggeredAbilityImpl { public MoltenDisasterTriggeredAbility() { - super(Zone.HAND, new GainAbilitySourceEffect(SplitSecondAbility.getInstance(), Duration.WhileOnStack), false); + super(Zone.HAND, new GainAbilitySourceEffect(new SplitSecondAbility(), Duration.WhileOnStack), false); } public MoltenDisasterTriggeredAbility(final MoltenDisasterTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/sets/modernmasters/TakePossession.java b/Mage.Sets/src/mage/sets/modernmasters/TakePossession.java index 6dc266b9ca3..ab7fae6e68f 100644 --- a/Mage.Sets/src/mage/sets/modernmasters/TakePossession.java +++ b/Mage.Sets/src/mage/sets/modernmasters/TakePossession.java @@ -56,7 +56,7 @@ public class TakePossession extends CardImpl { this.color.setBlue(true); // Split second - this.addAbility(SplitSecondAbility.getInstance()); + this.addAbility(new SplitSecondAbility()); // Enchant permanent TargetPermanent auraTarget = new TargetPermanent(); this.getSpellAbility().addTarget(auraTarget); diff --git a/Mage.Sets/src/mage/sets/planarchaos/Extirpate.java b/Mage.Sets/src/mage/sets/planarchaos/Extirpate.java index 18fb7450a33..8d935925dbe 100644 --- a/Mage.Sets/src/mage/sets/planarchaos/Extirpate.java +++ b/Mage.Sets/src/mage/sets/planarchaos/Extirpate.java @@ -29,10 +29,6 @@ package mage.sets.planarchaos; import java.util.List; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Rarity; -import mage.constants.Zone; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.SplitSecondAbility; @@ -40,6 +36,10 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.NamePredicate; @@ -69,7 +69,7 @@ public class Extirpate extends CardImpl { this.color.setBlack(true); // Split second - this.addAbility(SplitSecondAbility.getInstance()); + this.addAbility(new SplitSecondAbility()); // Choose target card in a graveyard other than a basic land card. Search its owner's graveyard, hand, and library for all cards with the same name as that card and exile them. Then that player shuffles his or her library. this.getSpellAbility().addEffect(new ExtirpateEffect()); this.getSpellAbility().addTarget(new TargetCardInGraveyard(filter)); @@ -125,8 +125,7 @@ class ExtirpateEffect extends OneShotEffect { for (UUID targetId : targets) { Card targetCard = targetPlayer.getGraveyard().get(targetId, game); if (targetCard != null) { - targetPlayer.getGraveyard().remove(targetCard); - targetCard.moveToZone(Zone.EXILED, source.getId(), game, false); + player.moveCardToExileWithInfo(card, null, null, source.getSourceId(), game, Zone.GRAVEYARD); } } } @@ -142,8 +141,7 @@ class ExtirpateEffect extends OneShotEffect { for (UUID targetId : targets) { Card targetCard = targetPlayer.getHand().get(targetId, game); if (targetCard != null) { - targetPlayer.getHand().remove(targetCard); - targetCard.moveToZone(Zone.EXILED, source.getId(), game, false); + player.moveCardToExileWithInfo(card, null, null, source.getSourceId(), game, Zone.HAND); } } } @@ -161,18 +159,16 @@ class ExtirpateEffect extends OneShotEffect { for (UUID targetId : targets) { Card targetCard = targetPlayer.getLibrary().remove(targetId, game); if (targetCard != null) { - targetCard.moveToZone(Zone.EXILED, source.getId(), game, false); + player.moveCardToExileWithInfo(card, null, null, source.getSourceId(), game, Zone.LIBRARY); } } } } else { player.lookAtCards(targetPlayer.getName() + " library", cardsInLibrary, game); } + targetPlayer.shuffleLibrary(game); + return true; } - - targetPlayer.shuffleLibrary(game); - - return true; } return false; diff --git a/Mage.Sets/src/mage/sets/planarchaos/SulfurElemental.java b/Mage.Sets/src/mage/sets/planarchaos/SulfurElemental.java index 4167a33c865..d72d59e094f 100644 --- a/Mage.Sets/src/mage/sets/planarchaos/SulfurElemental.java +++ b/Mage.Sets/src/mage/sets/planarchaos/SulfurElemental.java @@ -65,7 +65,7 @@ public class SulfurElemental extends CardImpl { // Flash this.addAbility(FlashAbility.getInstance()); // Split second - this.addAbility(SplitSecondAbility.getInstance()); + this.addAbility(new SplitSecondAbility()); // White creatures get +1/-1. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1,-1, Duration.WhileOnBattlefield, filter, false))); } diff --git a/Mage.Sets/src/mage/sets/timespiral/AngelsGrace.java b/Mage.Sets/src/mage/sets/timespiral/AngelsGrace.java index 3600a04a191..ba20791cda3 100644 --- a/Mage.Sets/src/mage/sets/timespiral/AngelsGrace.java +++ b/Mage.Sets/src/mage/sets/timespiral/AngelsGrace.java @@ -54,7 +54,7 @@ public class AngelsGrace extends CardImpl { this.color.setWhite(true); // Split second - this.addAbility(SplitSecondAbility.getInstance()); + this.addAbility(new SplitSecondAbility()); // You can't lose the game this turn and your opponents can't win the game this turn. Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead. this.getSpellAbility().addEffect(new AngelsGraceEffect()); diff --git a/Mage.Sets/src/mage/sets/timespiral/KrosanGrip.java b/Mage.Sets/src/mage/sets/timespiral/KrosanGrip.java index fbc9ef02262..caba5484536 100644 --- a/Mage.Sets/src/mage/sets/timespiral/KrosanGrip.java +++ b/Mage.Sets/src/mage/sets/timespiral/KrosanGrip.java @@ -59,7 +59,7 @@ public class KrosanGrip extends CardImpl { this.color.setGreen(true); // Split second - this.addAbility(SplitSecondAbility.getInstance()); + this.addAbility(new SplitSecondAbility()); // Destroy target artifact or enchantment. this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); diff --git a/Mage.Sets/src/mage/sets/timespiral/SuddenShock.java b/Mage.Sets/src/mage/sets/timespiral/SuddenShock.java index 899a2c50527..3ac0687f8c6 100644 --- a/Mage.Sets/src/mage/sets/timespiral/SuddenShock.java +++ b/Mage.Sets/src/mage/sets/timespiral/SuddenShock.java @@ -48,7 +48,7 @@ public class SuddenShock extends CardImpl { this.color.setRed(true); // Split second - this.addAbility(SplitSecondAbility.getInstance()); + this.addAbility(new SplitSecondAbility()); // Sudden Shock deals 2 damage to target creature or player. this.getSpellAbility().addEffect(new DamageTargetEffect(2, true)); this.getSpellAbility().addTarget(new TargetCreatureOrPlayer(true)); diff --git a/Mage.Sets/src/mage/sets/timespiral/SuddenSpoiling.java b/Mage.Sets/src/mage/sets/timespiral/SuddenSpoiling.java index 329f3b930b4..ac1144dacf2 100644 --- a/Mage.Sets/src/mage/sets/timespiral/SuddenSpoiling.java +++ b/Mage.Sets/src/mage/sets/timespiral/SuddenSpoiling.java @@ -58,7 +58,7 @@ public class SuddenSpoiling extends CardImpl { this.color.setBlack(true); // Split second - this.addAbility(SplitSecondAbility.getInstance()); + this.addAbility(new SplitSecondAbility()); // Creatures target player controls become 0/2 and lose all abilities until end of turn. this.getSpellAbility().addEffect(new SuddenSpoilingEffect(Duration.EndOfTurn)); this.getSpellAbility().addTarget(new TargetPlayer()); diff --git a/Mage.Sets/src/mage/sets/timespiral/Trickbind.java b/Mage.Sets/src/mage/sets/timespiral/Trickbind.java index c31d78869a7..776081acf1d 100644 --- a/Mage.Sets/src/mage/sets/timespiral/Trickbind.java +++ b/Mage.Sets/src/mage/sets/timespiral/Trickbind.java @@ -56,7 +56,7 @@ public class Trickbind extends CardImpl { this.color.setBlue(true); // Split second - this.addAbility(SplitSecondAbility.getInstance()); + this.addAbility(new SplitSecondAbility()); // Counter target activated or triggered ability. If a permanent's ability is countered this way, activated abilities of that permanent can't be activated this turn. this.getSpellAbility().addEffect(new TrickbindCounterEffect()); diff --git a/Mage.Sets/src/mage/sets/timespiral/WipeAway.java b/Mage.Sets/src/mage/sets/timespiral/WipeAway.java index 42ba8ba97a9..24837c90cca 100644 --- a/Mage.Sets/src/mage/sets/timespiral/WipeAway.java +++ b/Mage.Sets/src/mage/sets/timespiral/WipeAway.java @@ -28,11 +28,11 @@ package mage.sets.timespiral; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Rarity; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.SplitSecondAbility; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; import mage.target.TargetPermanent; /** @@ -48,7 +48,7 @@ public class WipeAway extends CardImpl { this.color.setBlue(true); // Split second - this.addAbility(SplitSecondAbility.getInstance()); + this.addAbility(new SplitSecondAbility()); // Return target permanent to its owner's hand. this.getSpellAbility().addTarget(new TargetPermanent()); this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); diff --git a/Mage/src/mage/abilities/effects/common/PutLibraryIntoGraveTargetEffect.java b/Mage/src/mage/abilities/effects/common/PutLibraryIntoGraveTargetEffect.java index 9d0f893fbf6..3217059f739 100644 --- a/Mage/src/mage/abilities/effects/common/PutLibraryIntoGraveTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/PutLibraryIntoGraveTargetEffect.java @@ -78,9 +78,9 @@ public class PutLibraryIntoGraveTargetEffect extends OneShotEffect(As long as this spell is on the stack, players can't cast spells or activate abilities that aren't mana abilities.)"; } + public SplitSecondAbility(SplitSecondAbility ability) { + super(ability); + } + @Override public SimpleStaticAbility copy() { - return ability; + return new SplitSecondAbility(this); } }