From 4fec6e4d7b6ae4c256d1f701cc45c863bd4948b8 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 30 May 2014 22:46:26 +0200 Subject: [PATCH] Made some targets required. Added message to replacement effect of Cavern of Soul to inform player being not able to counter. --- .../sets/alarareborn/AvenMimeomancer.java | 2 +- .../sets/alarareborn/BituminousBlast.java | 2 +- .../mage/sets/alarareborn/ColossalMight.java | 2 +- .../sets/alarareborn/Crystallization.java | 2 +- .../mage/sets/alarareborn/DemonicDread.java | 2 +- .../sets/alarareborn/GiantAmbushBeetle.java | 2 +- .../sets/alarareborn/IntimidationBolt.java | 2 +- .../mage/sets/alarareborn/MagefireWings.java | 2 +- .../mage/sets/alarareborn/NayaSojourners.java | 4 ++-- .../sets/alarareborn/SangriteBacklash.java | 2 +- .../sets/alarareborn/SigilOfTheNayanGods.java | 2 +- .../mage/sets/alarareborn/SlaveOfBolas.java | 2 +- .../src/mage/sets/alarareborn/StunSniper.java | 2 +- .../src/mage/sets/alarareborn/Terminate.java | 4 +++- .../sets/avacynrestored/CavernOfSouls.java | 19 ++++++++++++++----- .../mage/sets/darkascension/ForgeDevil.java | 6 +++--- .../mirrodinbesieged/PhyrexianCrusader.java | 8 ++++++-- .../mage/sets/planechase/BeaconOfUnrest.java | 11 +++++++---- .../effects/common/ShuffleSpellEffect.java | 9 ++++++--- 19 files changed, 53 insertions(+), 32 deletions(-) diff --git a/Mage.Sets/src/mage/sets/alarareborn/AvenMimeomancer.java b/Mage.Sets/src/mage/sets/alarareborn/AvenMimeomancer.java index 8ff493694f0..0d9326b02c5 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/AvenMimeomancer.java +++ b/Mage.Sets/src/mage/sets/alarareborn/AvenMimeomancer.java @@ -67,7 +67,7 @@ public class AvenMimeomancer extends CardImpl { // At the beginning of your upkeep, you may put a feather counter on target creature. If you do, that creature is 3/1 and has flying for as long as it has a feather counter on it. Ability ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.FEATHER.createInstance()), TargetController.YOU, true); - ability.addTarget(new TargetCreaturePermanent()); + ability.addTarget(new TargetCreaturePermanent(true)); ability.addEffect(new AvenEffect()); ability.addEffect(new AvenEffect2()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/sets/alarareborn/BituminousBlast.java b/Mage.Sets/src/mage/sets/alarareborn/BituminousBlast.java index 8bbe738e7aa..024c3ff6f5e 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/BituminousBlast.java +++ b/Mage.Sets/src/mage/sets/alarareborn/BituminousBlast.java @@ -47,7 +47,7 @@ public class BituminousBlast extends CardImpl { this.expansionSetCode = "ARB"; this.color.setBlack(true); this.color.setRed(true); - this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(true)); this.getSpellAbility().addEffect(new DamageTargetEffect(4)); this.addAbility(new CascadeAbility()); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/ColossalMight.java b/Mage.Sets/src/mage/sets/alarareborn/ColossalMight.java index c5bbdbbf982..793140a36f3 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/ColossalMight.java +++ b/Mage.Sets/src/mage/sets/alarareborn/ColossalMight.java @@ -49,7 +49,7 @@ public class ColossalMight extends CardImpl { this.expansionSetCode = "ARB"; this.color.setRed(true); this.color.setGreen(true); - this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(true)); this.getSpellAbility().addEffect(new BoostTargetEffect(4, 2, Duration.EndOfTurn)); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn)); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/Crystallization.java b/Mage.Sets/src/mage/sets/alarareborn/Crystallization.java index f723a9c8ea7..ba5219cde54 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/Crystallization.java +++ b/Mage.Sets/src/mage/sets/alarareborn/Crystallization.java @@ -64,7 +64,7 @@ public class Crystallization extends CardImpl { this.color.setWhite(true); // Enchant creature - TargetPermanent auraTarget = new TargetCreaturePermanent(); + TargetPermanent auraTarget = new TargetCreaturePermanent(true); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); diff --git a/Mage.Sets/src/mage/sets/alarareborn/DemonicDread.java b/Mage.Sets/src/mage/sets/alarareborn/DemonicDread.java index e286b12a1ac..0fef37d1ed4 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/DemonicDread.java +++ b/Mage.Sets/src/mage/sets/alarareborn/DemonicDread.java @@ -55,7 +55,7 @@ public class DemonicDread extends CardImpl { this.addAbility(new CascadeAbility()); // Target creature can't block this turn. - this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(true)); this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn)); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/GiantAmbushBeetle.java b/Mage.Sets/src/mage/sets/alarareborn/GiantAmbushBeetle.java index 994f28689b9..d291100c5b7 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/GiantAmbushBeetle.java +++ b/Mage.Sets/src/mage/sets/alarareborn/GiantAmbushBeetle.java @@ -61,7 +61,7 @@ public class GiantAmbushBeetle extends CardImpl { // When Giant Ambush Beetle enters the battlefield, you may have target creature block it this turn if able. Ability ability = new EntersBattlefieldTriggeredAbility(new MustBeBlockedByTargetSourceEffect(Duration.EndOfTurn), true); - ability.addTarget(new TargetCreaturePermanent()); + ability.addTarget(new TargetCreaturePermanent(true)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/IntimidationBolt.java b/Mage.Sets/src/mage/sets/alarareborn/IntimidationBolt.java index f340bb4cbf4..62610be6da1 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/IntimidationBolt.java +++ b/Mage.Sets/src/mage/sets/alarareborn/IntimidationBolt.java @@ -55,7 +55,7 @@ public class IntimidationBolt extends CardImpl { // Intimidation Bolt deals 3 damage to target creature. Other creatures can't attack this turn. this.getSpellAbility().addEffect(new DamageTargetEffect(3)); this.getSpellAbility().addEffect(new IntimidationEffect(Duration.EndOfTurn)); - this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(true)); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/MagefireWings.java b/Mage.Sets/src/mage/sets/alarareborn/MagefireWings.java index 5d14c3de030..ad4231d5179 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/MagefireWings.java +++ b/Mage.Sets/src/mage/sets/alarareborn/MagefireWings.java @@ -60,7 +60,7 @@ public class MagefireWings extends CardImpl { this.color.setBlue(true); this.color.setRed(true); - TargetPermanent auraTarget = new TargetCreaturePermanent(); + TargetPermanent auraTarget = new TargetCreaturePermanent(true); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); diff --git a/Mage.Sets/src/mage/sets/alarareborn/NayaSojourners.java b/Mage.Sets/src/mage/sets/alarareborn/NayaSojourners.java index 64a5149fdfc..a769dee71da 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/NayaSojourners.java +++ b/Mage.Sets/src/mage/sets/alarareborn/NayaSojourners.java @@ -62,8 +62,8 @@ public class NayaSojourners extends CardImpl { // When you cycle Naya Sojourners or it dies, you may put a +1/+1 counter on target creature. Ability ability1 = new CycleTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); Ability ability2 = new DiesTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); - ability1.addTarget(new TargetCreaturePermanent()); - ability2.addTarget(new TargetCreaturePermanent()); + ability1.addTarget(new TargetCreaturePermanent(true)); + ability2.addTarget(new TargetCreaturePermanent(true)); this.addAbility(ability1); this.addAbility(ability2); diff --git a/Mage.Sets/src/mage/sets/alarareborn/SangriteBacklash.java b/Mage.Sets/src/mage/sets/alarareborn/SangriteBacklash.java index c181e2c3fd4..b901bd11ca9 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/SangriteBacklash.java +++ b/Mage.Sets/src/mage/sets/alarareborn/SangriteBacklash.java @@ -57,7 +57,7 @@ public class SangriteBacklash extends CardImpl { this.color.setBlack(true); // Enchant creature - TargetPermanent auraTarget = new TargetCreaturePermanent(); + TargetPermanent auraTarget = new TargetCreaturePermanent(true); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); diff --git a/Mage.Sets/src/mage/sets/alarareborn/SigilOfTheNayanGods.java b/Mage.Sets/src/mage/sets/alarareborn/SigilOfTheNayanGods.java index 78d274e33c1..ff1ff4d3c10 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/SigilOfTheNayanGods.java +++ b/Mage.Sets/src/mage/sets/alarareborn/SigilOfTheNayanGods.java @@ -61,7 +61,7 @@ public class SigilOfTheNayanGods extends CardImpl { this.color.setGreen(true); this.color.setWhite(true); - TargetPermanent auraTarget = new TargetCreaturePermanent(); + TargetPermanent auraTarget = new TargetCreaturePermanent(true); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); this.addAbility(new EnchantAbility(auraTarget.getTargetName())); diff --git a/Mage.Sets/src/mage/sets/alarareborn/SlaveOfBolas.java b/Mage.Sets/src/mage/sets/alarareborn/SlaveOfBolas.java index 07b7caaf8d0..c6944e1011e 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/SlaveOfBolas.java +++ b/Mage.Sets/src/mage/sets/alarareborn/SlaveOfBolas.java @@ -65,7 +65,7 @@ public class SlaveOfBolas extends CardImpl { this.getSpellAbility().addEffect(new UntapTargetEffect()); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)); this.getSpellAbility().addEffect(new SlaveOfBolasEffect()); - this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(true)); } public SlaveOfBolas(final SlaveOfBolas card) { diff --git a/Mage.Sets/src/mage/sets/alarareborn/StunSniper.java b/Mage.Sets/src/mage/sets/alarareborn/StunSniper.java index f1f3bf33e8c..d71fdaf6e66 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/StunSniper.java +++ b/Mage.Sets/src/mage/sets/alarareborn/StunSniper.java @@ -60,7 +60,7 @@ public class StunSniper extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); ability.addEffect(new TapTargetEffect()); - ability.addTarget(new TargetCreaturePermanent()); + ability.addTarget(new TargetCreaturePermanent(true)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/Terminate.java b/Mage.Sets/src/mage/sets/alarareborn/Terminate.java index 8c14008e6a2..7600c209550 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/Terminate.java +++ b/Mage.Sets/src/mage/sets/alarareborn/Terminate.java @@ -46,7 +46,9 @@ public class Terminate extends CardImpl { this.expansionSetCode = "ARB"; this.color.setBlack(true); this.color.setRed(true); - this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + + // Destroy target creature. It can't be regenerated. + this.getSpellAbility().addTarget(new TargetCreaturePermanent(true)); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); } diff --git a/Mage.Sets/src/mage/sets/avacynrestored/CavernOfSouls.java b/Mage.Sets/src/mage/sets/avacynrestored/CavernOfSouls.java index f14c88853b3..baeddbf5269 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/CavernOfSouls.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/CavernOfSouls.java @@ -27,8 +27,10 @@ */ package mage.sets.avacynrestored; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; import mage.ConditionalMana; -import mage.constants.*; import mage.MageObject; import mage.Mana; import mage.abilities.Ability; @@ -44,6 +46,12 @@ import mage.cards.CardImpl; import mage.cards.repository.CardRepository; import mage.choices.Choice; import mage.choices.ChoiceImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.WatcherScope; +import mage.constants.Zone; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -51,10 +59,6 @@ import mage.game.stack.Spell; import mage.players.Player; import mage.watchers.WatcherImpl; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - /** * * @author noxx @@ -226,6 +230,11 @@ class CavernOfSoulsCantCounterEffect extends ReplacementEffectImpl { // When Forge Devil enters the battlefield, it deals 1 damage to target creature and 1 damage to you. Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(1)); ability.addEffect(new DamageControllerEffect(1)); - ability.addTarget(new TargetCreaturePermanent()); + ability.addTarget(new TargetCreaturePermanent(true)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/PhyrexianCrusader.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/PhyrexianCrusader.java index deaffd2989e..aac859de075 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/PhyrexianCrusader.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/PhyrexianCrusader.java @@ -29,14 +29,14 @@ package mage.sets.mirrodinbesieged; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Rarity; import mage.MageInt; import mage.ObjectColor; import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.InfectAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.ColorPredicate; @@ -63,9 +63,13 @@ public class PhyrexianCrusader extends CardImpl { this.color.setBlack(true); this.power = new MageInt(2); this.toughness = new MageInt(2); + + // First strike, this.addAbility(FirstStrikeAbility.getInstance()); + // protection from red and from white this.addAbility(new ProtectionAbility(filter)); this.addAbility(new ProtectionAbility(filter2)); + // Infect this.addAbility(InfectAbility.getInstance()); } diff --git a/Mage.Sets/src/mage/sets/planechase/BeaconOfUnrest.java b/Mage.Sets/src/mage/sets/planechase/BeaconOfUnrest.java index ca6edc35254..277ddb163cc 100644 --- a/Mage.Sets/src/mage/sets/planechase/BeaconOfUnrest.java +++ b/Mage.Sets/src/mage/sets/planechase/BeaconOfUnrest.java @@ -28,14 +28,15 @@ package mage.sets.planechase; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Rarity; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.common.ShuffleSpellEffect; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.target.Target; import mage.target.common.TargetCardInGraveyard; /** @@ -43,7 +44,7 @@ import mage.target.common.TargetCardInGraveyard; * @author Loki */ public class BeaconOfUnrest extends CardImpl { - private static final FilterCard filter = new FilterCard("artifact or creature"); + private static final FilterCard filter = new FilterCard("artifact or creature card from a graveyard"); static { filter.add(Predicates.or( @@ -60,7 +61,9 @@ public class BeaconOfUnrest extends CardImpl { // Put target artifact or creature card from a graveyard onto the battlefield under your control. Shuffle Beacon of Unrest into its owner's library. this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); this.getSpellAbility().addEffect(ShuffleSpellEffect.getInstance()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(filter)); + Target target = new TargetCardInGraveyard(filter); + target.setRequired(true); + this.getSpellAbility().addTarget(target); } public BeaconOfUnrest(final BeaconOfUnrest card) { diff --git a/Mage/src/mage/abilities/effects/common/ShuffleSpellEffect.java b/Mage/src/mage/abilities/effects/common/ShuffleSpellEffect.java index ab2675bf465..4f1299f2518 100644 --- a/Mage/src/mage/abilities/effects/common/ShuffleSpellEffect.java +++ b/Mage/src/mage/abilities/effects/common/ShuffleSpellEffect.java @@ -71,8 +71,11 @@ public class ShuffleSpellEffect extends PostResolveEffect im @Override public void postResolve(Card card, Ability source, UUID controllerId, Game game) { - card.moveToZone(Zone.LIBRARY, source.getId(), game, false); - Player player = game.getPlayer(card.getOwnerId()); - if (player != null) player.shuffleLibrary(game); + Player controller = game.getPlayer(source.getControllerId()); + Player owner = game.getPlayer(card.getOwnerId()); + if (controller != null && owner != null) { + controller.moveCardToLibraryWithInfo(card, source.getSourceId(), game, Zone.STACK, true, true); + owner.shuffleLibrary(game); + } } }