From 5c27de8bba6c3d5503e0f55c673e1b88db1a8950 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Wed, 6 Oct 2010 02:38:57 +0000 Subject: [PATCH] ... --- .../src/mage/sets/alarareborn/FinestHour.java | 4 +- .../sets/alarareborn/VengefulRebirth.java | 4 +- .../src/mage/sets/conflux/CelestialPurge.java | 2 +- .../src/mage/sets/conflux/Dreadwing.java | 2 +- .../sets/conflux/KnightOfTheReliquary.java | 6 +- .../src/mage/sets/conflux/MartialCoup.java | 5 +- .../src/mage/sets/conflux/PathToExile.java | 2 +- .../src/mage/sets/conflux/QuenchableFire.java | 10 +- Mage.Sets/src/mage/sets/conflux/RakkaMar.java | 6 +- .../src/mage/sets/conflux/SoulsMajesty.java | 4 +- .../src/mage/sets/magic2010/AcidicSlime.java | 2 +- .../mage/sets/magic2010/AjaniGoldmane.java | 2 +- .../mage/sets/magic2010/AlluringSiren.java | 13 +- .../mage/sets/magic2010/AngelsFeather.java | 9 + .../src/mage/sets/magic2010/Assassinate.java | 9 + .../mage/sets/magic2010/BirdsOfParadise.java | 9 + Mage.Sets/src/mage/sets/magic2010/Cancel.java | 9 + .../mage/sets/magic2010/CanyonMinotaur.java | 9 + .../mage/sets/magic2010/CelestialPurge.java | 9 + .../src/mage/sets/magic2010/ChildOfNight.java | 2 +- Mage.Sets/src/mage/sets/magic2010/Clone.java | 9 + .../src/mage/sets/magic2010/Deathmark.java | 9 + .../src/mage/sets/magic2010/DemonsHorn.java | 9 + .../mage/sets/magic2010/DiabolicTutor.java | 9 + .../src/mage/sets/magic2010/DoomBlade.java | 3 +- .../src/mage/sets/magic2010/DragonsClaw.java | 9 + .../mage/sets/magic2010/Excommunicate.java | 9 + .../src/mage/sets/magic2010/Flashfreeze.java | 9 + .../src/mage/sets/magic2010/Forest1.java | 9 + .../src/mage/sets/magic2010/Forest2.java | 9 + .../src/mage/sets/magic2010/Forest3.java | 9 + .../src/mage/sets/magic2010/Forest4.java | 9 + .../sets/magic2010/GarrukWildspeaker.java | 3 +- .../src/mage/sets/magic2010/GiantGrowth.java | 9 + .../src/mage/sets/magic2010/GiantSpider.java | 9 + .../mage/sets/magic2010/GoblinChieftain.java | 2 +- .../src/mage/sets/magic2010/GoblinPiker.java | 9 + .../src/mage/sets/magic2010/Gravedigger.java | 9 + .../src/mage/sets/magic2010/HolyStrength.java | 9 + .../src/mage/sets/magic2010/HowlingMine.java | 2 +- .../src/mage/sets/magic2010/Island1.java | 9 + .../src/mage/sets/magic2010/Island2.java | 9 + .../src/mage/sets/magic2010/Island3.java | 9 + .../src/mage/sets/magic2010/Island4.java | 9 + .../src/mage/sets/magic2010/KrakensEye.java | 9 + .../src/mage/sets/magic2010/LavaAxe.java | 9 + .../src/mage/sets/magic2010/LilianaVess.java | 123 ++++++++++++++ .../mage/sets/magic2010/LlanowarElves.java | 22 +-- .../src/mage/sets/magic2010/MagmaPhoenix.java | 77 +++++++++ .../mage/sets/magic2010/MerfolkSovereign.java | 92 ++++++++++ .../src/mage/sets/magic2010/MindControl.java | 134 +++++++++++++++ .../src/mage/sets/magic2010/MindRot.java | 26 +-- .../src/mage/sets/magic2010/Naturalize.java | 3 +- .../mage/sets/magic2010/RoyalAssassin.java | 44 ++--- .../src/mage/sets/magic2011/AcidicSlime.java | 9 + .../src/mage/sets/magic2011/ActOfTreason.java | 9 + .../mage/sets/magic2011/AjaniGoldmane.java | 9 + .../mage/sets/magic2011/AlluringSiren.java | 9 + .../mage/sets/magic2011/AngelsFeather.java | 9 + .../mage/sets/magic2011/ArmoredAscension.java | 9 + .../src/mage/sets/magic2011/Assassinate.java | 9 + .../src/mage/sets/magic2011/AutumnsVeil.java | 13 +- .../mage/sets/magic2011/AwakenerDruid.java | 9 + .../mage/sets/magic2011/BaneslayerAngel.java | 9 + .../magic2011/BerserkersOfBloodRidge.java | 9 + .../mage/sets/magic2011/BirdsOfParadise.java | 9 + .../src/mage/sets/magic2011/BlackKnight.java | 9 + .../src/mage/sets/magic2011/BlindingMage.java | 9 + .../sets/magic2011/BloodthroneVampire.java | 9 + Mage.Sets/src/mage/sets/magic2011/Cancel.java | 9 + .../mage/sets/magic2011/CanyonMinotaur.java | 9 + .../sets/magic2011/CaptivatingVampire.java | 8 +- .../mage/sets/magic2011/CelestialPurge.java | 9 + .../mage/sets/magic2011/ChandraNalaar.java | 9 + .../src/mage/sets/magic2011/ChildOfNight.java | 9 + Mage.Sets/src/mage/sets/magic2011/Clone.java | 9 + .../mage/sets/magic2011/CloudElemental.java | 9 + .../src/mage/sets/magic2011/Condemn.java | 9 + .../mage/sets/magic2011/ConundrumSphinx.java | 5 +- .../src/mage/sets/magic2011/CudgelTroll.java | 9 + .../src/mage/sets/magic2011/Cultivate.java | 6 +- .../src/mage/sets/magic2011/DarkTutelage.java | 4 +- .../mage/sets/magic2011/DayOfJudgment.java | 9 + .../src/mage/sets/magic2011/Deathmark.java | 9 + .../src/mage/sets/magic2011/Demolish.java | 9 + .../sets/magic2011/DemonOfDeathsGate.java | 7 +- .../src/mage/sets/magic2011/DemonsHorn.java | 9 + .../mage/sets/magic2011/DiabolicTutor.java | 9 + .../src/mage/sets/magic2011/Disentomb.java | 9 + .../src/mage/sets/magic2011/DoomBlade.java | 9 + .../src/mage/sets/magic2011/DragonsClaw.java | 9 + .../sets/magic2011/DragonskullSummit.java | 9 + Mage.Sets/src/mage/sets/magic2011/Duress.java | 9 + .../mage/sets/magic2011/EliteVanguard.java | 9 + .../sets/magic2011/ElixirOfImmortality.java | 5 +- .../mage/sets/magic2011/ElvishArchdruid.java | 9 + .../mage/sets/magic2011/Excommunicate.java | 9 + .../mage/sets/magic2011/FieryHellhound.java | 9 + .../src/mage/sets/magic2011/Fireball.java | 9 + .../src/mage/sets/magic2011/Flashfreeze.java | 9 + Mage.Sets/src/mage/sets/magic2011/Fling.java | 3 +- Mage.Sets/src/mage/sets/magic2011/Fog.java | 9 + .../src/mage/sets/magic2011/Forest1.java | 9 + .../src/mage/sets/magic2011/Forest2.java | 9 + .../src/mage/sets/magic2011/Forest3.java | 9 + .../src/mage/sets/magic2011/Forest4.java | 9 + .../sets/magic2011/GarrukWildspeaker.java | 9 + .../src/mage/sets/magic2011/GiantGrowth.java | 9 + .../src/mage/sets/magic2011/GiantSpider.java | 9 + .../mage/sets/magic2011/GlacialFortress.java | 9 + .../mage/sets/magic2011/GoblinChieftain.java | 9 + .../src/mage/sets/magic2011/GoblinPiker.java | 9 + .../mage/sets/magic2011/GoblinTunneler.java | 9 + .../src/mage/sets/magic2011/Gravedigger.java | 9 + .../mage/sets/magic2011/HauntingEchoes.java | 9 + .../mage/sets/magic2011/HoardingDragon.java | 6 +- .../src/mage/sets/magic2011/HolyStrength.java | 9 + .../mage/sets/magic2011/HonorOfThePure.java | 9 + .../mage/sets/magic2011/HowlingBanshee.java | 9 + .../src/mage/sets/magic2011/IceCage.java | 9 + .../src/mage/sets/magic2011/Island1.java | 9 + .../src/mage/sets/magic2011/Island2.java | 9 + .../src/mage/sets/magic2011/Island3.java | 9 + .../src/mage/sets/magic2011/Island4.java | 9 + .../src/mage/sets/magic2011/JaceBeleren.java | 9 + .../src/mage/sets/magic2011/JinxedIdol.java | 5 +- .../src/mage/sets/magic2011/Juggernaut.java | 9 + .../src/mage/sets/magic2011/KrakensEye.java | 9 + .../src/mage/sets/magic2011/LavaAxe.java | 9 + .../sets/magic2011/LeylineOfAnticipation.java | 107 ++++++++++++ .../sets/magic2011/LeylineOfPunishment.java | 154 +++++++++++++++++ .../sets/magic2011/LeylineOfSanctity.java | 78 +++++++++ .../mage/sets/magic2011/LeylineOfTheVoid.java | 118 +++++++++++++ .../sets/magic2011/LeylineOfVitality.java | 112 +++++++++++++ .../mage/sets/magic2011/LightningBolt.java | 53 ++++++ .../src/mage/sets/magic2011/LilianaVess.java | 53 ++++++ .../mage/sets/magic2011/LilianasCaress.java | 103 ++++++++++++ .../mage/sets/magic2011/LilianasSpecter.java | 106 ++++++++++++ .../mage/sets/magic2011/LlanowarElves.java | 53 ++++++ .../src/mage/sets/magic2011/MagmaPhoenix.java | 53 ++++++ .../src/mage/sets/magic2011/ManaLeak.java | 71 ++++++++ .../src/mage/sets/magic2011/ManicVandal.java | 87 ++++++++++ .../mage/sets/magic2011/MaritimeGuard.java | 67 ++++++++ .../mage/sets/magic2011/MassPolymorph.java | 124 ++++++++++++++ .../mage/sets/magic2011/MerfolkSovereign.java | 53 ++++++ .../src/mage/sets/magic2011/MerfolkSpy.java | 158 ++++++++++++++++++ .../src/mage/sets/magic2011/MightyLeap.java | 69 ++++++++ .../src/mage/sets/magic2011/MindControl.java | 57 +++++++ .../src/mage/sets/magic2011/MindRot.java | 53 ++++++ .../src/mage/sets/magic2011/MitoticSlime.java | 96 +++++++++++ .../mage/sets/planechase/OblivionRing.java | 9 + .../src/mage/sets/planechase/SoulWarden.java | 9 + .../riseoftheeldrazi/BloodthroneVampire.java | 5 +- .../mage/sets/riseoftheeldrazi/Deprive.java | 11 +- .../mage/sets/riseoftheeldrazi/Forest1.java | 9 + .../mage/sets/riseoftheeldrazi/Forest2.java | 9 + .../mage/sets/riseoftheeldrazi/Forest3.java | 9 + .../mage/sets/riseoftheeldrazi/Forest4.java | 9 + .../sets/riseoftheeldrazi/GideonJura.java | 2 +- .../mage/sets/riseoftheeldrazi/Island1.java | 9 + .../mage/sets/riseoftheeldrazi/Island2.java | 9 + .../mage/sets/riseoftheeldrazi/Island3.java | 9 + .../mage/sets/riseoftheeldrazi/Island4.java | 9 + .../sets/riseoftheeldrazi/SeaGateOracle.java | 14 +- .../mage/sets/riseoftheeldrazi/SeeBeyond.java | 3 +- .../src/mage/sets/shardsofalara/Cancel.java | 10 ++ .../src/mage/sets/shardsofalara/Forest1.java | 9 + .../src/mage/sets/shardsofalara/Forest2.java | 9 + .../src/mage/sets/shardsofalara/Forest3.java | 9 + .../src/mage/sets/shardsofalara/Forest4.java | 9 + .../src/mage/sets/shardsofalara/Island1.java | 9 + .../src/mage/sets/shardsofalara/Island2.java | 9 + .../src/mage/sets/shardsofalara/Island3.java | 9 + .../src/mage/sets/shardsofalara/Island4.java | 9 + .../shardsofalara/KnightOfTheWhiteOrchid.java | 2 +- .../mage/sets/shardsofalara/OblivionRing.java | 2 +- .../src/mage/sets/tenth/Assassinate.java | 3 +- Mage.Sets/src/mage/sets/tenth/Clone.java | 2 +- Mage.Sets/src/mage/sets/tenth/Forest1.java | 9 + Mage.Sets/src/mage/sets/tenth/Forest2.java | 9 + Mage.Sets/src/mage/sets/tenth/Forest3.java | 9 + Mage.Sets/src/mage/sets/tenth/Forest4.java | 9 + Mage.Sets/src/mage/sets/tenth/Island1.java | 9 + Mage.Sets/src/mage/sets/tenth/Island2.java | 9 + Mage.Sets/src/mage/sets/tenth/Island3.java | 9 + Mage.Sets/src/mage/sets/tenth/Island4.java | 9 + .../src/mage/sets/tenth/LlanowarElves.java | 69 ++++++++ Mage.Sets/src/mage/sets/tenth/MindRot.java | 65 +++++++ Mage.Sets/src/mage/sets/tenth/Mountain1.java | 9 + Mage.Sets/src/mage/sets/tenth/Plains1.java | 9 + Mage.Sets/src/mage/sets/tenth/Swamp1.java | 9 + .../sets/worldwake/JaceTheMindSculptor.java | 9 +- .../src/mage/sets/worldwake/SejiriSteppe.java | 5 +- Mage.Sets/src/mage/sets/zendikar/Cancel.java | 9 + .../src/mage/sets/zendikar/Demolish.java | 9 + .../mage/sets/zendikar/EldraziMonument.java | 3 +- Mage.Sets/src/mage/sets/zendikar/Forest1.java | 9 + Mage.Sets/src/mage/sets/zendikar/Forest2.java | 9 + Mage.Sets/src/mage/sets/zendikar/Forest3.java | 9 + Mage.Sets/src/mage/sets/zendikar/Forest4.java | 9 + .../src/mage/sets/zendikar/GoblinGuide.java | 3 +- Mage.Sets/src/mage/sets/zendikar/Island1.java | 9 + Mage.Sets/src/mage/sets/zendikar/Island2.java | 9 + Mage.Sets/src/mage/sets/zendikar/Island3.java | 9 + Mage.Sets/src/mage/sets/zendikar/Island4.java | 9 + .../src/mage/sets/zendikar/ScuteMob.java | 2 +- 206 files changed, 3727 insertions(+), 153 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/magic2010/LilianaVess.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/MagmaPhoenix.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/MindControl.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/LeylineOfAnticipation.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/LeylineOfPunishment.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/LeylineOfSanctity.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/LeylineOfTheVoid.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/LeylineOfVitality.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/LightningBolt.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/LilianaVess.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/LilianasCaress.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/LilianasSpecter.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/LlanowarElves.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/MagmaPhoenix.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/ManaLeak.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/ManicVandal.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/MaritimeGuard.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/MassPolymorph.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/MerfolkSovereign.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/MerfolkSpy.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/MightyLeap.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/MindControl.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/MindRot.java create mode 100644 Mage.Sets/src/mage/sets/magic2011/MitoticSlime.java create mode 100644 Mage.Sets/src/mage/sets/tenth/LlanowarElves.java create mode 100644 Mage.Sets/src/mage/sets/tenth/MindRot.java diff --git a/Mage.Sets/src/mage/sets/alarareborn/FinestHour.java b/Mage.Sets/src/mage/sets/alarareborn/FinestHour.java index 45dc603837..fad5e30dab 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/FinestHour.java +++ b/Mage.Sets/src/mage/sets/alarareborn/FinestHour.java @@ -96,7 +96,7 @@ class FinestHourAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - if (checkIfClause(game) && game.getActivePlayerId().equals(this.controllerId)) { + if (checkInterveningIfClause(game) && game.getActivePlayerId().equals(this.controllerId)) { if (event.getType() == EventType.DECLARED_ATTACKERS) { if (game.getCombat().attacksAlone()) { this.addTarget(new TargetCreaturePermanent()); @@ -110,7 +110,7 @@ class FinestHourAbility extends TriggeredAbilityImpl { } @Override - public boolean checkIfClause(Game game) { + public boolean checkInterveningIfClause(Game game) { return game.getTurn().getPhase(TurnPhase.COMBAT).getCount() == 0; } diff --git a/Mage.Sets/src/mage/sets/alarareborn/VengefulRebirth.java b/Mage.Sets/src/mage/sets/alarareborn/VengefulRebirth.java index b800574ac3..8ff4c1855a 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/VengefulRebirth.java +++ b/Mage.Sets/src/mage/sets/alarareborn/VengefulRebirth.java @@ -32,6 +32,7 @@ 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.effects.common.ExileSpellEffect; @@ -96,7 +97,8 @@ class VengefulRebirthEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); Card card = (Card)game.getObject(source.getFirstTarget()); - if (player.removeFromGraveyard(card, game) && player.putInHand(card, game)) { + if (player.removeFromGraveyard(card, game)) { + card.moveToZone(Zone.HAND, game, false); int damage = card.getManaCost().convertedManaCost(); if (!card.getCardType().contains(CardType.LAND)) { Permanent permanent = game.getPermanent(source.getTargets().get(1).getTargets().get(0)); diff --git a/Mage.Sets/src/mage/sets/conflux/CelestialPurge.java b/Mage.Sets/src/mage/sets/conflux/CelestialPurge.java index 22f1536f6d..0f85e1b073 100644 --- a/Mage.Sets/src/mage/sets/conflux/CelestialPurge.java +++ b/Mage.Sets/src/mage/sets/conflux/CelestialPurge.java @@ -58,7 +58,7 @@ public class CelestialPurge extends CardImpl { super(ownerId, "Celestial Purge", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{W}"); this.expansionSetCode = "CON"; this.color.setWhite(true); - this.getSpellAbility().addTarget(new TargetPermanent(filter, TargetController.ANY)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new ExileTargetEffect()); } diff --git a/Mage.Sets/src/mage/sets/conflux/Dreadwing.java b/Mage.Sets/src/mage/sets/conflux/Dreadwing.java index 64bc9afd6e..d66ae7d1de 100644 --- a/Mage.Sets/src/mage/sets/conflux/Dreadwing.java +++ b/Mage.Sets/src/mage/sets/conflux/Dreadwing.java @@ -56,7 +56,7 @@ public class Dreadwing extends CardImpl { this.toughness = new MageInt(1); SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(3, 0, Duration.EndOfTurn), new ManaCostsImpl(("{1}{U}{B}"))); ability.getEffects().add(new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)); - this.abilities.add(ability); + this.addAbility(ability); } public Dreadwing(final Dreadwing card) { diff --git a/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java b/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java index 96d1249676..a9a86de673 100644 --- a/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java +++ b/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java @@ -48,8 +48,8 @@ import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; +import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterLandCard; -import mage.filter.common.FilterLandPermanent; import mage.game.Game; import mage.game.permanent.Permanent; @@ -62,9 +62,11 @@ import mage.target.common.TargetControlledPermanent; */ public class KnightOfTheReliquary extends CardImpl { - private static FilterLandPermanent filter = new FilterLandPermanent("Forest or Plains"); + private static FilterControlledPermanent filter = new FilterControlledPermanent("Forest or Plains"); static { + filter.getCardType().add(CardType.LAND); + filter.setScopeCardType(ComparisonScope.Any); filter.getSubtype().add("Forest"); filter.getSubtype().add("Plains"); filter.setScopeSubtype(ComparisonScope.Any); diff --git a/Mage.Sets/src/mage/sets/conflux/MartialCoup.java b/Mage.Sets/src/mage/sets/conflux/MartialCoup.java index 6c05eb2e25..0b34126e96 100644 --- a/Mage.Sets/src/mage/sets/conflux/MartialCoup.java +++ b/Mage.Sets/src/mage/sets/conflux/MartialCoup.java @@ -72,6 +72,8 @@ public class MartialCoup extends CardImpl { class MartialCoupEffect extends OneShotEffect { + private static SoldierToken token = new SoldierToken(); + public MartialCoupEffect() { super(Outcome.PutCreatureInPlay); } @@ -87,7 +89,6 @@ class MartialCoupEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player controller = game.getPlayer(source.getControllerId()); int amount = source.getCosts().getVariableCosts().get(0).getAmount(); if (amount > 4) { @@ -96,7 +97,7 @@ class MartialCoupEffect extends OneShotEffect { } } for (int i = 0; i < amount; i++) { - controller.putOntoBattlefield(new SoldierToken(), game); + token.putOntoBattlefield(game, source.getControllerId()); } return true; } diff --git a/Mage.Sets/src/mage/sets/conflux/PathToExile.java b/Mage.Sets/src/mage/sets/conflux/PathToExile.java index 8925f16408..1583edcb7e 100644 --- a/Mage.Sets/src/mage/sets/conflux/PathToExile.java +++ b/Mage.Sets/src/mage/sets/conflux/PathToExile.java @@ -100,7 +100,7 @@ class PathToExileEffect extends OneShotEffect { player.searchLibrary(target, game); Card card = player.getLibrary().remove(target.getFirstTarget(), game); if (card != null) { - if (player.putOntoBattlefield(card, game)) { + if (card.putOntoBattlefield(game, Zone.LIBRARY, permanent.getControllerId())) { Permanent land = game.getPermanent(card.getId()); if (land != null) land.setTapped(true); diff --git a/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java b/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java index c793d56190..817e8a6e76 100644 --- a/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java +++ b/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java @@ -109,6 +109,11 @@ class QuenchableFireEffect extends OneShotEffect { game.getState().getSpecialActions().add(newAction); return true; } + + @Override + public String getText(Ability source) { + return "{this} deals an additional 3 damage to that player at the beginning of your next upkeep step unless he or she pays {U} before that step"; + } } @@ -148,11 +153,6 @@ class QuenchableFireDelayedTriggeredAbility extends DelayedTriggeredAbility { diff --git a/Mage.Sets/src/mage/sets/conflux/RakkaMar.java b/Mage.Sets/src/mage/sets/conflux/RakkaMar.java index 9c39a58dd6..3b1858c730 100644 --- a/Mage.Sets/src/mage/sets/conflux/RakkaMar.java +++ b/Mage.Sets/src/mage/sets/conflux/RakkaMar.java @@ -59,8 +59,8 @@ public class RakkaMar extends CardImpl { this.color.setRed(true); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.abilities.add(HasteAbility.getInstance()); - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(token), new ManaCostsImpl("{1}{R}")); + this.addAbility(HasteAbility.getInstance()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(token), new ManaCostsImpl("{R}")); ability.addCost(new TapSourceCost()); this.addAbility(ability); } @@ -87,7 +87,7 @@ public class RakkaMar extends CardImpl { subtype.add("Elemental"); power = new MageInt(3); toughness = new MageInt(1); - abilities.add(HasteAbility.getInstance()); + addAbility(HasteAbility.getInstance()); } } diff --git a/Mage.Sets/src/mage/sets/conflux/SoulsMajesty.java b/Mage.Sets/src/mage/sets/conflux/SoulsMajesty.java index be5d1e2b8d..c72e1e825c 100644 --- a/Mage.Sets/src/mage/sets/conflux/SoulsMajesty.java +++ b/Mage.Sets/src/mage/sets/conflux/SoulsMajesty.java @@ -38,7 +38,7 @@ import mage.cards.CardImpl; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.common.TargetCrearurePermanentYourControl; +import mage.target.common.TargetControlledCreaturePermanent; /** * @@ -50,7 +50,7 @@ public class SoulsMajesty extends CardImpl { super(ownerId, "Soul's Majesty", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{4}{G}"); this.expansionSetCode = "CON"; this.color.setGreen(true); - this.getSpellAbility().addTarget(new TargetCrearurePermanentYourControl()); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); this.getSpellAbility().addEffect(new SoulsMajestyEffect()); } diff --git a/Mage.Sets/src/mage/sets/magic2010/AcidicSlime.java b/Mage.Sets/src/mage/sets/magic2010/AcidicSlime.java index 21e85093e0..a558d7f585 100644 --- a/Mage.Sets/src/mage/sets/magic2010/AcidicSlime.java +++ b/Mage.Sets/src/mage/sets/magic2010/AcidicSlime.java @@ -68,7 +68,7 @@ public class AcidicSlime extends CardImpl { this.addAbility(DeathtouchAbility.getInstance()); Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - Target target = new TargetPermanent(filter, TargetController.ANY); + Target target = new TargetPermanent(filter); target.setRequired(true); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/sets/magic2010/AjaniGoldmane.java b/Mage.Sets/src/mage/sets/magic2010/AjaniGoldmane.java index f885b0cb46..2b54fa48de 100644 --- a/Mage.Sets/src/mage/sets/magic2010/AjaniGoldmane.java +++ b/Mage.Sets/src/mage/sets/magic2010/AjaniGoldmane.java @@ -101,7 +101,7 @@ class AvatarToken extends Token { cardType.add(CardType.CREATURE); subtype.add("Avatar"); color.setWhite(true); - this.abilities.add(new SimpleStaticAbility(Zone.BATTLEFIELD, new AvatarTokenEffect())); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AvatarTokenEffect())); } } diff --git a/Mage.Sets/src/mage/sets/magic2010/AlluringSiren.java b/Mage.Sets/src/mage/sets/magic2010/AlluringSiren.java index 4fef1182ca..eaa973e32f 100644 --- a/Mage.Sets/src/mage/sets/magic2010/AlluringSiren.java +++ b/Mage.Sets/src/mage/sets/magic2010/AlluringSiren.java @@ -40,9 +40,8 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.RequirementAttackEffect; import mage.cards.CardImpl; +import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; @@ -52,6 +51,12 @@ import mage.target.common.TargetCreaturePermanent; */ public class AlluringSiren extends CardImpl { + private static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls"); + + static { + filter.setTargetController(TargetController.OPPONENT); + } + public AlluringSiren(UUID ownerId) { super(ownerId, "Alluring Siren", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{U}"); this.expansionSetCode = "M10"; @@ -60,9 +65,7 @@ public class AlluringSiren extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AlluringSirenEffect(), new TapSourceCost()); - TargetCreaturePermanent target = new TargetCreaturePermanent(); - target.setTargetController(TargetController.OPPONENT); - ability.addTarget(target); + ability.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/magic2010/AngelsFeather.java b/Mage.Sets/src/mage/sets/magic2010/AngelsFeather.java index c1b35cc6b3..9b615a5c21 100644 --- a/Mage.Sets/src/mage/sets/magic2010/AngelsFeather.java +++ b/Mage.Sets/src/mage/sets/magic2010/AngelsFeather.java @@ -41,4 +41,13 @@ public class AngelsFeather extends mage.sets.tenth.AngelsFeather { this.expansionSetCode = "M10"; } + public AngelsFeather(final AngelsFeather card) { + super(card); + } + + @Override + public AngelsFeather copy() { + return new AngelsFeather(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/Assassinate.java b/Mage.Sets/src/mage/sets/magic2010/Assassinate.java index 0c0889cc96..d764cc6bad 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Assassinate.java +++ b/Mage.Sets/src/mage/sets/magic2010/Assassinate.java @@ -41,4 +41,13 @@ public class Assassinate extends mage.sets.tenth.Assassinate { this.expansionSetCode = "M10"; } + public Assassinate(final Assassinate card) { + super(card); + } + + @Override + public Assassinate copy() { + return new Assassinate(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/BirdsOfParadise.java b/Mage.Sets/src/mage/sets/magic2010/BirdsOfParadise.java index 303c406791..f1000f6148 100644 --- a/Mage.Sets/src/mage/sets/magic2010/BirdsOfParadise.java +++ b/Mage.Sets/src/mage/sets/magic2010/BirdsOfParadise.java @@ -41,4 +41,13 @@ public class BirdsOfParadise extends mage.sets.tenth.BirdsOfParadise { this.expansionSetCode = "M10"; } + public BirdsOfParadise(final BirdsOfParadise card) { + super(card); + } + + @Override + public BirdsOfParadise copy() { + return new BirdsOfParadise(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/Cancel.java b/Mage.Sets/src/mage/sets/magic2010/Cancel.java index 0b9fabb10f..a673324959 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Cancel.java +++ b/Mage.Sets/src/mage/sets/magic2010/Cancel.java @@ -41,4 +41,13 @@ public class Cancel extends mage.sets.shardsofalara.Cancel { this.expansionSetCode = "M10"; } + public Cancel(final Cancel card) { + super(card); + } + + @Override + public Cancel copy() { + return new Cancel(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/CanyonMinotaur.java b/Mage.Sets/src/mage/sets/magic2010/CanyonMinotaur.java index d7cc4dc94a..e3b01d02a1 100644 --- a/Mage.Sets/src/mage/sets/magic2010/CanyonMinotaur.java +++ b/Mage.Sets/src/mage/sets/magic2010/CanyonMinotaur.java @@ -41,4 +41,13 @@ public class CanyonMinotaur extends mage.sets.conflux.CanyonMinotaur { this.expansionSetCode = "M10"; } + public CanyonMinotaur(final CanyonMinotaur card) { + super(card); + } + + @Override + public CanyonMinotaur copy() { + return new CanyonMinotaur(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/CelestialPurge.java b/Mage.Sets/src/mage/sets/magic2010/CelestialPurge.java index 084214e184..54525cc1d7 100644 --- a/Mage.Sets/src/mage/sets/magic2010/CelestialPurge.java +++ b/Mage.Sets/src/mage/sets/magic2010/CelestialPurge.java @@ -41,4 +41,13 @@ public class CelestialPurge extends mage.sets.conflux.CelestialPurge { this.expansionSetCode = "M10"; } + public CelestialPurge(final CelestialPurge card) { + super(card); + } + + @Override + public CelestialPurge copy() { + return new CelestialPurge(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/ChildOfNight.java b/Mage.Sets/src/mage/sets/magic2010/ChildOfNight.java index 6836b0e179..65bcec8039 100644 --- a/Mage.Sets/src/mage/sets/magic2010/ChildOfNight.java +++ b/Mage.Sets/src/mage/sets/magic2010/ChildOfNight.java @@ -49,7 +49,7 @@ public class ChildOfNight extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); - this.abilities.add(LifelinkAbility.getInstance()); + this.addAbility(LifelinkAbility.getInstance()); } public ChildOfNight(final ChildOfNight card) { diff --git a/Mage.Sets/src/mage/sets/magic2010/Clone.java b/Mage.Sets/src/mage/sets/magic2010/Clone.java index 8129fe1384..b2df325131 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Clone.java +++ b/Mage.Sets/src/mage/sets/magic2010/Clone.java @@ -41,4 +41,13 @@ public class Clone extends mage.sets.tenth.Clone { this.expansionSetCode = "M10"; } + public Clone(final Clone card) { + super(card); + } + + @Override + public Clone copy() { + return new Clone(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/Deathmark.java b/Mage.Sets/src/mage/sets/magic2010/Deathmark.java index 169fb6be44..2eb803c0b4 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Deathmark.java +++ b/Mage.Sets/src/mage/sets/magic2010/Deathmark.java @@ -46,4 +46,13 @@ public class Deathmark extends mage.sets.tenth.Deathmark { return "122155_typ_reg_sty_010.jpg"; } + public Deathmark(final Deathmark card) { + super(card); + } + + @Override + public Deathmark copy() { + return new Deathmark(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/DemonsHorn.java b/Mage.Sets/src/mage/sets/magic2010/DemonsHorn.java index 4fb9fc4c14..2a5d2adfa5 100644 --- a/Mage.Sets/src/mage/sets/magic2010/DemonsHorn.java +++ b/Mage.Sets/src/mage/sets/magic2010/DemonsHorn.java @@ -41,4 +41,13 @@ public class DemonsHorn extends mage.sets.tenth.DemonsHorn { this.expansionSetCode = "M10"; } + public DemonsHorn(final DemonsHorn card) { + super(card); + } + + @Override + public DemonsHorn copy() { + return new DemonsHorn(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/DiabolicTutor.java b/Mage.Sets/src/mage/sets/magic2010/DiabolicTutor.java index d70f702afa..f31b78c649 100644 --- a/Mage.Sets/src/mage/sets/magic2010/DiabolicTutor.java +++ b/Mage.Sets/src/mage/sets/magic2010/DiabolicTutor.java @@ -41,4 +41,13 @@ public class DiabolicTutor extends mage.sets.tenth.DiabolicTutor { this.expansionSetCode = "M10"; } + public DiabolicTutor(final DiabolicTutor card) { + super(card); + } + + @Override + public DiabolicTutor copy() { + return new DiabolicTutor(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/DoomBlade.java b/Mage.Sets/src/mage/sets/magic2010/DoomBlade.java index 361d50ebb0..25166c922e 100644 --- a/Mage.Sets/src/mage/sets/magic2010/DoomBlade.java +++ b/Mage.Sets/src/mage/sets/magic2010/DoomBlade.java @@ -31,7 +31,6 @@ package mage.sets.magic2010; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; -import mage.Constants.TargetController; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; @@ -55,7 +54,7 @@ public class DoomBlade extends CardImpl { super(onwerId, "Doom Blade", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{B}"); this.expansionSetCode = "M10"; this.color.setBlack(true); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(1, 1, filter, TargetController.ANY, false)); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/sets/magic2010/DragonsClaw.java b/Mage.Sets/src/mage/sets/magic2010/DragonsClaw.java index 3ff022e754..f16b716bf9 100644 --- a/Mage.Sets/src/mage/sets/magic2010/DragonsClaw.java +++ b/Mage.Sets/src/mage/sets/magic2010/DragonsClaw.java @@ -41,4 +41,13 @@ public class DragonsClaw extends mage.sets.tenth.DragonsClaw { this.expansionSetCode = "M10"; } + public DragonsClaw(final DragonsClaw card) { + super(card); + } + + @Override + public DragonsClaw copy() { + return new DragonsClaw(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/Excommunicate.java b/Mage.Sets/src/mage/sets/magic2010/Excommunicate.java index ecb98909d3..88c0c25c71 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Excommunicate.java +++ b/Mage.Sets/src/mage/sets/magic2010/Excommunicate.java @@ -41,4 +41,13 @@ public class Excommunicate extends mage.sets.shardsofalara.Excommunicate { this.expansionSetCode = "M10"; } + public Excommunicate(final Excommunicate card) { + super(card); + } + + @Override + public Excommunicate copy() { + return new Excommunicate(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/Flashfreeze.java b/Mage.Sets/src/mage/sets/magic2010/Flashfreeze.java index 3968a1a76f..05fed60249 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Flashfreeze.java +++ b/Mage.Sets/src/mage/sets/magic2010/Flashfreeze.java @@ -41,4 +41,13 @@ public class Flashfreeze extends mage.sets.tenth.Flashfreeze { this.expansionSetCode = "M10"; } + public Flashfreeze(final Flashfreeze card) { + super(card); + } + + @Override + public Flashfreeze copy() { + return new Flashfreeze(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/Forest1.java b/Mage.Sets/src/mage/sets/magic2010/Forest1.java index b392967629..4a0d7256de 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Forest1.java +++ b/Mage.Sets/src/mage/sets/magic2010/Forest1.java @@ -46,4 +46,13 @@ public class Forest1 extends mage.cards.basiclands.Forest { return "06769_typ_reg_sty_010.jpg"; } + public Forest1(final Forest1 card) { + super(card); + } + + @Override + public Forest1 copy() { + return new Forest1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/Forest2.java b/Mage.Sets/src/mage/sets/magic2010/Forest2.java index db237353b5..13feba8e7a 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Forest2.java +++ b/Mage.Sets/src/mage/sets/magic2010/Forest2.java @@ -46,4 +46,13 @@ public class Forest2 extends mage.cards.basiclands.Forest { return "121707_typ_reg_sty_010.jpg"; } + public Forest2(final Forest2 card) { + super(card); + } + + @Override + public Forest2 copy() { + return new Forest2(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/Forest3.java b/Mage.Sets/src/mage/sets/magic2010/Forest3.java index b6666b1334..0214346c9e 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Forest3.java +++ b/Mage.Sets/src/mage/sets/magic2010/Forest3.java @@ -46,4 +46,13 @@ public class Forest3 extends mage.cards.basiclands.Forest { return "25501_typ_reg_sty_010.jpg"; } + public Forest3(final Forest3 card) { + super(card); + } + + @Override + public Forest3 copy() { + return new Forest3(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/Forest4.java b/Mage.Sets/src/mage/sets/magic2010/Forest4.java index 3ff274185b..13989a8cb9 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Forest4.java +++ b/Mage.Sets/src/mage/sets/magic2010/Forest4.java @@ -46,4 +46,13 @@ public class Forest4 extends mage.cards.basiclands.Forest { return "121708_typ_reg_sty_010.jpg"; } + public Forest4(final Forest4 card) { + super(card); + } + + @Override + public Forest4 copy() { + return new Forest4(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/GarrukWildspeaker.java b/Mage.Sets/src/mage/sets/magic2010/GarrukWildspeaker.java index 9451cc7059..503a559365 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GarrukWildspeaker.java +++ b/Mage.Sets/src/mage/sets/magic2010/GarrukWildspeaker.java @@ -32,7 +32,6 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; -import mage.Constants.TargetController; import mage.MageInt; import mage.abilities.LoyaltyAbility; import mage.abilities.effects.Effects; @@ -62,7 +61,7 @@ public class GarrukWildspeaker extends CardImpl { this.loyalty = new MageInt(3); LoyaltyAbility ability1 = new LoyaltyAbility(new UntapTargetEffect(), 1); - ability1.addTarget(new TargetLandPermanent(2, TargetController.ANY)); + ability1.addTarget(new TargetLandPermanent(2)); this.addAbility(ability1); this.addAbility(new LoyaltyAbility(new CreateTokenEffect(beastToken), -1)); diff --git a/Mage.Sets/src/mage/sets/magic2010/GiantGrowth.java b/Mage.Sets/src/mage/sets/magic2010/GiantGrowth.java index b575d7907f..1692fa636b 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GiantGrowth.java +++ b/Mage.Sets/src/mage/sets/magic2010/GiantGrowth.java @@ -41,4 +41,13 @@ public class GiantGrowth extends mage.sets.tenth.GiantGrowth { this.expansionSetCode = "M10"; } + public GiantGrowth(final GiantGrowth card) { + super(card); + } + + @Override + public GiantGrowth copy() { + return new GiantGrowth(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/GiantSpider.java b/Mage.Sets/src/mage/sets/magic2010/GiantSpider.java index 13cb84bbb3..bd257a0067 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GiantSpider.java +++ b/Mage.Sets/src/mage/sets/magic2010/GiantSpider.java @@ -41,4 +41,13 @@ public class GiantSpider extends mage.sets.tenth.GiantSpider { this.expansionSetCode = "M10"; } + public GiantSpider(final GiantSpider card) { + super(card); + } + + @Override + public GiantSpider copy() { + return new GiantSpider(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java b/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java index aefcc18bd3..863436e992 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java +++ b/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java @@ -55,7 +55,7 @@ public class GoblinChieftain extends CardImpl { public GoblinChieftain(UUID ownerId) { super(ownerId, "Goblin Chieftain", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{R}{R}"); - this.expansionSetCode = "M11"; + this.expansionSetCode = "M10"; this.subtype.add("Goblin"); this.color.setRed(true); this.power = new MageInt(2); diff --git a/Mage.Sets/src/mage/sets/magic2010/GoblinPiker.java b/Mage.Sets/src/mage/sets/magic2010/GoblinPiker.java index 383d27b9cf..654b3b203f 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GoblinPiker.java +++ b/Mage.Sets/src/mage/sets/magic2010/GoblinPiker.java @@ -41,4 +41,13 @@ public class GoblinPiker extends mage.sets.tenth.GoblinPiker { this.expansionSetCode = "M10"; } + public GoblinPiker(final GoblinPiker card) { + super(card); + } + + @Override + public GoblinPiker copy() { + return new GoblinPiker(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/Gravedigger.java b/Mage.Sets/src/mage/sets/magic2010/Gravedigger.java index 6cd5450b00..7449ad4a6b 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Gravedigger.java +++ b/Mage.Sets/src/mage/sets/magic2010/Gravedigger.java @@ -41,4 +41,13 @@ public class Gravedigger extends mage.sets.tenth.Gravedigger { this.expansionSetCode = "M10"; } + public Gravedigger(final Gravedigger card) { + super(card); + } + + @Override + public Gravedigger copy() { + return new Gravedigger(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/HolyStrength.java b/Mage.Sets/src/mage/sets/magic2010/HolyStrength.java index c9fd85f0f7..9bf3e2ef0b 100644 --- a/Mage.Sets/src/mage/sets/magic2010/HolyStrength.java +++ b/Mage.Sets/src/mage/sets/magic2010/HolyStrength.java @@ -41,4 +41,13 @@ public class HolyStrength extends mage.sets.tenth.HolyStrength { this.expansionSetCode = "M10"; } + public HolyStrength(final HolyStrength card) { + super(card); + } + + @Override + public HolyStrength copy() { + return new HolyStrength(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/HowlingMine.java b/Mage.Sets/src/mage/sets/magic2010/HowlingMine.java index 379c352ab4..8352ecfb20 100644 --- a/Mage.Sets/src/mage/sets/magic2010/HowlingMine.java +++ b/Mage.Sets/src/mage/sets/magic2010/HowlingMine.java @@ -95,7 +95,7 @@ class HowlingMineAbility extends TriggeredAbilityImpl { } @Override - public boolean checkIfClause(Game game) { + public boolean checkInterveningIfClause(Game game) { return !game.getPermanent(this.sourceId).isTapped(); } diff --git a/Mage.Sets/src/mage/sets/magic2010/Island1.java b/Mage.Sets/src/mage/sets/magic2010/Island1.java index e09dbdffae..8c42a3378f 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Island1.java +++ b/Mage.Sets/src/mage/sets/magic2010/Island1.java @@ -46,4 +46,13 @@ public class Island1 extends mage.cards.basiclands.Island { return "121700_typ_reg_sty_010.jpg"; } + public Island1(final Island1 card) { + super(card); + } + + @Override + public Island1 copy() { + return new Island1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/Island2.java b/Mage.Sets/src/mage/sets/magic2010/Island2.java index 2d77847f63..357e968eaa 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Island2.java +++ b/Mage.Sets/src/mage/sets/magic2010/Island2.java @@ -46,4 +46,13 @@ public class Island2 extends mage.cards.basiclands.Island { return "121687_typ_reg_sty_010.jpg"; } + public Island2(final Island2 card) { + super(card); + } + + @Override + public Island2 copy() { + return new Island2(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/Island3.java b/Mage.Sets/src/mage/sets/magic2010/Island3.java index ee2a34bda6..08b5877ad9 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Island3.java +++ b/Mage.Sets/src/mage/sets/magic2010/Island3.java @@ -46,4 +46,13 @@ public class Island3 extends mage.cards.basiclands.Island { return "25162_typ_reg_sty_010.jpg"; } + public Island3(final Island3 card) { + super(card); + } + + @Override + public Island3 copy() { + return new Island3(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/Island4.java b/Mage.Sets/src/mage/sets/magic2010/Island4.java index 0eba977e59..e824789584 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Island4.java +++ b/Mage.Sets/src/mage/sets/magic2010/Island4.java @@ -46,4 +46,13 @@ public class Island4 extends mage.cards.basiclands.Island { return "19006_typ_reg_sty_010.jpg"; } + public Island4(final Island4 card) { + super(card); + } + + @Override + public Island4 copy() { + return new Island4(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2010/KrakensEye.java b/Mage.Sets/src/mage/sets/magic2010/KrakensEye.java index 0914c20a10..c5303079a4 100644 --- a/Mage.Sets/src/mage/sets/magic2010/KrakensEye.java +++ b/Mage.Sets/src/mage/sets/magic2010/KrakensEye.java @@ -41,4 +41,13 @@ public class KrakensEye extends mage.sets.tenth.KrakensEye { this.expansionSetCode = "M10"; } + public KrakensEye(final KrakensEye card) { + super(card); + } + + @Override + public KrakensEye copy() { + return new KrakensEye(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/LavaAxe.java b/Mage.Sets/src/mage/sets/magic2010/LavaAxe.java index 3a9804c295..b101fb3f0d 100644 --- a/Mage.Sets/src/mage/sets/magic2010/LavaAxe.java +++ b/Mage.Sets/src/mage/sets/magic2010/LavaAxe.java @@ -41,4 +41,13 @@ public class LavaAxe extends mage.sets.tenth.LavaAxe { this.expansionSetCode = "M10"; } + public LavaAxe(final LavaAxe card) { + super(card); + } + + @Override + public LavaAxe copy() { + return new LavaAxe(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/LilianaVess.java b/Mage.Sets/src/mage/sets/magic2010/LilianaVess.java new file mode 100644 index 0000000000..2d1524bbda --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/LilianaVess.java @@ -0,0 +1,123 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2010; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.LoyaltyAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DiscardTargetEffect; +import mage.abilities.effects.common.DrawCardAllEffect; +import mage.abilities.effects.common.DrawCardTargetEffect; +import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect; +import mage.abilities.effects.common.SearchLibraryPutOnLibraryEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.players.Player; +import mage.target.TargetPlayer; +import mage.target.common.TargetCardInLibrary; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LilianaVess extends CardImpl { + + public LilianaVess(UUID ownerId) { + super(ownerId, "Liliana Vess", Rarity.MYTHIC, new CardType[]{CardType.PLANESWALKER}, "{3}{B}{B}"); + this.expansionSetCode = "M10"; + this.subtype.add("Liliana"); + this.color.setBlack(true); + this.loyalty = new MageInt(5); + + LoyaltyAbility ability1 = new LoyaltyAbility(new DiscardTargetEffect(1), -1); + ability1.addTarget(new TargetPlayer()); + this.addAbility(ability1); + + this.addAbility(new LoyaltyAbility(new SearchLibraryPutOnLibraryEffect(new TargetCardInLibrary()), -2)); + + this.addAbility(new LoyaltyAbility(new LilianaVessEffect(), -8)); + + } + + public LilianaVess(final LilianaVess card) { + super(card); + } + + @Override + public LilianaVess copy() { + return new LilianaVess(this); + } + + @Override + public String getArt() { + return "105529_typ_reg_sty_010.jpg"; + } + +} + +class LilianaVessEffect extends OneShotEffect { + + public LilianaVessEffect() { + super(Outcome.PutCreatureInPlay); + } + + public LilianaVessEffect(final LilianaVessEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + for (Player player: game.getPlayers().values()) { + for (Card card: player.getGraveyard().getCards(game)) { + if (card.getCardType().contains(CardType.CREATURE)) { + player.getGraveyard().remove(card); + card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getControllerId()); + } + } + } + return true; + } + + @Override + public LilianaVessEffect copy() { + return new LilianaVessEffect(this); + } + + @Override + public String getText(Ability source) { + return "Put all creature cards in all graveyards onto the battlefield under your control"; + } +} diff --git a/Mage.Sets/src/mage/sets/magic2010/LlanowarElves.java b/Mage.Sets/src/mage/sets/magic2010/LlanowarElves.java index 96cc1fb079..737c656b9f 100644 --- a/Mage.Sets/src/mage/sets/magic2010/LlanowarElves.java +++ b/Mage.Sets/src/mage/sets/magic2010/LlanowarElves.java @@ -29,27 +29,16 @@ package mage.sets.magic2010; import java.util.UUID; -import mage.Constants.CardType; -import mage.Constants.Rarity; -import mage.MageInt; -import mage.abilities.mana.GreenManaAbility; -import mage.cards.CardImpl; /** * * @author BetaSteward_at_googlemail.com */ -public class LlanowarElves extends CardImpl { +public class LlanowarElves extends mage.sets.tenth.LlanowarElves { public LlanowarElves(UUID ownerId) { - super(ownerId, "Llanowar Elves", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{G}"); + super(ownerId); this.expansionSetCode = "M10"; - this.subtype.add("Elf"); - this.subtype.add("Druid"); - this.color.setGreen(true); - this.power = new MageInt(1); - this.toughness = new MageInt(1); - this.addAbility(new GreenManaAbility()); } public LlanowarElves(final LlanowarElves card) { @@ -61,9 +50,4 @@ public class LlanowarElves extends CardImpl { return new LlanowarElves(this); } - @Override - public String getArt() { - return "86938_typ_reg_sty_010.jpg"; - } - -} +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/MagmaPhoenix.java b/Mage.Sets/src/mage/sets/magic2010/MagmaPhoenix.java new file mode 100644 index 0000000000..e608380098 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/MagmaPhoenix.java @@ -0,0 +1,77 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2010; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.PutIntoGraveFromBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.DamageEverythingEffect; +import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MagmaPhoenix extends CardImpl { + + public MagmaPhoenix(UUID ownerId) { + super(ownerId, "Magma Phoenix", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{R}{R}"); + this.expansionSetCode = "M10"; + this.subtype.add("Phoenix"); + this.color.setRed(true); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + this.addAbility(FlyingAbility.getInstance()); + this.addAbility(new PutIntoGraveFromBattlefieldTriggeredAbility(new DamageEverythingEffect(3), false)); + this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), new ManaCostsImpl("{3}{R}{R}"))); + } + + public MagmaPhoenix(final MagmaPhoenix card) { + super(card); + } + + @Override + public MagmaPhoenix copy() { + return new MagmaPhoenix(this); + } + + @Override + public String getArt() { + return "121697_typ_reg_sty_010.jpg"; + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java b/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java new file mode 100644 index 0000000000..54d0d31b43 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java @@ -0,0 +1,92 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2010; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.BoostControlledEffect; +import mage.abilities.effects.common.GainAbilityControlledEffect; +import mage.abilities.effects.common.GainAbilityTargetEffect; +import mage.abilities.keyword.HasteAbility; +import mage.abilities.keyword.UnblockableAbility; +import mage.cards.CardImpl; +import mage.filter.common.FilterCreaturePermanent; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MerfolkSovereign extends CardImpl { + + private static FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Merfolk creatures"); + private static FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Merfolk creature"); + + static { + filter1.getSubtype().add("Merfolk"); + filter2.getSubtype().add("Merfolk"); + } + + public MerfolkSovereign(UUID ownerId) { + super(ownerId, "Merfolk Sovereign", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{U}{U}"); + this.expansionSetCode = "M10"; + this.subtype.add("Merfolk"); + this.color.setBlue(true); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter1, true))); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(UnblockableAbility.getInstance(), Duration.EndOfTurn), new TapSourceCost()); + ability.addTarget(new TargetCreaturePermanent(filter2)); + this.addAbility(ability); + } + + public MerfolkSovereign(final MerfolkSovereign card) { + super(card); + } + + @Override + public MerfolkSovereign copy() { + return new MerfolkSovereign(this); + } + + @Override + public String getArt() { + return "121667_typ_reg_sty_010.jpg"; + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2010/MindControl.java b/Mage.Sets/src/mage/sets/magic2010/MindControl.java new file mode 100644 index 0000000000..4f25ebb5ba --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/MindControl.java @@ -0,0 +1,134 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2010; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Layer; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Constants.SubLayer; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.effects.common.AttachEffect; +import mage.abilities.keyword.EnchantAbility; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MindControl extends CardImpl { + + public MindControl(UUID ownerId) { + super(ownerId, "Mind Control", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}"); + this.expansionSetCode = "M10"; + this.color.setBlue(true); + this.subtype.add("Aura"); + + TargetPermanent auraTarget = new TargetCreaturePermanent(); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); + Ability ability = new EnchantAbility(Outcome.Detriment, auraTarget); + this.addAbility(ability); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new MindControlEffect())); + + } + + public MindControl(final MindControl card) { + super(card); + } + + @Override + public MindControl copy() { + return new MindControl(this); + } + + @Override + public String getArt() { + return "121615_typ_reg_sty_010.jpg"; + } +} + +class MindControlEffect extends ContinuousEffectImpl { + + public MindControlEffect() { + super(Duration.WhileOnBattlefield, Outcome.Detriment); + } + + public MindControlEffect(final MindControlEffect effect) { + super(effect); + } + + @Override + public MindControlEffect copy() { + return new MindControlEffect(this); + } + + @Override + public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) { + Permanent enchantment = game.getPermanent(source.getSourceId()); + if (enchantment != null && enchantment.getAttachedTo() != null) { + Permanent creature = game.getPermanent(enchantment.getAttachedTo()); + if (creature != null) { + switch (layer) { + case ControlChangingEffects_2: + if (sublayer == SubLayer.NA) { + creature.changeControllerId(source.getControllerId(), game); + } + break; + } + return true; + } + } + return false; + } + + @Override + public boolean apply(Game game, Ability source) { + return false; + } + + @Override + public boolean hasLayer(Layer layer) { + return layer == Layer.ControlChangingEffects_2; + } + + @Override + public String getText(Ability source) { + return ""; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/MindRot.java b/Mage.Sets/src/mage/sets/magic2010/MindRot.java index 22a115313b..62e2b875b8 100644 --- a/Mage.Sets/src/mage/sets/magic2010/MindRot.java +++ b/Mage.Sets/src/mage/sets/magic2010/MindRot.java @@ -29,25 +29,17 @@ package mage.sets.magic2010; import java.util.UUID; -import mage.Constants.CardType; -import mage.Constants.Rarity; -import mage.abilities.effects.common.DiscardTargetEffect; -import mage.cards.CardImpl; -import mage.target.TargetPlayer; /** * - * @author LokiX + * @author BetaSteward_at_googlemail.com */ -public class MindRot extends CardImpl { +public class MindRot extends mage.sets.tenth.MindRot { - public MindRot(UUID onwerId){ - super(onwerId, "Mind Rot", Rarity.COMMON, new CardType[]{CardType.SORCERY},"{2}{B}"); - this.expansionSetCode = "M10"; - this.color.setBlack(true); - this.getSpellAbility().addTarget(new TargetPlayer()); - this.getSpellAbility().addEffect(new DiscardTargetEffect(2)); - } + public MindRot(UUID ownerId) { + super(ownerId); + this.expansionSetCode = "M10"; + } public MindRot(final MindRot card) { super(card); @@ -58,8 +50,4 @@ public class MindRot extends CardImpl { return new MindRot(this); } - @Override - public String getArt() { - return "04716_typ_reg_sty_001.jpg"; - } -} +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/Naturalize.java b/Mage.Sets/src/mage/sets/magic2010/Naturalize.java index 8252c0f4b9..bd7f4d32a2 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Naturalize.java +++ b/Mage.Sets/src/mage/sets/magic2010/Naturalize.java @@ -31,7 +31,6 @@ package mage.sets.magic2010; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; -import mage.Constants.TargetController; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; @@ -56,7 +55,7 @@ public class Naturalize extends CardImpl { super(onwerId, "Naturalize", Rarity.COMMON, new CardType[]{CardType.INSTANT},"{1}{G}"); this.expansionSetCode = "M10"; this.color.setGreen(true); - this.getSpellAbility().addTarget(new TargetPermanent(filter, TargetController.ANY)); + this.getSpellAbility().addTarget(new TargetPermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/sets/magic2010/RoyalAssassin.java b/Mage.Sets/src/mage/sets/magic2010/RoyalAssassin.java index 2e799f7601..a9d0469239 100644 --- a/Mage.Sets/src/mage/sets/magic2010/RoyalAssassin.java +++ b/Mage.Sets/src/mage/sets/magic2010/RoyalAssassin.java @@ -31,14 +31,13 @@ package mage.sets.magic2010; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; -import mage.Constants.TargetController; import mage.Constants.Zone; import mage.MageInt; -import mage.abilities.ActivatedAbilityImpl; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -48,6 +47,13 @@ import mage.target.common.TargetCreaturePermanent; */ public class RoyalAssassin extends CardImpl { + private static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature"); + + static { + filter.setUseTapped(true); + filter.setTapped(true); + } + public RoyalAssassin(UUID onwerId){ super(onwerId,"Royal Assassin", Rarity.RARE, new CardType[]{CardType.CREATURE},"{1}{B}{B}"); this.expansionSetCode = "M10"; @@ -57,7 +63,9 @@ public class RoyalAssassin extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - this.addAbility(new RoyalAssassinAbility()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new TapSourceCost()); + ability.addTarget(new TargetCreaturePermanent(filter)); + this.addAbility(ability); } public RoyalAssassin(final RoyalAssassin card) { @@ -74,31 +82,3 @@ public class RoyalAssassin extends CardImpl { return "48786_typ_reg_sty_010.jpg"; } } - -class RoyalAssassinAbility extends ActivatedAbilityImpl { - - private static FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature"); - - static { - filter.setUseTapped(true); - filter.setScopeColor(ComparisonScope.Any); - filter.setTapped(true); - } - - public RoyalAssassinAbility(){ - super(Zone.BATTLEFIELD, null); - addTarget(new TargetCreaturePermanent(1, 1, filter, TargetController.ANY, false)); - addCost(new TapSourceCost()); - addEffect(new DestroyTargetEffect()); - } - - public RoyalAssassinAbility(final RoyalAssassinAbility ability) { - super(ability); - } - - @Override - public RoyalAssassinAbility copy() { - return new RoyalAssassinAbility(this); - } - -} diff --git a/Mage.Sets/src/mage/sets/magic2011/AcidicSlime.java b/Mage.Sets/src/mage/sets/magic2011/AcidicSlime.java index 003fd09f3d..c5135f4166 100644 --- a/Mage.Sets/src/mage/sets/magic2011/AcidicSlime.java +++ b/Mage.Sets/src/mage/sets/magic2011/AcidicSlime.java @@ -41,4 +41,13 @@ public class AcidicSlime extends mage.sets.magic2010.AcidicSlime { this.expansionSetCode = "M11"; } + public AcidicSlime(final AcidicSlime card) { + super(card); + } + + @Override + public AcidicSlime copy() { + return new AcidicSlime(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/ActOfTreason.java b/Mage.Sets/src/mage/sets/magic2011/ActOfTreason.java index ebb1589fdb..c1b2bdd384 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ActOfTreason.java +++ b/Mage.Sets/src/mage/sets/magic2011/ActOfTreason.java @@ -41,4 +41,13 @@ public class ActOfTreason extends mage.sets.magic2010.ActOfTreason { this.expansionSetCode = "M11"; } + public ActOfTreason(final ActOfTreason card) { + super(card); + } + + @Override + public ActOfTreason copy() { + return new ActOfTreason(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/AjaniGoldmane.java b/Mage.Sets/src/mage/sets/magic2011/AjaniGoldmane.java index a215830f63..5eaa594787 100644 --- a/Mage.Sets/src/mage/sets/magic2011/AjaniGoldmane.java +++ b/Mage.Sets/src/mage/sets/magic2011/AjaniGoldmane.java @@ -41,4 +41,13 @@ public class AjaniGoldmane extends mage.sets.magic2010.AjaniGoldmane { this.expansionSetCode = "M11"; } + public AjaniGoldmane(final AjaniGoldmane card) { + super(card); + } + + @Override + public AjaniGoldmane copy() { + return new AjaniGoldmane(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/AlluringSiren.java b/Mage.Sets/src/mage/sets/magic2011/AlluringSiren.java index 3fabfb338d..a958cfb2f9 100644 --- a/Mage.Sets/src/mage/sets/magic2011/AlluringSiren.java +++ b/Mage.Sets/src/mage/sets/magic2011/AlluringSiren.java @@ -41,4 +41,13 @@ public class AlluringSiren extends mage.sets.magic2010.AlluringSiren { this.expansionSetCode = "M11"; } + public AlluringSiren(final AlluringSiren card) { + super(card); + } + + @Override + public AlluringSiren copy() { + return new AlluringSiren(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/AngelsFeather.java b/Mage.Sets/src/mage/sets/magic2011/AngelsFeather.java index 83fe025112..b6ce1ae2a9 100644 --- a/Mage.Sets/src/mage/sets/magic2011/AngelsFeather.java +++ b/Mage.Sets/src/mage/sets/magic2011/AngelsFeather.java @@ -41,4 +41,13 @@ public class AngelsFeather extends mage.sets.tenth.AngelsFeather { this.expansionSetCode = "M11"; } + public AngelsFeather(final AngelsFeather card) { + super(card); + } + + @Override + public AngelsFeather copy() { + return new AngelsFeather(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/ArmoredAscension.java b/Mage.Sets/src/mage/sets/magic2011/ArmoredAscension.java index b07c18dc10..d07de98bf7 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ArmoredAscension.java +++ b/Mage.Sets/src/mage/sets/magic2011/ArmoredAscension.java @@ -41,4 +41,13 @@ public class ArmoredAscension extends mage.sets.magic2010.ArmoredAscension { this.expansionSetCode = "M11"; } + public ArmoredAscension(final ArmoredAscension card) { + super(card); + } + + @Override + public ArmoredAscension copy() { + return new ArmoredAscension(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Assassinate.java b/Mage.Sets/src/mage/sets/magic2011/Assassinate.java index 04be3d60b1..8f86bde3ed 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Assassinate.java +++ b/Mage.Sets/src/mage/sets/magic2011/Assassinate.java @@ -41,4 +41,13 @@ public class Assassinate extends mage.sets.tenth.Assassinate { this.expansionSetCode = "M11"; } + public Assassinate(final Assassinate card) { + super(card); + } + + @Override + public Assassinate copy() { + return new Assassinate(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/AutumnsVeil.java b/Mage.Sets/src/mage/sets/magic2011/AutumnsVeil.java index 367adca630..08955c2e35 100644 --- a/Mage.Sets/src/mage/sets/magic2011/AutumnsVeil.java +++ b/Mage.Sets/src/mage/sets/magic2011/AutumnsVeil.java @@ -32,12 +32,13 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Duration; import mage.Constants.Rarity; +import mage.ObjectColor; import mage.abilities.effects.common.CantCounterControlledEffect; import mage.abilities.effects.common.CantTargetControlledEffect; import mage.cards.CardImpl; -import mage.filter.FilterObject; -import mage.filter.FilterPermanent; +import mage.filter.Filter.ComparisonScope; import mage.filter.FilterSpell; +import mage.filter.FilterStackObject; import mage.filter.common.FilterCreaturePermanent; /** @@ -48,7 +49,13 @@ public class AutumnsVeil extends CardImpl { private static FilterSpell filterTarget1 = new FilterSpell("spells you control"); private static FilterCreaturePermanent filterTarget2 = FilterCreaturePermanent.getDefault(); - private static FilterObject filterSource = new FilterObject("blue or black spells"); + private static FilterStackObject filterSource = new FilterStackObject("blue or black spells"); + + static { + filterSource.getColor().setBlue(true); + filterSource.getColor().setBlack(true); + filterSource.setScopeColor(ComparisonScope.Any); + } public AutumnsVeil(UUID ownerId) { super(ownerId, "Autumn's Veil", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{G}"); diff --git a/Mage.Sets/src/mage/sets/magic2011/AwakenerDruid.java b/Mage.Sets/src/mage/sets/magic2011/AwakenerDruid.java index acf20102cb..ceeaabf3de 100644 --- a/Mage.Sets/src/mage/sets/magic2011/AwakenerDruid.java +++ b/Mage.Sets/src/mage/sets/magic2011/AwakenerDruid.java @@ -41,4 +41,13 @@ public class AwakenerDruid extends mage.sets.magic2010.AwakenerDruid { this.expansionSetCode = "M11"; } + public AwakenerDruid(final AwakenerDruid card) { + super(card); + } + + @Override + public AwakenerDruid copy() { + return new AwakenerDruid(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/BaneslayerAngel.java b/Mage.Sets/src/mage/sets/magic2011/BaneslayerAngel.java index 4ffe7d8503..b8e8cedd5b 100644 --- a/Mage.Sets/src/mage/sets/magic2011/BaneslayerAngel.java +++ b/Mage.Sets/src/mage/sets/magic2011/BaneslayerAngel.java @@ -41,4 +41,13 @@ public class BaneslayerAngel extends mage.sets.magic2010.BaneslayerAngel { this.expansionSetCode = "M11"; } + public BaneslayerAngel(final BaneslayerAngel card) { + super(card); + } + + @Override + public BaneslayerAngel copy() { + return new BaneslayerAngel(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/BerserkersOfBloodRidge.java b/Mage.Sets/src/mage/sets/magic2011/BerserkersOfBloodRidge.java index 34f8ee08fe..27ffd6f2ec 100644 --- a/Mage.Sets/src/mage/sets/magic2011/BerserkersOfBloodRidge.java +++ b/Mage.Sets/src/mage/sets/magic2011/BerserkersOfBloodRidge.java @@ -41,4 +41,13 @@ public class BerserkersOfBloodRidge extends mage.sets.magic2010.BerserkersOfBloo this.expansionSetCode = "M11"; } + public BerserkersOfBloodRidge(final BerserkersOfBloodRidge card) { + super(card); + } + + @Override + public BerserkersOfBloodRidge copy() { + return new BerserkersOfBloodRidge(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/BirdsOfParadise.java b/Mage.Sets/src/mage/sets/magic2011/BirdsOfParadise.java index 6da5d44199..5e3597bcc7 100644 --- a/Mage.Sets/src/mage/sets/magic2011/BirdsOfParadise.java +++ b/Mage.Sets/src/mage/sets/magic2011/BirdsOfParadise.java @@ -41,4 +41,13 @@ public class BirdsOfParadise extends mage.sets.tenth.BirdsOfParadise { this.expansionSetCode = "M11"; } + public BirdsOfParadise(final BirdsOfParadise card) { + super(card); + } + + @Override + public BirdsOfParadise copy() { + return new BirdsOfParadise(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/BlackKnight.java b/Mage.Sets/src/mage/sets/magic2011/BlackKnight.java index af9e7c816d..f00c42128b 100644 --- a/Mage.Sets/src/mage/sets/magic2011/BlackKnight.java +++ b/Mage.Sets/src/mage/sets/magic2011/BlackKnight.java @@ -41,4 +41,13 @@ public class BlackKnight extends mage.sets.magic2010.BlackKnight { this.expansionSetCode = "M11"; } + public BlackKnight(final BlackKnight card) { + super(card); + } + + @Override + public BlackKnight copy() { + return new BlackKnight(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/BlindingMage.java b/Mage.Sets/src/mage/sets/magic2011/BlindingMage.java index d12bc58e99..e614b936d4 100644 --- a/Mage.Sets/src/mage/sets/magic2011/BlindingMage.java +++ b/Mage.Sets/src/mage/sets/magic2011/BlindingMage.java @@ -41,4 +41,13 @@ public class BlindingMage extends mage.sets.magic2010.BlindingMage { this.expansionSetCode = "M11"; } + public BlindingMage(final BlindingMage card) { + super(card); + } + + @Override + public BlindingMage copy() { + return new BlindingMage(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/BloodthroneVampire.java b/Mage.Sets/src/mage/sets/magic2011/BloodthroneVampire.java index 4032279fd6..188e425483 100644 --- a/Mage.Sets/src/mage/sets/magic2011/BloodthroneVampire.java +++ b/Mage.Sets/src/mage/sets/magic2011/BloodthroneVampire.java @@ -41,4 +41,13 @@ public class BloodthroneVampire extends mage.sets.riseoftheeldrazi.BloodthroneVa this.expansionSetCode = "M11"; } + public BloodthroneVampire(final BloodthroneVampire card) { + super(card); + } + + @Override + public BloodthroneVampire copy() { + return new BloodthroneVampire(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/Cancel.java b/Mage.Sets/src/mage/sets/magic2011/Cancel.java index c300d11d96..652acb743b 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Cancel.java +++ b/Mage.Sets/src/mage/sets/magic2011/Cancel.java @@ -41,4 +41,13 @@ public class Cancel extends mage.sets.shardsofalara.Cancel { this.expansionSetCode = "M11"; } + public Cancel(final Cancel card) { + super(card); + } + + @Override + public Cancel copy() { + return new Cancel(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/CanyonMinotaur.java b/Mage.Sets/src/mage/sets/magic2011/CanyonMinotaur.java index e14e90a5af..895314234d 100644 --- a/Mage.Sets/src/mage/sets/magic2011/CanyonMinotaur.java +++ b/Mage.Sets/src/mage/sets/magic2011/CanyonMinotaur.java @@ -41,4 +41,13 @@ public class CanyonMinotaur extends mage.sets.conflux.CanyonMinotaur { this.expansionSetCode = "M11"; } + public CanyonMinotaur(final CanyonMinotaur card) { + super(card); + } + + @Override + public CanyonMinotaur copy() { + return new CanyonMinotaur(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/CaptivatingVampire.java b/Mage.Sets/src/mage/sets/magic2011/CaptivatingVampire.java index 3b64f6f832..aee882f18d 100644 --- a/Mage.Sets/src/mage/sets/magic2011/CaptivatingVampire.java +++ b/Mage.Sets/src/mage/sets/magic2011/CaptivatingVampire.java @@ -44,9 +44,13 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.BoostControlledEffect; import mage.cards.CardImpl; +import mage.filter.Filter.ComparisonScope; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -57,7 +61,7 @@ import mage.target.common.TargetCreaturePermanent; public class CaptivatingVampire extends CardImpl { private static FilterCreaturePermanent filter1 = new FilterCreaturePermanent("Vampire creatures"); - private static FilterCreaturePermanent filter2 = new FilterCreaturePermanent("five untapped Vampires"); + private static FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("five untapped Vampires"); static { filter1.getSubtype().add("Vampire"); @@ -75,7 +79,7 @@ public class CaptivatingVampire extends CardImpl { this.toughness = new MageInt(2); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter1, true))); - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CaptivatingVampireEffect(), new TapTargetCost(new TargetControlledPermanent(5, 5, filter2, true))); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CaptivatingVampireEffect(), new TapTargetCost(new TargetControlledCreaturePermanent(5, 5, filter2, true))); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/magic2011/CelestialPurge.java b/Mage.Sets/src/mage/sets/magic2011/CelestialPurge.java index ba7d87274f..b7e0d53cc4 100644 --- a/Mage.Sets/src/mage/sets/magic2011/CelestialPurge.java +++ b/Mage.Sets/src/mage/sets/magic2011/CelestialPurge.java @@ -41,4 +41,13 @@ public class CelestialPurge extends mage.sets.conflux.CelestialPurge { this.expansionSetCode = "M11"; } + public CelestialPurge(final CelestialPurge card) { + super(card); + } + + @Override + public CelestialPurge copy() { + return new CelestialPurge(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/ChandraNalaar.java b/Mage.Sets/src/mage/sets/magic2011/ChandraNalaar.java index a8f7099428..5302cf3a92 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ChandraNalaar.java +++ b/Mage.Sets/src/mage/sets/magic2011/ChandraNalaar.java @@ -41,4 +41,13 @@ public class ChandraNalaar extends mage.sets.magic2010.ChandraNalaar { this.expansionSetCode = "M11"; } + public ChandraNalaar(final ChandraNalaar card) { + super(card); + } + + @Override + public ChandraNalaar copy() { + return new ChandraNalaar(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/ChildOfNight.java b/Mage.Sets/src/mage/sets/magic2011/ChildOfNight.java index b6f9b4d07b..e411ba9daa 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ChildOfNight.java +++ b/Mage.Sets/src/mage/sets/magic2011/ChildOfNight.java @@ -41,4 +41,13 @@ public class ChildOfNight extends mage.sets.magic2010.ChildOfNight { this.expansionSetCode = "M11"; } + public ChildOfNight(final ChildOfNight card) { + super(card); + } + + @Override + public ChildOfNight copy() { + return new ChildOfNight(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Clone.java b/Mage.Sets/src/mage/sets/magic2011/Clone.java index a56154b2b5..d01067fa51 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Clone.java +++ b/Mage.Sets/src/mage/sets/magic2011/Clone.java @@ -41,4 +41,13 @@ public class Clone extends mage.sets.tenth.Clone { this.expansionSetCode = "M11"; } + public Clone(final Clone card) { + super(card); + } + + @Override + public Clone copy() { + return new Clone(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/CloudElemental.java b/Mage.Sets/src/mage/sets/magic2011/CloudElemental.java index 2656b94206..c357109f8c 100644 --- a/Mage.Sets/src/mage/sets/magic2011/CloudElemental.java +++ b/Mage.Sets/src/mage/sets/magic2011/CloudElemental.java @@ -41,4 +41,13 @@ public class CloudElemental extends mage.sets.tenth.CloudElemental { this.expansionSetCode = "M11"; } + public CloudElemental(final CloudElemental card) { + super(card); + } + + @Override + public CloudElemental copy() { + return new CloudElemental(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/Condemn.java b/Mage.Sets/src/mage/sets/magic2011/Condemn.java index 22ab4027ba..dfd2e34c09 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Condemn.java +++ b/Mage.Sets/src/mage/sets/magic2011/Condemn.java @@ -41,4 +41,13 @@ public class Condemn extends mage.sets.tenth.Condemn { this.expansionSetCode = "M11"; } + public Condemn(final Condemn card) { + super(card); + } + + @Override + public Condemn copy() { + return new Condemn(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/ConundrumSphinx.java b/Mage.Sets/src/mage/sets/magic2011/ConundrumSphinx.java index 65d1daff90..19a879fe50 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ConundrumSphinx.java +++ b/Mage.Sets/src/mage/sets/magic2011/ConundrumSphinx.java @@ -34,6 +34,7 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Outcome; import mage.Constants.Rarity; +import mage.Constants.Zone; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; @@ -106,10 +107,10 @@ class ConundrumSphinxEffect extends OneShotEffect { cards.add(card); player.revealCards(cards, game); if (card.getName().equals(cardChoice.getChoice())) { - player.putInHand(card, game); + card.moveToZone(Zone.HAND, game, true); } else { - player.getLibrary().putOnBottom(card, game); + card.moveToZone(Zone.LIBRARY, game, false); } } diff --git a/Mage.Sets/src/mage/sets/magic2011/CudgelTroll.java b/Mage.Sets/src/mage/sets/magic2011/CudgelTroll.java index b1804b632d..6a75e3fb86 100644 --- a/Mage.Sets/src/mage/sets/magic2011/CudgelTroll.java +++ b/Mage.Sets/src/mage/sets/magic2011/CudgelTroll.java @@ -41,4 +41,13 @@ public class CudgelTroll extends mage.sets.magic2010.CudgelTroll { this.expansionSetCode = "M11"; } + public CudgelTroll(final CudgelTroll card) { + super(card); + } + + @Override + public CudgelTroll copy() { + return new CudgelTroll(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/Cultivate.java b/Mage.Sets/src/mage/sets/magic2011/Cultivate.java index 419b8818a9..cc1e1a3f22 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Cultivate.java +++ b/Mage.Sets/src/mage/sets/magic2011/Cultivate.java @@ -112,17 +112,17 @@ class CultivateEffect extends OneShotEffect { target2.setRequired(true); player.chooseTarget(revealed, target2, source, game); Card card = revealed.get(target2.getFirstTarget(), game); - player.putOntoBattlefield(card, game); + card.putOntoBattlefield(game, Zone.LIBRARY, source.getControllerId()); revealed.remove(card); Permanent permanent = game.getPermanent(card.getId()); if (permanent != null) permanent.setTapped(true); card = revealed.getCards(game).iterator().next(); - player.putInHand(card, game); + card.moveToZone(Zone.HAND, game, false); } else if (target.getTargets().size() == 1) { Card card = revealed.getCards(game).iterator().next(); - player.putOntoBattlefield(card, game); + card.putOntoBattlefield(game, Zone.LIBRARY, source.getControllerId()); Permanent permanent = game.getPermanent(card.getId()); if (permanent != null) permanent.setTapped(true); diff --git a/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java b/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java index 742fcf7a4c..0d3380ec2a 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java +++ b/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java @@ -32,6 +32,7 @@ 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.common.OnEventTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -87,7 +88,8 @@ class DarkTutelageEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); Card card = player.getLibrary().removeFromTop(game); if (card != null) { - player.putInHand(card, game); + card.moveToZone(Zone.HAND, game, false); +// player.putInHand(card, game); player.loseLife(card.getManaCost().convertedManaCost(), game); Cards cards = new CardsImpl(); cards.add(card); diff --git a/Mage.Sets/src/mage/sets/magic2011/DayOfJudgment.java b/Mage.Sets/src/mage/sets/magic2011/DayOfJudgment.java index 488a31c01f..97fd81e0b3 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DayOfJudgment.java +++ b/Mage.Sets/src/mage/sets/magic2011/DayOfJudgment.java @@ -41,4 +41,13 @@ public class DayOfJudgment extends mage.sets.zendikar.DayOfJudgment { this.expansionSetCode = "M11"; } + public DayOfJudgment(final DayOfJudgment card) { + super(card); + } + + @Override + public DayOfJudgment copy() { + return new DayOfJudgment(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/Deathmark.java b/Mage.Sets/src/mage/sets/magic2011/Deathmark.java index ac48456ddf..64047dc776 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Deathmark.java +++ b/Mage.Sets/src/mage/sets/magic2011/Deathmark.java @@ -41,4 +41,13 @@ public class Deathmark extends mage.sets.magic2010.Deathmark { this.expansionSetCode = "M11"; } + public Deathmark(final Deathmark card) { + super(card); + } + + @Override + public Deathmark copy() { + return new Deathmark(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/Demolish.java b/Mage.Sets/src/mage/sets/magic2011/Demolish.java index 6cc0c8a91b..27f9e3b6c5 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Demolish.java +++ b/Mage.Sets/src/mage/sets/magic2011/Demolish.java @@ -41,4 +41,13 @@ public class Demolish extends mage.sets.zendikar.Demolish { this.expansionSetCode = "M11"; } + public Demolish(final Demolish card) { + super(card); + } + + @Override + public Demolish copy() { + return new Demolish(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java b/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java index 5d3204f9e9..a47f31c1ae 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java +++ b/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java @@ -32,15 +32,16 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.costs.AlternativeCost; import mage.abilities.costs.common.PayLifeCost; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; +import mage.filter.Filter.ComparisonScope; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; -import mage.game.Game; import mage.target.common.TargetControlledPermanent; /** @@ -79,7 +80,7 @@ public class DemonOfDeathsGate extends CardImpl { } class DemonOfDeathsGateAlternativeCost extends AlternativeCost { - private static FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature"); + private static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black creature"); static { filter.getColor().setBlack(true); diff --git a/Mage.Sets/src/mage/sets/magic2011/DemonsHorn.java b/Mage.Sets/src/mage/sets/magic2011/DemonsHorn.java index 4494f8daeb..93882ff0e1 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DemonsHorn.java +++ b/Mage.Sets/src/mage/sets/magic2011/DemonsHorn.java @@ -41,4 +41,13 @@ public class DemonsHorn extends mage.sets.tenth.DemonsHorn { this.expansionSetCode = "M11"; } + public DemonsHorn(final DemonsHorn card) { + super(card); + } + + @Override + public DemonsHorn copy() { + return new DemonsHorn(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/DiabolicTutor.java b/Mage.Sets/src/mage/sets/magic2011/DiabolicTutor.java index a3dbd3da94..c816b45310 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DiabolicTutor.java +++ b/Mage.Sets/src/mage/sets/magic2011/DiabolicTutor.java @@ -41,4 +41,13 @@ public class DiabolicTutor extends mage.sets.tenth.DiabolicTutor { this.expansionSetCode = "M11"; } + public DiabolicTutor(final DiabolicTutor card) { + super(card); + } + + @Override + public DiabolicTutor copy() { + return new DiabolicTutor(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Disentomb.java b/Mage.Sets/src/mage/sets/magic2011/Disentomb.java index 5440a2367f..a4ac4e8534 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Disentomb.java +++ b/Mage.Sets/src/mage/sets/magic2011/Disentomb.java @@ -41,4 +41,13 @@ public class Disentomb extends mage.sets.magic2010.Disentomb { this.expansionSetCode = "M11"; } + public Disentomb(final Disentomb card) { + super(card); + } + + @Override + public Disentomb copy() { + return new Disentomb(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/DoomBlade.java b/Mage.Sets/src/mage/sets/magic2011/DoomBlade.java index ef92259c9e..74a6720e2f 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DoomBlade.java +++ b/Mage.Sets/src/mage/sets/magic2011/DoomBlade.java @@ -41,4 +41,13 @@ public class DoomBlade extends mage.sets.magic2010.DoomBlade { this.expansionSetCode = "M11"; } + public DoomBlade(final DoomBlade card) { + super(card); + } + + @Override + public DoomBlade copy() { + return new DoomBlade(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/DragonsClaw.java b/Mage.Sets/src/mage/sets/magic2011/DragonsClaw.java index f79a8ae409..cdff22916d 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DragonsClaw.java +++ b/Mage.Sets/src/mage/sets/magic2011/DragonsClaw.java @@ -41,4 +41,13 @@ public class DragonsClaw extends mage.sets.tenth.DragonsClaw { this.expansionSetCode = "M11"; } + public DragonsClaw(final DragonsClaw card) { + super(card); + } + + @Override + public DragonsClaw copy() { + return new DragonsClaw(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/DragonskullSummit.java b/Mage.Sets/src/mage/sets/magic2011/DragonskullSummit.java index 483909cf4b..80470ef4e6 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DragonskullSummit.java +++ b/Mage.Sets/src/mage/sets/magic2011/DragonskullSummit.java @@ -41,4 +41,13 @@ public class DragonskullSummit extends mage.sets.magic2010.DragonskullSummit { this.expansionSetCode = "M11"; } + public DragonskullSummit(final DragonskullSummit card) { + super(card); + } + + @Override + public DragonskullSummit copy() { + return new DragonskullSummit(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Duress.java b/Mage.Sets/src/mage/sets/magic2011/Duress.java index 4e333609f4..8fc1f5c7da 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Duress.java +++ b/Mage.Sets/src/mage/sets/magic2011/Duress.java @@ -41,4 +41,13 @@ public class Duress extends mage.sets.magic2010.Duress { this.expansionSetCode = "M11"; } + public Duress(final Duress card) { + super(card); + } + + @Override + public Duress copy() { + return new Duress(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/EliteVanguard.java b/Mage.Sets/src/mage/sets/magic2011/EliteVanguard.java index f514ab7e4c..837692eb46 100644 --- a/Mage.Sets/src/mage/sets/magic2011/EliteVanguard.java +++ b/Mage.Sets/src/mage/sets/magic2011/EliteVanguard.java @@ -41,4 +41,13 @@ public class EliteVanguard extends mage.sets.magic2010.EliteVanguard { this.expansionSetCode = "M11"; } + public EliteVanguard(final EliteVanguard card) { + super(card); + } + + @Override + public EliteVanguard copy() { + return new EliteVanguard(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/ElixirOfImmortality.java b/Mage.Sets/src/mage/sets/magic2011/ElixirOfImmortality.java index 7f66db51e1..31425658cb 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ElixirOfImmortality.java +++ b/Mage.Sets/src/mage/sets/magic2011/ElixirOfImmortality.java @@ -41,6 +41,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ScryEffect; +import mage.cards.Card; import mage.cards.CardImpl; import mage.game.Game; import mage.players.Player; @@ -91,7 +92,9 @@ class ElixerOfImmortalityEffect extends OneShotEffect Player player = game.getPlayer(source.getControllerId()); player.gainLife(5, game); player.removeFromBattlefield(game.getPermanent(source.getSourceId()), game); - player.getLibrary().putOnBottom(game.getCard(source.getSourceId()), game); + Card card = game.getCard(source.getSourceId()); + card.moveToZone(Zone.LIBRARY, game, true); +// player.getLibrary().putOnBottom(game.getCard(source.getSourceId()), game); player.getLibrary().addAll(player.getGraveyard().getCards(game)); player.getGraveyard().clear(); player.getLibrary().shuffle(); diff --git a/Mage.Sets/src/mage/sets/magic2011/ElvishArchdruid.java b/Mage.Sets/src/mage/sets/magic2011/ElvishArchdruid.java index 0ddf761cdd..0faa33ff4d 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ElvishArchdruid.java +++ b/Mage.Sets/src/mage/sets/magic2011/ElvishArchdruid.java @@ -41,4 +41,13 @@ public class ElvishArchdruid extends mage.sets.magic2010.ElvishArchdruid { this.expansionSetCode = "M11"; } + public ElvishArchdruid(final ElvishArchdruid card) { + super(card); + } + + @Override + public ElvishArchdruid copy() { + return new ElvishArchdruid(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Excommunicate.java b/Mage.Sets/src/mage/sets/magic2011/Excommunicate.java index bc689721cc..188ded8c0f 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Excommunicate.java +++ b/Mage.Sets/src/mage/sets/magic2011/Excommunicate.java @@ -41,4 +41,13 @@ public class Excommunicate extends mage.sets.shardsofalara.Excommunicate { this.expansionSetCode = "M11"; } + public Excommunicate(final Excommunicate card) { + super(card); + } + + @Override + public Excommunicate copy() { + return new Excommunicate(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/FieryHellhound.java b/Mage.Sets/src/mage/sets/magic2011/FieryHellhound.java index 0d6436f424..5ca4178a40 100644 --- a/Mage.Sets/src/mage/sets/magic2011/FieryHellhound.java +++ b/Mage.Sets/src/mage/sets/magic2011/FieryHellhound.java @@ -41,4 +41,13 @@ public class FieryHellhound extends mage.sets.magic2010.FieryHellhound { this.expansionSetCode = "M11"; } + public FieryHellhound(final FieryHellhound card) { + super(card); + } + + @Override + public FieryHellhound copy() { + return new FieryHellhound(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Fireball.java b/Mage.Sets/src/mage/sets/magic2011/Fireball.java index bf151eefae..4f6baa798e 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Fireball.java +++ b/Mage.Sets/src/mage/sets/magic2011/Fireball.java @@ -41,4 +41,13 @@ public class Fireball extends mage.sets.magic2010.Fireball { this.expansionSetCode = "M11"; } + public Fireball(final Fireball card) { + super(card); + } + + @Override + public Fireball copy() { + return new Fireball(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Flashfreeze.java b/Mage.Sets/src/mage/sets/magic2011/Flashfreeze.java index 625ce9b633..885b15f932 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Flashfreeze.java +++ b/Mage.Sets/src/mage/sets/magic2011/Flashfreeze.java @@ -41,4 +41,13 @@ public class Flashfreeze extends mage.sets.tenth.Flashfreeze { this.expansionSetCode = "M11"; } + public Flashfreeze(final Flashfreeze card) { + super(card); + } + + @Override + public Flashfreeze copy() { + return new Flashfreeze(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Fling.java b/Mage.Sets/src/mage/sets/magic2011/Fling.java index aa1dfec112..1dcfc1af25 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Fling.java +++ b/Mage.Sets/src/mage/sets/magic2011/Fling.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -53,7 +54,7 @@ public class Fling extends CardImpl { super(ownerId, "Fling", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}"); this.expansionSetCode = "M11"; this.color.setRed(true); - this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledPermanent(1, 1, FilterCreaturePermanent.getDefault(), true))); + this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent())); this.getSpellAbility().addTarget(new TargetCreatureOrPlayer()); this.getSpellAbility().addEffect(new FlingEffect()); } diff --git a/Mage.Sets/src/mage/sets/magic2011/Fog.java b/Mage.Sets/src/mage/sets/magic2011/Fog.java index 433530d9f5..5002e504a4 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Fog.java +++ b/Mage.Sets/src/mage/sets/magic2011/Fog.java @@ -41,4 +41,13 @@ public class Fog extends mage.sets.magic2010.Fog { this.expansionSetCode = "M11"; } + public Fog(final Fog card) { + super(card); + } + + @Override + public Fog copy() { + return new Fog(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Forest1.java b/Mage.Sets/src/mage/sets/magic2011/Forest1.java index a9c5337e1b..c08d586ccc 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Forest1.java +++ b/Mage.Sets/src/mage/sets/magic2011/Forest1.java @@ -46,4 +46,13 @@ public class Forest1 extends mage.cards.basiclands.Forest { return "121707_typ_reg_sty_010.jpg"; } + public Forest1(final Forest1 card) { + super(card); + } + + @Override + public Forest1 copy() { + return new Forest1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Forest2.java b/Mage.Sets/src/mage/sets/magic2011/Forest2.java index 47534264f9..0ed11256ad 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Forest2.java +++ b/Mage.Sets/src/mage/sets/magic2011/Forest2.java @@ -46,4 +46,13 @@ public class Forest2 extends mage.cards.basiclands.Forest { return "121708_typ_reg_sty_010.jpg"; } + public Forest2(final Forest2 card) { + super(card); + } + + @Override + public Forest2 copy() { + return new Forest2(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Forest3.java b/Mage.Sets/src/mage/sets/magic2011/Forest3.java index c50f6d9a79..be1ad12917 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Forest3.java +++ b/Mage.Sets/src/mage/sets/magic2011/Forest3.java @@ -46,4 +46,13 @@ public class Forest3 extends mage.cards.basiclands.Forest { return "27625_typ_reg_sty_010.jpg"; } + public Forest3(final Forest3 card) { + super(card); + } + + @Override + public Forest3 copy() { + return new Forest3(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Forest4.java b/Mage.Sets/src/mage/sets/magic2011/Forest4.java index 5ccc4f2956..46306043b4 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Forest4.java +++ b/Mage.Sets/src/mage/sets/magic2011/Forest4.java @@ -46,4 +46,13 @@ public class Forest4 extends mage.cards.basiclands.Forest { return "106210_typ_reg_sty_010.jpg"; } + public Forest4(final Forest4 card) { + super(card); + } + + @Override + public Forest4 copy() { + return new Forest4(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/GarrukWildspeaker.java b/Mage.Sets/src/mage/sets/magic2011/GarrukWildspeaker.java index bdde36a440..d27ad525c1 100644 --- a/Mage.Sets/src/mage/sets/magic2011/GarrukWildspeaker.java +++ b/Mage.Sets/src/mage/sets/magic2011/GarrukWildspeaker.java @@ -41,4 +41,13 @@ public class GarrukWildspeaker extends mage.sets.magic2010.GarrukWildspeaker { this.expansionSetCode = "M11"; } + public GarrukWildspeaker(final GarrukWildspeaker card) { + super(card); + } + + @Override + public GarrukWildspeaker copy() { + return new GarrukWildspeaker(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/GiantGrowth.java b/Mage.Sets/src/mage/sets/magic2011/GiantGrowth.java index 137164d153..b2dd010275 100644 --- a/Mage.Sets/src/mage/sets/magic2011/GiantGrowth.java +++ b/Mage.Sets/src/mage/sets/magic2011/GiantGrowth.java @@ -41,4 +41,13 @@ public class GiantGrowth extends mage.sets.tenth.GiantGrowth { this.expansionSetCode = "M11"; } + public GiantGrowth(final GiantGrowth card) { + super(card); + } + + @Override + public GiantGrowth copy() { + return new GiantGrowth(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/GiantSpider.java b/Mage.Sets/src/mage/sets/magic2011/GiantSpider.java index ac9aa29fd1..9dd0504471 100644 --- a/Mage.Sets/src/mage/sets/magic2011/GiantSpider.java +++ b/Mage.Sets/src/mage/sets/magic2011/GiantSpider.java @@ -41,5 +41,14 @@ public class GiantSpider extends mage.sets.tenth.GiantSpider { this.expansionSetCode = "M11"; } + public GiantSpider(final GiantSpider card) { + super(card); + } + + @Override + public GiantSpider copy() { + return new GiantSpider(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/GlacialFortress.java b/Mage.Sets/src/mage/sets/magic2011/GlacialFortress.java index 144f2becf3..02516151b1 100644 --- a/Mage.Sets/src/mage/sets/magic2011/GlacialFortress.java +++ b/Mage.Sets/src/mage/sets/magic2011/GlacialFortress.java @@ -41,4 +41,13 @@ public class GlacialFortress extends mage.sets.magic2010.GlacialFortress { this.expansionSetCode = "M11"; } + public GlacialFortress(final GlacialFortress card) { + super(card); + } + + @Override + public GlacialFortress copy() { + return new GlacialFortress(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/GoblinChieftain.java b/Mage.Sets/src/mage/sets/magic2011/GoblinChieftain.java index 8008331891..5b4eebd007 100644 --- a/Mage.Sets/src/mage/sets/magic2011/GoblinChieftain.java +++ b/Mage.Sets/src/mage/sets/magic2011/GoblinChieftain.java @@ -41,4 +41,13 @@ public class GoblinChieftain extends mage.sets.magic2010.GoblinChieftain { this.expansionSetCode = "M11"; } + public GoblinChieftain(final GoblinChieftain card) { + super(card); + } + + @Override + public GoblinChieftain copy() { + return new GoblinChieftain(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/GoblinPiker.java b/Mage.Sets/src/mage/sets/magic2011/GoblinPiker.java index 30edb3c259..434eed797b 100644 --- a/Mage.Sets/src/mage/sets/magic2011/GoblinPiker.java +++ b/Mage.Sets/src/mage/sets/magic2011/GoblinPiker.java @@ -41,4 +41,13 @@ public class GoblinPiker extends mage.sets.tenth.GoblinPiker { this.expansionSetCode = "M11"; } + public GoblinPiker(final GoblinPiker card) { + super(card); + } + + @Override + public GoblinPiker copy() { + return new GoblinPiker(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/GoblinTunneler.java b/Mage.Sets/src/mage/sets/magic2011/GoblinTunneler.java index fea8003edd..0363d741a3 100644 --- a/Mage.Sets/src/mage/sets/magic2011/GoblinTunneler.java +++ b/Mage.Sets/src/mage/sets/magic2011/GoblinTunneler.java @@ -41,4 +41,13 @@ public class GoblinTunneler extends mage.sets.riseoftheeldrazi.GoblinTunneler { this.expansionSetCode = "M11"; } + public GoblinTunneler(final GoblinTunneler card) { + super(card); + } + + @Override + public GoblinTunneler copy() { + return new GoblinTunneler(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Gravedigger.java b/Mage.Sets/src/mage/sets/magic2011/Gravedigger.java index cd1f285c20..d659c284d8 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Gravedigger.java +++ b/Mage.Sets/src/mage/sets/magic2011/Gravedigger.java @@ -41,4 +41,13 @@ public class Gravedigger extends mage.sets.tenth.Gravedigger { this.expansionSetCode = "M11"; } + public Gravedigger(final Gravedigger card) { + super(card); + } + + @Override + public Gravedigger copy() { + return new Gravedigger(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/HauntingEchoes.java b/Mage.Sets/src/mage/sets/magic2011/HauntingEchoes.java index b62b2b08f4..dff6a90ddd 100644 --- a/Mage.Sets/src/mage/sets/magic2011/HauntingEchoes.java +++ b/Mage.Sets/src/mage/sets/magic2011/HauntingEchoes.java @@ -41,4 +41,13 @@ public class HauntingEchoes extends mage.sets.magic2010.HauntingEchoes { this.expansionSetCode = "M11"; } + public HauntingEchoes(final HauntingEchoes card) { + super(card); + } + + @Override + public HauntingEchoes copy() { + return new HauntingEchoes(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/HoardingDragon.java b/Mage.Sets/src/mage/sets/magic2011/HoardingDragon.java index 48a515328f..eb7d62769e 100644 --- a/Mage.Sets/src/mage/sets/magic2011/HoardingDragon.java +++ b/Mage.Sets/src/mage/sets/magic2011/HoardingDragon.java @@ -68,10 +68,8 @@ public class HoardingDragon extends CardImpl { this.toughness = new MageInt(4); this.addAbility(FlyingAbility.getInstance()); - Ability ability1 = new EntersBattlefieldTriggeredAbility(new HoardingDragonEffect(this.getId()), true); - this.addAbility(ability1); - Ability ability2 = new PutIntoGraveFromBattlefieldTriggeredAbility(new ReturnFromExileEffect(this.getId(), Zone.BATTLEFIELD), true); - this.addAbility(ability2); + this.addAbility(new EntersBattlefieldTriggeredAbility(new HoardingDragonEffect(this.getId()), true)); + this.addAbility(new PutIntoGraveFromBattlefieldTriggeredAbility(new ReturnFromExileEffect(this.getId(), Zone.BATTLEFIELD), true)); } public HoardingDragon(final HoardingDragon card) { diff --git a/Mage.Sets/src/mage/sets/magic2011/HolyStrength.java b/Mage.Sets/src/mage/sets/magic2011/HolyStrength.java index a86c6ac834..c47c51dfa7 100644 --- a/Mage.Sets/src/mage/sets/magic2011/HolyStrength.java +++ b/Mage.Sets/src/mage/sets/magic2011/HolyStrength.java @@ -41,4 +41,13 @@ public class HolyStrength extends mage.sets.tenth.HolyStrength { this.expansionSetCode = "M11"; } + public HolyStrength(final HolyStrength card) { + super(card); + } + + @Override + public HolyStrength copy() { + return new HolyStrength(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/HonorOfThePure.java b/Mage.Sets/src/mage/sets/magic2011/HonorOfThePure.java index 6a3ca3a296..77bf41d1d7 100644 --- a/Mage.Sets/src/mage/sets/magic2011/HonorOfThePure.java +++ b/Mage.Sets/src/mage/sets/magic2011/HonorOfThePure.java @@ -41,4 +41,13 @@ public class HonorOfThePure extends mage.sets.magic2010.HonorOfThePure { this.expansionSetCode = "M11"; } + public HonorOfThePure(final HonorOfThePure card) { + super(card); + } + + @Override + public HonorOfThePure copy() { + return new HonorOfThePure(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/HowlingBanshee.java b/Mage.Sets/src/mage/sets/magic2011/HowlingBanshee.java index 207efebf71..b7282e4818 100644 --- a/Mage.Sets/src/mage/sets/magic2011/HowlingBanshee.java +++ b/Mage.Sets/src/mage/sets/magic2011/HowlingBanshee.java @@ -41,4 +41,13 @@ public class HowlingBanshee extends mage.sets.magic2010.HowlingBanshee { this.expansionSetCode = "M11"; } + public HowlingBanshee(final HowlingBanshee card) { + super(card); + } + + @Override + public HowlingBanshee copy() { + return new HowlingBanshee(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/IceCage.java b/Mage.Sets/src/mage/sets/magic2011/IceCage.java index 8921db39f3..73aa863b48 100644 --- a/Mage.Sets/src/mage/sets/magic2011/IceCage.java +++ b/Mage.Sets/src/mage/sets/magic2011/IceCage.java @@ -41,4 +41,13 @@ public class IceCage extends mage.sets.magic2010.IceCage { this.expansionSetCode = "M11"; } + public IceCage(final IceCage card) { + super(card); + } + + @Override + public IceCage copy() { + return new IceCage(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Island1.java b/Mage.Sets/src/mage/sets/magic2011/Island1.java index 2e3168b841..08dd57370b 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Island1.java +++ b/Mage.Sets/src/mage/sets/magic2011/Island1.java @@ -46,4 +46,13 @@ public class Island1 extends mage.cards.basiclands.Island { return "121687_typ_reg_sty_010.jpg"; } + public Island1(final Island1 card) { + super(card); + } + + @Override + public Island1 copy() { + return new Island1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Island2.java b/Mage.Sets/src/mage/sets/magic2011/Island2.java index 90d806969e..b9a3df1359 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Island2.java +++ b/Mage.Sets/src/mage/sets/magic2011/Island2.java @@ -46,4 +46,13 @@ public class Island2 extends mage.cards.basiclands.Island { return "121700_typ_reg_sty_010.jpg"; } + public Island2(final Island2 card) { + super(card); + } + + @Override + public Island2 copy() { + return new Island2(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Island3.java b/Mage.Sets/src/mage/sets/magic2011/Island3.java index 7ee280d3df..5f59faa0b1 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Island3.java +++ b/Mage.Sets/src/mage/sets/magic2011/Island3.java @@ -46,4 +46,13 @@ public class Island3 extends mage.cards.basiclands.Island { return "6779_typ_reg_sty_010.jpg"; } + public Island3(final Island3 card) { + super(card); + } + + @Override + public Island3 copy() { + return new Island3(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/Island4.java b/Mage.Sets/src/mage/sets/magic2011/Island4.java index 778e024f91..b17d12c228 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Island4.java +++ b/Mage.Sets/src/mage/sets/magic2011/Island4.java @@ -46,4 +46,13 @@ public class Island4 extends mage.cards.basiclands.Island { return "106211_typ_reg_sty_010.jpg"; } + public Island4(final Island4 card) { + super(card); + } + + @Override + public Island4 copy() { + return new Island4(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/JaceBeleren.java b/Mage.Sets/src/mage/sets/magic2011/JaceBeleren.java index 5ec96184c5..3c3f5b55a9 100644 --- a/Mage.Sets/src/mage/sets/magic2011/JaceBeleren.java +++ b/Mage.Sets/src/mage/sets/magic2011/JaceBeleren.java @@ -41,4 +41,13 @@ public class JaceBeleren extends mage.sets.magic2010.JaceBeleren { this.expansionSetCode = "M11"; } + public JaceBeleren(final JaceBeleren card) { + super(card); + } + + @Override + public JaceBeleren copy() { + return new JaceBeleren(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/JinxedIdol.java b/Mage.Sets/src/mage/sets/magic2011/JinxedIdol.java index f818337e03..99b10ce6e0 100644 --- a/Mage.Sets/src/mage/sets/magic2011/JinxedIdol.java +++ b/Mage.Sets/src/mage/sets/magic2011/JinxedIdol.java @@ -43,11 +43,10 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.DamageControllerEffect; import mage.cards.CardImpl; -import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; -import mage.target.common.TargetControlledPermanent; +import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetOpponent; /** @@ -60,7 +59,7 @@ public class JinxedIdol extends CardImpl { super(ownerId, "Jinxed Idol", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{2}"); this.expansionSetCode = "M11"; this.addAbility(new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new DamageControllerEffect(2))); - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new JinxedIdolEffect(), new SacrificeTargetCost(new TargetControlledPermanent(1, 1, FilterCreaturePermanent.getDefault(), true))); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new JinxedIdolEffect(), new SacrificeTargetCost(new TargetControlledCreaturePermanent())); ability.addTarget(new TargetOpponent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/magic2011/Juggernaut.java b/Mage.Sets/src/mage/sets/magic2011/Juggernaut.java index 63d4b5b52b..bf9dc0780b 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Juggernaut.java +++ b/Mage.Sets/src/mage/sets/magic2011/Juggernaut.java @@ -46,4 +46,13 @@ public class Juggernaut extends mage.sets.tenth.Juggernaut { return "129164_typ_reg_sty_010.jpg"; } + public Juggernaut(final Juggernaut card) { + super(card); + } + + @Override + public Juggernaut copy() { + return new Juggernaut(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/KrakensEye.java b/Mage.Sets/src/mage/sets/magic2011/KrakensEye.java index 96fdf52edc..325924a34b 100644 --- a/Mage.Sets/src/mage/sets/magic2011/KrakensEye.java +++ b/Mage.Sets/src/mage/sets/magic2011/KrakensEye.java @@ -41,4 +41,13 @@ public class KrakensEye extends mage.sets.tenth.KrakensEye { this.expansionSetCode = "M11"; } + public KrakensEye(final KrakensEye card) { + super(card); + } + + @Override + public KrakensEye copy() { + return new KrakensEye(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/LavaAxe.java b/Mage.Sets/src/mage/sets/magic2011/LavaAxe.java index 6bc5ef523a..2b2876754c 100644 --- a/Mage.Sets/src/mage/sets/magic2011/LavaAxe.java +++ b/Mage.Sets/src/mage/sets/magic2011/LavaAxe.java @@ -41,4 +41,13 @@ public class LavaAxe extends mage.sets.tenth.LavaAxe { this.expansionSetCode = "M11"; } + public LavaAxe(final LavaAxe card) { + super(card); + } + + @Override + public LavaAxe copy() { + return new LavaAxe(this); + } + } diff --git a/Mage.Sets/src/mage/sets/magic2011/LeylineOfAnticipation.java b/Mage.Sets/src/mage/sets/magic2011/LeylineOfAnticipation.java new file mode 100644 index 0000000000..2d4c037f7e --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/LeylineOfAnticipation.java @@ -0,0 +1,107 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.AsThoughEffectType; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.AsThoughEffectImpl; +import mage.abilities.keyword.LeylineAbility; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.game.Game; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LeylineOfAnticipation extends CardImpl { + + public LeylineOfAnticipation(UUID ownerId) { + super(ownerId, "Leyline of Anticipation", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}"); + this.expansionSetCode = "M11"; + this.color.setBlue(true); + this.addAbility(LeylineAbility.getInstance()); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new LeylineOfAnticipationEffect())); + } + + public LeylineOfAnticipation(final LeylineOfAnticipation card) { + super(card); + } + + @Override + public LeylineOfAnticipation copy() { + return new LeylineOfAnticipation(this); + } + + @Override + public String getArt() { + return "129099_typ_reg_sty_010.jpg"; + } + +} + +class LeylineOfAnticipationEffect extends AsThoughEffectImpl { + + public LeylineOfAnticipationEffect() { + super(AsThoughEffectType.CAST, Duration.WhileOnBattlefield, Outcome.Benefit); + } + + public LeylineOfAnticipationEffect(final LeylineOfAnticipationEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public LeylineOfAnticipationEffect copy() { + return new LeylineOfAnticipationEffect(this); + } + + @Override + public boolean applies(UUID sourceId, Ability source, Game game) { + Card card = game.getCard(sourceId); + if (card != null) { + if (!card.getCardType().contains(CardType.LAND) && card.getOwnerId().equals(source.getControllerId())) { + return true; + } + } + return false; + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/LeylineOfPunishment.java b/Mage.Sets/src/mage/sets/magic2011/LeylineOfPunishment.java new file mode 100644 index 0000000000..fcfd8a0cb2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/LeylineOfPunishment.java @@ -0,0 +1,154 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.ReplacementEffectImpl; +import mage.abilities.keyword.LeylineAbility; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LeylineOfPunishment extends CardImpl { + + public LeylineOfPunishment(UUID ownerId) { + super(ownerId, "Leyline of Punishment", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}"); + this.expansionSetCode = "M11"; + this.color.setRed(true); + this.addAbility(LeylineAbility.getInstance()); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new LeylineOfPunishmentEffect1())); + } + + public LeylineOfPunishment(final LeylineOfPunishment card) { + super(card); + } + + @Override + public LeylineOfPunishment copy() { + return new LeylineOfPunishment(this); + } + + @Override + public String getArt() { + return "129108_typ_reg_sty_010.jpg"; + } + +} + +class LeylineOfPunishmentEffect1 extends ReplacementEffectImpl { + + public LeylineOfPunishmentEffect1() { + super(Duration.WhileOnBattlefield, Outcome.Benefit); + } + + public LeylineOfPunishmentEffect1(final LeylineOfPunishmentEffect1 effect) { + super(effect); + } + + @Override + public LeylineOfPunishmentEffect1 copy() { + return new LeylineOfPunishmentEffect1(this); + } + + @Override + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + return true; + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + if (event.getType() == EventType.GAIN_LIFE) { + return true; + } + return false; + } + + @Override + public String getText(Ability source) { + return "Players can't gain life"; + } + +} + +class LeylineOfPunishmentEffect2 extends ReplacementEffectImpl { + + public LeylineOfPunishmentEffect2() { + super(Duration.WhileOnBattlefield, Outcome.Benefit); + } + + public LeylineOfPunishmentEffect2(final LeylineOfPunishmentEffect2 effect) { + super(effect); + } + + @Override + public LeylineOfPunishmentEffect2 copy() { + return new LeylineOfPunishmentEffect2(this); + } + + @Override + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + return true; + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + if (event.getType() == EventType.PREVENT_DAMAGE) { + return true; + } + return false; + } + + @Override + public String getText(Ability source) { + return "Damage can't be prevented"; + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2011/LeylineOfSanctity.java b/Mage.Sets/src/mage/sets/magic2011/LeylineOfSanctity.java new file mode 100644 index 0000000000..312757d3f9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/LeylineOfSanctity.java @@ -0,0 +1,78 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.TargetController; +import mage.Constants.Zone; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.CantTargetControllerEffect; +import mage.abilities.keyword.LeylineAbility; +import mage.cards.CardImpl; +import mage.filter.FilterStackObject; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LeylineOfSanctity extends CardImpl { + + private static FilterStackObject filter = new FilterStackObject("spells or abilities your opponents control"); + + static { + filter.setTargetController(TargetController.OPPONENT); + } + + public LeylineOfSanctity(UUID ownerId) { + super(ownerId, "Leyline of Sanctity", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}"); + this.expansionSetCode = "M11"; + this.color.setWhite(true); + this.addAbility(LeylineAbility.getInstance()); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantTargetControllerEffect(filter, Duration.WhileOnBattlefield))); + } + + public LeylineOfSanctity(final LeylineOfSanctity card) { + super(card); + } + + @Override + public LeylineOfSanctity copy() { + return new LeylineOfSanctity(this); + } + + @Override + public String getArt() { + return "129086_typ_reg_sty_010.jpg"; + } + +} + diff --git a/Mage.Sets/src/mage/sets/magic2011/LeylineOfTheVoid.java b/Mage.Sets/src/mage/sets/magic2011/LeylineOfTheVoid.java new file mode 100644 index 0000000000..a1faa71503 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/LeylineOfTheVoid.java @@ -0,0 +1,118 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.ReplacementEffectImpl; +import mage.abilities.keyword.LeylineAbility; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import mage.game.events.ZoneChangeEvent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LeylineOfTheVoid extends CardImpl { + + public LeylineOfTheVoid(UUID ownerId) { + super(ownerId, "Leyline of the Void", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}"); + this.expansionSetCode = "M11"; + this.color.setBlack(true); + this.addAbility(LeylineAbility.getInstance()); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new LeylineOfTheVoidEffect())); + } + + public LeylineOfTheVoid(final LeylineOfTheVoid card) { + super(card); + } + + @Override + public LeylineOfTheVoid copy() { + return new LeylineOfTheVoid(this); + } + + @Override + public String getArt() { + return "129103_typ_reg_sty_010.jpg"; + } + +} + +class LeylineOfTheVoidEffect extends ReplacementEffectImpl { + + public LeylineOfTheVoidEffect() { + super(Duration.WhileOnBattlefield, Outcome.Benefit); + } + + public LeylineOfTheVoidEffect(final LeylineOfTheVoidEffect effect) { + super(effect); + } + + @Override + public LeylineOfTheVoidEffect copy() { + return new LeylineOfTheVoidEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + return true; + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + if (event.getType() == EventType.ZONE_CHANGE && ((ZoneChangeEvent)event).getToZone() == Zone.GRAVEYARD) { + if (game.getOpponents(source.getControllerId()).contains(event.getPlayerId())) { + ((ZoneChangeEvent)event).setToZone(Zone.EXILED); + return true; + } + } + return false; + } + + @Override + public String getText(Ability source) { + return "If a card would be put into an opponent's graveyard from anywhere, exile it instead"; + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2011/LeylineOfVitality.java b/Mage.Sets/src/mage/sets/magic2011/LeylineOfVitality.java new file mode 100644 index 0000000000..66e0fd062e --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/LeylineOfVitality.java @@ -0,0 +1,112 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.BoostControlledEffect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.keyword.LeylineAbility; +import mage.cards.CardImpl; +import mage.filter.common.FilterCreaturePermanent; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import mage.game.events.ZoneChangeEvent; +import mage.game.permanent.Permanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LeylineOfVitality extends CardImpl { + + public LeylineOfVitality(UUID ownerId) { + super(ownerId, "Leyline of Vitality", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}"); + this.expansionSetCode = "M11"; + this.color.setGreen(true); + this.addAbility(LeylineAbility.getInstance()); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(0, 1, Duration.WhileOnBattlefield, FilterCreaturePermanent.getDefault(), false))); + this.addAbility(new LeylineOfVitalityAbility()); + } + + public LeylineOfVitality(final LeylineOfVitality card) { + super(card); + } + + @Override + public LeylineOfVitality copy() { + return new LeylineOfVitality(this); + } + + @Override + public String getArt() { + return "129120_typ_reg_sty_010.jpg"; + } + +} + +class LeylineOfVitalityAbility extends TriggeredAbilityImpl { + + public LeylineOfVitalityAbility() { + super(Zone.BATTLEFIELD, new GainLifeEffect(1), true); + } + + public LeylineOfVitalityAbility(final LeylineOfVitalityAbility ability) { + super(ability); + } + + @Override + public LeylineOfVitalityAbility copy() { + return new LeylineOfVitalityAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getType() == EventType.ZONE_CHANGE && ((ZoneChangeEvent)event).getToZone() == Zone.BATTLEFIELD) { + Permanent permanent = game.getPermanent(event.getTargetId()); + if (permanent.getCardType().contains(CardType.CREATURE) && permanent.getControllerId().equals(this.controllerId)) { + trigger(game, this.controllerId); + return true; + } + } + return false; + } + + @Override + public String getRule() { + return "Whenever a creature enters the battlefield under your control, " + super.getRule(); + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2011/LightningBolt.java b/Mage.Sets/src/mage/sets/magic2011/LightningBolt.java new file mode 100644 index 0000000000..236672a946 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/LightningBolt.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LightningBolt extends mage.sets.magic2010.LightningBolt { + + public LightningBolt(UUID ownerId) { + super(ownerId); + this.expansionSetCode = "M11"; + } + + public LightningBolt(final LightningBolt card) { + super(card); + } + + @Override + public LightningBolt copy() { + return new LightningBolt(this); + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/LilianaVess.java b/Mage.Sets/src/mage/sets/magic2011/LilianaVess.java new file mode 100644 index 0000000000..6b7c531921 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/LilianaVess.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LilianaVess extends mage.sets.magic2010.LilianaVess { + + public LilianaVess(UUID ownerId) { + super(ownerId); + this.expansionSetCode = "M11"; + } + + public LilianaVess(final LilianaVess card) { + super(card); + } + + @Override + public LilianaVess copy() { + return new LilianaVess(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2011/LilianasCaress.java b/Mage.Sets/src/mage/sets/magic2011/LilianasCaress.java new file mode 100644 index 0000000000..55db6f4380 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/LilianasCaress.java @@ -0,0 +1,103 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.LoseLifeTargetEffect; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import mage.target.TargetPlayer; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LilianasCaress extends CardImpl { + + public LilianasCaress(UUID ownerId) { + super(ownerId, "Liliana's Caress", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}"); + this.expansionSetCode = "M11"; + this.color.setBlack(true); + this.addAbility(new LilianasCaressAbility()); + } + + public LilianasCaress(final LilianasCaress card) { + super(card); + } + + @Override + public LilianasCaress copy() { + return new LilianasCaress(this); + } + + @Override + public String getArt() { + return "129124_typ_reg_sty_010.jpg"; + } + +} + +class LilianasCaressAbility extends TriggeredAbilityImpl { + + public LilianasCaressAbility() { + super(Zone.GRAVEYARD, new LoseLifeTargetEffect(2), true); + } + + public LilianasCaressAbility(final LilianasCaressAbility ability) { + super(ability); + } + + @Override + public LilianasCaressAbility copy() { + return new LilianasCaressAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getType() == EventType.DISCARDED_CARD && game.getOpponents(controllerId).contains(event.getPlayerId())) { + this.addTarget(new TargetPlayer()); + this.targets.get(0).addTarget(event.getPlayerId(), this, game); + trigger(game, event.getPlayerId()); + return true; + } + return false; + } + + @Override + public String getRule() { + return "Whenever an opponent discards a card, that player loses 2 life."; + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2011/LilianasSpecter.java b/Mage.Sets/src/mage/sets/magic2011/LilianasSpecter.java new file mode 100644 index 0000000000..24e6ced5ef --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/LilianasSpecter.java @@ -0,0 +1,106 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.players.Player; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LilianasSpecter extends CardImpl { + + public LilianasSpecter(UUID ownerId) { + super(ownerId, "Liliana's Specter", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{B}{B}"); + this.expansionSetCode = "M11"; + this.subtype.add("Specter"); + this.color.setBlack(true); + this.power = new MageInt(2); + this.toughness = new MageInt(1); + + this.addAbility(FlyingAbility.getInstance()); + this.addAbility(new EntersBattlefieldTriggeredAbility(new LilianasSpecterEffect(), true)); + } + + public LilianasSpecter(final LilianasSpecter card) { + super(card); + } + + @Override + public LilianasSpecter copy() { + return new LilianasSpecter(this); + } + + @Override + public String getArt() { + return "129091_typ_reg_sty_010.jpg"; + } + +} + +class LilianasSpecterEffect extends OneShotEffect { + + public LilianasSpecterEffect() { + super(Outcome.Discard); + } + + public LilianasSpecterEffect(final LilianasSpecterEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + for (UUID playerId: game.getOpponents(source.getControllerId())) { + Player player = game.getPlayer(playerId); + player.discard(1, game); + } + return true; + } + + @Override + public LilianasSpecterEffect copy() { + return new LilianasSpecterEffect(this); + } + + @Override + public String getText(Ability source) { + return "each opponent discards a card"; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/LlanowarElves.java b/Mage.Sets/src/mage/sets/magic2011/LlanowarElves.java new file mode 100644 index 0000000000..83c36af92e --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/LlanowarElves.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LlanowarElves extends mage.sets.tenth.LlanowarElves { + + public LlanowarElves(UUID ownerId) { + super(ownerId); + this.expansionSetCode = "M11"; + } + + public LlanowarElves(final LlanowarElves card) { + super(card); + } + + @Override + public LlanowarElves copy() { + return new LlanowarElves(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2011/MagmaPhoenix.java b/Mage.Sets/src/mage/sets/magic2011/MagmaPhoenix.java new file mode 100644 index 0000000000..0cbfb3f2d8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/MagmaPhoenix.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MagmaPhoenix extends mage.sets.magic2010.MagmaPhoenix { + + public MagmaPhoenix(UUID ownerId) { + super(ownerId); + this.expansionSetCode = "M11"; + } + + public MagmaPhoenix(final MagmaPhoenix card) { + super(card); + } + + @Override + public MagmaPhoenix copy() { + return new MagmaPhoenix(this); + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/ManaLeak.java b/Mage.Sets/src/mage/sets/magic2011/ManaLeak.java new file mode 100644 index 0000000000..a5d86a17d9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/ManaLeak.java @@ -0,0 +1,71 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.CounterTargetEffect; +import mage.abilities.effects.common.CounterUnlessPaysEffect; +import mage.cards.CardImpl; +import mage.target.TargetSpell; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class ManaLeak extends CardImpl { + + public ManaLeak(UUID ownerId) { + super(ownerId, "Mana Leak", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{U}"); + this.expansionSetCode = "M11"; + this.color.setBlue(true); + this.getSpellAbility().addTarget(new TargetSpell()); + this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(new GenericManaCost(3))); + } + + public ManaLeak(final ManaLeak card) { + super(card); + } + + @Override + public ManaLeak copy() { + return new ManaLeak(this); + } + + @Override + public String getArt() { + return "129076_typ_reg_sty_010.jpg"; + } +} diff --git a/Mage.Sets/src/mage/sets/magic2011/ManicVandal.java b/Mage.Sets/src/mage/sets/magic2011/ManicVandal.java new file mode 100644 index 0000000000..c3dbbde2e6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/ManicVandal.java @@ -0,0 +1,87 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.cards.CardImpl; +import mage.filter.Filter.ComparisonScope; +import mage.filter.FilterPermanent; +import mage.target.Target; +import mage.target.TargetPermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class ManicVandal extends CardImpl { + + private static FilterPermanent filter = new FilterPermanent("artifact"); + + static { + filter.getCardType().add(CardType.ARTIFACT); + filter.setScopeCardType(ComparisonScope.Any); + } + + public ManicVandal(UUID ownerId) { + super(ownerId, "Manic Vandal", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{R}"); + this.expansionSetCode = "M11"; + this.subtype.add("Human"); + this.subtype.add("Warrior"); + this.color.setRed(true); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); + Target target = new TargetPermanent(filter); + target.setRequired(true); + ability.addTarget(target); + this.addAbility(ability); + } + + public ManicVandal(final ManicVandal card) { + super(card); + } + + @Override + public ManicVandal copy() { + return new ManicVandal(this); + } + + @Override + public String getArt() { + return "129172_typ_reg_sty_010.jpg"; + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2011/MaritimeGuard.java b/Mage.Sets/src/mage/sets/magic2011/MaritimeGuard.java new file mode 100644 index 0000000000..82475e8b86 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/MaritimeGuard.java @@ -0,0 +1,67 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.cards.CardImpl; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MaritimeGuard extends CardImpl { + + public MaritimeGuard(UUID ownerId) { + super(ownerId, "Maritime Guard", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{U}"); + this.expansionSetCode = "M11"; + this.color.setBlue(true); + this.subtype.add("Merfolk"); + this.subtype.add("Soldier"); + this.power = new MageInt(1); + this.toughness = new MageInt(3); + } + + public MaritimeGuard(final MaritimeGuard card) { + super(card); + } + + @Override + public MaritimeGuard copy() { + return new MaritimeGuard(this); + } + + @Override + public String getArt() { + return "129129_typ_reg_sty_010.jpg"; + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2011/MassPolymorph.java b/Mage.Sets/src/mage/sets/magic2011/MassPolymorph.java new file mode 100644 index 0000000000..297c909523 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/MassPolymorph.java @@ -0,0 +1,124 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +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.cards.Card; +import mage.cards.CardImpl; +import mage.cards.Cards; +import mage.cards.CardsImpl; +import mage.filter.common.FilterCreaturePermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MassPolymorph extends CardImpl { + + public MassPolymorph(UUID ownerId) { + super(ownerId, "Mass Polymorph", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{5}{U}"); + this.expansionSetCode = "M11"; + this.color.setBlue(true); + this.getSpellAbility().addEffect(new MassPolymorphEffect()); + } + + public MassPolymorph(final MassPolymorph card) { + super(card); + } + + @Override + public MassPolymorph copy() { + return new MassPolymorph(this); + } + + @Override + public String getArt() { + return "129072_typ_reg_sty_010.jpg"; + } +} + +class MassPolymorphEffect extends OneShotEffect { + + public MassPolymorphEffect() { + super(Outcome.PutCreatureInPlay); + } + + public MassPolymorphEffect(final MassPolymorphEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + int count; + List creatures = game.getBattlefield().getAllActivePermanents(FilterCreaturePermanent.getDefault(), source.getControllerId()); + count = creatures.size(); + for (Permanent creature: creatures) { + creature.moveToExile(null, null, game); + } + Cards revealed = new CardsImpl(); + Cards creatureCards = new CardsImpl(); + Cards nonCreatureCards = new CardsImpl(); + Player player = game.getPlayer(source.getControllerId()); + while (creatureCards.size() < count && player.getLibrary().size() > 0) { + Card card = player.getLibrary().removeFromTop(game); + revealed.add(card); + if (card.getCardType().contains(CardType.CREATURE)) + creatureCards.add(card); + else + nonCreatureCards.add(card); + } + player.revealCards(revealed, game); + for (Card creatureCard: creatureCards.getCards(game)) { + creatureCard.putOntoBattlefield(game, Zone.LIBRARY, source.getControllerId()); + } + player.getLibrary().addAll(nonCreatureCards.getCards(game)); + player.getLibrary().shuffle(); + return true; + } + + @Override + public MassPolymorphEffect copy() { + return new MassPolymorphEffect(this); + } + + @Override + public String getText(Ability source) { + return "Exile all creatures you control, then reveal cards from the top of your library until you reveal that many creature cards. Put all creature cards revealed this way onto the battlefield, then shuffle the rest of the revealed cards into your library"; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/MerfolkSovereign.java b/Mage.Sets/src/mage/sets/magic2011/MerfolkSovereign.java new file mode 100644 index 0000000000..346a3bcd1d --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/MerfolkSovereign.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MerfolkSovereign extends mage.sets.magic2010.MerfolkSovereign { + + public MerfolkSovereign(UUID ownerId) { + super(ownerId); + this.expansionSetCode = "M11"; + } + + public MerfolkSovereign(final MerfolkSovereign card) { + super(card); + } + + @Override + public MerfolkSovereign copy() { + return new MerfolkSovereign(this); + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/MerfolkSpy.java b/Mage.Sets/src/mage/sets/magic2011/MerfolkSpy.java new file mode 100644 index 0000000000..12e936d5c9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/MerfolkSpy.java @@ -0,0 +1,158 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.keyword.LandwalkAbility; +import mage.cards.CardImpl; +import mage.cards.Cards; +import mage.cards.CardsImpl; +import mage.filter.Filter.ComparisonScope; +import mage.filter.common.FilterLandPermanent; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import mage.players.Player; +import mage.target.TargetPlayer; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MerfolkSpy extends CardImpl { + + private static FilterLandPermanent filter = new FilterLandPermanent("Island"); + + static { + filter.getSubtype().add("Island"); + filter.setScopeSubtype(ComparisonScope.Any); + } + + public MerfolkSpy(UUID ownerId) { + super(ownerId, "Merfolk Spy", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{U}"); + this.expansionSetCode = "M11"; + this.subtype.add("Merfolk"); + this.subtype.add("Rogue"); + this.color.setBlue(true); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + this.addAbility(new LandwalkAbility(filter)); + this.addAbility(new MerfolkSpyAbility()); + } + + public MerfolkSpy(final MerfolkSpy card) { + super(card); + } + + @Override + public MerfolkSpy copy() { + return new MerfolkSpy(this); + } + + @Override + public String getArt() { + return "129100_typ_reg_sty_010.jpg"; + } + +} + +class MerfolkSpyAbility extends TriggeredAbilityImpl { + + public MerfolkSpyAbility() { + super(Zone.BATTLEFIELD, new MerfolkSpyEffect(), false); + } + + public MerfolkSpyAbility(final MerfolkSpyAbility ability) { + super(ability); + } + + @Override + public MerfolkSpyAbility copy() { + return new MerfolkSpyAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getType() == EventType.DAMAGED_PLAYER && event.getSourceId().equals(this.sourceId)) { + this.addTarget(new TargetPlayer()); + this.targets.get(0).addTarget(event.getPlayerId(), this, game); + trigger(game, event.getPlayerId()); + return true; + } + return false; + } + + @Override + public String getRule() { + return "Whenever Merfolk Spy deals combat damage to a player, that player reveals a card at random from his or her hand"; + } + +} + +class MerfolkSpyEffect extends OneShotEffect { + + public MerfolkSpyEffect() { + super(Outcome.Detriment); + } + + public MerfolkSpyEffect(final MerfolkSpyEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getFirstTarget()); + if (player != null && player.getHand().size() > 0) { + Cards revealed = new CardsImpl(); + revealed.add(player.getHand().getRandom(game)); + player.revealCards(revealed, game); + return true; + } + return false; + } + + @Override + public MerfolkSpyEffect copy() { + return new MerfolkSpyEffect(this); + } + + @Override + public String getText(Ability source) { + return ""; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/MightyLeap.java b/Mage.Sets/src/mage/sets/magic2011/MightyLeap.java new file mode 100644 index 0000000000..9aba019a61 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/MightyLeap.java @@ -0,0 +1,69 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.abilities.effects.common.BoostTargetEffect; +import mage.abilities.effects.common.GainAbilityTargetEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MightyLeap extends CardImpl { + + public MightyLeap(UUID ownerId) { + super(ownerId, "Mighty Leap", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{W}"); + this.expansionSetCode = "M11"; + this.color.setWhite(true); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addEffect(new BoostTargetEffect(2, 2, Duration.EndOfTurn)); + this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)); + } + + public MightyLeap(final MightyLeap card) { + super(card); + } + + @Override + public MightyLeap copy() { + return new MightyLeap(this); + } + + @Override + public String getArt() { + return "129186_typ_reg_sty_010.jpg"; + } +} diff --git a/Mage.Sets/src/mage/sets/magic2011/MindControl.java b/Mage.Sets/src/mage/sets/magic2011/MindControl.java new file mode 100644 index 0000000000..2aed3d7963 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/MindControl.java @@ -0,0 +1,57 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MindControl extends mage.sets.magic2010.MindControl { + + public MindControl(UUID ownerId) { + super(ownerId); + this.expansionSetCode = "M11"; + } + + public MindControl(final MindControl card) { + super(card); + } + + @Override + public MindControl copy() { + return new MindControl(this); + } + + @Override + public String getArt() { + return "129175_typ_reg_sty_010.jpg"; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/MindRot.java b/Mage.Sets/src/mage/sets/magic2011/MindRot.java new file mode 100644 index 0000000000..807bc833ae --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/MindRot.java @@ -0,0 +1,53 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MindRot extends mage.sets.magic2010.MindRot { + + public MindRot(UUID ownerId) { + super(ownerId); + this.expansionSetCode = "M11"; + } + + public MindRot(final MindRot card) { + super(card); + } + + @Override + public MindRot copy() { + return new MindRot(this); + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/MitoticSlime.java b/Mage.Sets/src/mage/sets/magic2011/MitoticSlime.java new file mode 100644 index 0000000000..fef6e22e68 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2011/MitoticSlime.java @@ -0,0 +1,96 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.magic2011; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.common.PutIntoGraveFromBattlefieldTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.cards.CardImpl; +import mage.game.permanent.token.Token; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MitoticSlime extends CardImpl { + + public MitoticSlime(UUID ownerId) { + super(ownerId, "Mitotic Slime", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{G}"); + this.expansionSetCode = "M11"; + this.subtype.add("Ooze"); + this.color.setGreen(true); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + this.addAbility(new PutIntoGraveFromBattlefieldTriggeredAbility(new CreateTokenEffect(new Ooze2Token(), 2), false)); + } + + public MitoticSlime(final MitoticSlime card) { + super(card); + } + + @Override + public MitoticSlime copy() { + return new MitoticSlime(this); + } + + @Override + public String getArt() { + return "129121_typ_reg_sty_010.jpg"; + } + +} + +class Ooze2Token extends Token { + + public Ooze2Token() { + super("Ooze", "2/2 green Ooze creature tokens with \"When this creature is put into a graveyard, put two 1/1 green Ooze creature tokens onto the battlefield.\""); + cardType.add(CardType.CREATURE); + subtype.add("Ooze"); + color.setGreen(true); + power = new MageInt(2); + toughness = new MageInt(2); + this.addAbility(new PutIntoGraveFromBattlefieldTriggeredAbility(new CreateTokenEffect(new Ooze1Token(), 2), false)); + } +} + +class Ooze1Token extends Token { + + public Ooze1Token() { + super("Ooze", "1/1 green Ooze creature tokens"); + cardType.add(CardType.CREATURE); + subtype.add("Ooze"); + color.setGreen(true); + power = new MageInt(1); + toughness = new MageInt(1); + } +} diff --git a/Mage.Sets/src/mage/sets/planechase/OblivionRing.java b/Mage.Sets/src/mage/sets/planechase/OblivionRing.java index dc3fc19f13..ff8fdb8e05 100644 --- a/Mage.Sets/src/mage/sets/planechase/OblivionRing.java +++ b/Mage.Sets/src/mage/sets/planechase/OblivionRing.java @@ -41,4 +41,13 @@ public class OblivionRing extends mage.sets.shardsofalara.OblivionRing { this.expansionSetCode = "HOP"; } + public OblivionRing(final OblivionRing card) { + super(card); + } + + @Override + public OblivionRing copy() { + return new OblivionRing(this); + } + } diff --git a/Mage.Sets/src/mage/sets/planechase/SoulWarden.java b/Mage.Sets/src/mage/sets/planechase/SoulWarden.java index 8ed5f5e827..869d080c64 100644 --- a/Mage.Sets/src/mage/sets/planechase/SoulWarden.java +++ b/Mage.Sets/src/mage/sets/planechase/SoulWarden.java @@ -41,4 +41,13 @@ public class SoulWarden extends mage.sets.magic2010.SoulWarden { this.expansionSetCode = "HOP"; } + public SoulWarden(final SoulWarden card) { + super(card); + } + + @Override + public SoulWarden copy() { + return new SoulWarden(this); + } + } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/BloodthroneVampire.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/BloodthroneVampire.java index dcb1141f6b..5c971d011d 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/BloodthroneVampire.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/BloodthroneVampire.java @@ -38,8 +38,7 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.BoostSourceEffect; import mage.cards.CardImpl; -import mage.filter.common.FilterCreaturePermanent; -import mage.target.common.TargetControlledPermanent; +import mage.target.common.TargetControlledCreaturePermanent; /** * @@ -54,7 +53,7 @@ public class BloodthroneVampire extends CardImpl { this.subtype.add("Vampire"); this.power = new MageInt(1); this.toughness = new MageInt(1); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new SacrificeTargetCost(new TargetControlledPermanent(1, 1, FilterCreaturePermanent.getDefault(), true)))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new SacrificeTargetCost(new TargetControlledCreaturePermanent()))); } public BloodthroneVampire(final BloodthroneVampire card) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Deprive.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Deprive.java index 8c156429d6..0cc6fc139a 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Deprive.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Deprive.java @@ -34,6 +34,8 @@ import mage.Constants.Rarity; import mage.abilities.costs.common.ReturnToHandTargetCost; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; +import mage.filter.Filter.ComparisonScope; +import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterLandPermanent; import mage.target.TargetSpell; import mage.target.common.TargetControlledPermanent; @@ -44,11 +46,18 @@ import mage.target.common.TargetControlledPermanent; */ public class Deprive extends CardImpl { + private static FilterControlledPermanent filter = new FilterControlledPermanent("land"); + + static { + filter.getCardType().add(CardType.LAND); + filter.setScopeCardType(ComparisonScope.Any); + } + public Deprive(UUID ownerId) { super(ownerId, "Deprive", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{U}{U}"); this.expansionSetCode = "ROE"; this.color.setBlue(true); - this.getSpellAbility().addCost(new ReturnToHandTargetCost(new TargetControlledPermanent(1, 1, new FilterLandPermanent(), true))); + this.getSpellAbility().addCost(new ReturnToHandTargetCost(new TargetControlledPermanent(filter))); this.getSpellAbility().addTarget(new TargetSpell()); this.getSpellAbility().addEffect(new CounterTargetEffect()); } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest1.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest1.java index 9545fe7f91..25162caf81 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest1.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest1.java @@ -46,4 +46,13 @@ public class Forest1 extends mage.cards.basiclands.Forest { return "127495_typ_reg_sty_010.jpg"; } + public Forest1(final Forest1 card) { + super(card); + } + + @Override + public Forest1 copy() { + return new Forest1(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest2.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest2.java index ba3c6173f2..77da27e2b7 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest2.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest2.java @@ -46,4 +46,13 @@ public class Forest2 extends mage.cards.basiclands.Forest { return "127489_typ_reg_sty_010.jpg"; } + public Forest2(final Forest2 card) { + super(card); + } + + @Override + public Forest2 copy() { + return new Forest2(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest3.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest3.java index c41589922f..fd459535bf 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest3.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest3.java @@ -46,4 +46,13 @@ public class Forest3 extends mage.cards.basiclands.Forest { return "127497_typ_reg_sty_010.jpg"; } + public Forest3(final Forest3 card) { + super(card); + } + + @Override + public Forest3 copy() { + return new Forest3(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest4.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest4.java index 0ec8a7f121..0f1e971953 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest4.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Forest4.java @@ -46,4 +46,13 @@ public class Forest4 extends mage.cards.basiclands.Forest { return "127511_typ_reg_sty_010.jpg"; } + public Forest4(final Forest4 card) { + super(card); + } + + @Override + public Forest4 copy() { + return new Forest4(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GideonJura.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GideonJura.java index 09079efb13..94b4bdedc3 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GideonJura.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GideonJura.java @@ -76,7 +76,7 @@ public class GideonJura extends CardImpl { this.addAbility(ability1); LoyaltyAbility ability2 = new LoyaltyAbility(new DestroyTargetEffect(), -2); - ability2.addTarget(new TargetCreaturePermanent(1, 1, filter, TargetController.ANY, false)); + ability2.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability2); LoyaltyAbility ability3 = new LoyaltyAbility(new BecomesCreatureSourceEOTEffect(new GideonJuraToken(), "planeswalker"), 0); diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island1.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island1.java index c7326ad07e..e7ed05785b 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island1.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island1.java @@ -46,4 +46,13 @@ public class Island1 extends mage.cards.basiclands.Island { return "127494_typ_reg_sty_010.jpg"; } + public Island1(final Island1 card) { + super(card); + } + + @Override + public Island1 copy() { + return new Island1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island2.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island2.java index c9a27c48b7..739d0b9933 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island2.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island2.java @@ -46,4 +46,13 @@ public class Island2 extends mage.cards.basiclands.Island { return "127501_typ_reg_sty_010.jpg"; } + public Island2(final Island2 card) { + super(card); + } + + @Override + public Island2 copy() { + return new Island2(this); + } + } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island3.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island3.java index 2d683f916c..9d610e2be5 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island3.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island3.java @@ -46,4 +46,13 @@ public class Island3 extends mage.cards.basiclands.Island { return "127506_typ_reg_sty_010.jpg"; } + public Island3(final Island3 card) { + super(card); + } + + @Override + public Island3 copy() { + return new Island3(this); + } + } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island4.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island4.java index b48d5a828c..00ca7c2a48 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island4.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Island4.java @@ -46,4 +46,13 @@ public class Island4 extends mage.cards.basiclands.Island { return "127507_typ_reg_sty_010.jpg"; } + public Island4(final Island4 card) { + super(card); + } + + @Override + public Island4 copy() { + return new Island4(this); + } + } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SeaGateOracle.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SeaGateOracle.java index 94ff6d1018..18b2648967 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SeaGateOracle.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SeaGateOracle.java @@ -37,6 +37,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; +import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; @@ -95,7 +96,9 @@ class SeaGateOracleEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player.getLibrary().size() > 0) { if (player.getLibrary().size() == 1) { - player.putInHand(player.getLibrary().removeFromTop(game), game); + Card card = player.getLibrary().removeFromTop(game); + card.moveToZone(Zone.HAND, game, false); +// player.putInHand(player.getLibrary().removeFromTop(game), game); } else { Cards cards = new CardsImpl(Zone.PICK); @@ -105,9 +108,12 @@ class SeaGateOracleEffect extends OneShotEffect { target.setRequired(true); player.lookAtCards(cards, game); player.chooseTarget(cards, target, source, game); - player.putInHand(cards.get(target.getFirstTarget(), game), game); - for (UUID cardId: cards) { - player.getLibrary().putOnBottom(cards.get(cardId, game), game); + Card card = cards.get(target.getFirstTarget(), game); + card.moveToZone(Zone.HAND, game, false); +// player.putInHand(cards.get(target.getFirstTarget(), game), game); + for (Card card1: cards.getCards(game)) { + card1.moveToZone(Zone.LIBRARY, game, false); +// player.getLibrary().putOnBottom(cards.get(cardId, game), game); } } return true; diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SeeBeyond.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SeeBeyond.java index e101b43d31..94a01845ec 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SeeBeyond.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SeeBeyond.java @@ -94,7 +94,8 @@ class SeeBeyondEffect extends OneShotEffect { Card card = player.getHand().get(target.getFirstTarget(), game); if (card != null) { player.removeFromHand(card, game); - player.getLibrary().putOnTop(card, game); + card.moveToZone(Zone.LIBRARY, game, true); +// player.getLibrary().putOnTop(card, game); player.getLibrary().shuffle(); return true; } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Cancel.java b/Mage.Sets/src/mage/sets/shardsofalara/Cancel.java index c256f2ff3c..60d55c189c 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Cancel.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Cancel.java @@ -45,4 +45,14 @@ public class Cancel extends mage.sets.tenth.Cancel { public String getArt() { return "116179_typ_reg_sty_010.jpg"; } + + public Cancel(final Cancel card) { + super(card); + } + + @Override + public Cancel copy() { + return new Cancel(this); + } + } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Forest1.java b/Mage.Sets/src/mage/sets/shardsofalara/Forest1.java index 46ad3cd1f3..c44981e6d9 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Forest1.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Forest1.java @@ -46,4 +46,13 @@ public class Forest1 extends mage.cards.basiclands.Forest { return "115018_typ_reg_sty_010.jpg"; } + public Forest1(final Forest1 card) { + super(card); + } + + @Override + public Forest1 copy() { + return new Forest1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Forest2.java b/Mage.Sets/src/mage/sets/shardsofalara/Forest2.java index 03b422ff7d..4a05622116 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Forest2.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Forest2.java @@ -46,4 +46,13 @@ public class Forest2 extends mage.cards.basiclands.Forest { return "115015_typ_reg_sty_010.jpg"; } + public Forest2(final Forest2 card) { + super(card); + } + + @Override + public Forest2 copy() { + return new Forest2(this); + } + } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Forest3.java b/Mage.Sets/src/mage/sets/shardsofalara/Forest3.java index 274d1013a1..18f8a3e84c 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Forest3.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Forest3.java @@ -46,4 +46,13 @@ public class Forest3 extends mage.cards.basiclands.Forest { return "115016_typ_reg_sty_010.jpg"; } + public Forest3(final Forest3 card) { + super(card); + } + + @Override + public Forest3 copy() { + return new Forest3(this); + } + } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Forest4.java b/Mage.Sets/src/mage/sets/shardsofalara/Forest4.java index 42221559ef..02bd97a6e0 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Forest4.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Forest4.java @@ -46,4 +46,13 @@ public class Forest4 extends mage.cards.basiclands.Forest { return "115017_typ_reg_sty_010.jpg"; } + public Forest4(final Forest4 card) { + super(card); + } + + @Override + public Forest4 copy() { + return new Forest4(this); + } + } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Island1.java b/Mage.Sets/src/mage/sets/shardsofalara/Island1.java index addbfd558a..8a7a7db770 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Island1.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Island1.java @@ -46,4 +46,13 @@ public class Island1 extends mage.cards.basiclands.Island { return "115051_typ_reg_sty_010.jpg"; } + public Island1(final Island1 card) { + super(card); + } + + @Override + public Island1 copy() { + return new Island1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Island2.java b/Mage.Sets/src/mage/sets/shardsofalara/Island2.java index 7fdb562d5d..3959add766 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Island2.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Island2.java @@ -46,4 +46,13 @@ public class Island2 extends mage.cards.basiclands.Island { return "115052_typ_reg_sty_010.jpg"; } + public Island2(final Island2 card) { + super(card); + } + + @Override + public Island2 copy() { + return new Island2(this); + } + } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Island3.java b/Mage.Sets/src/mage/sets/shardsofalara/Island3.java index 80e66e6dbc..03bc06bc04 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Island3.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Island3.java @@ -46,4 +46,13 @@ public class Island3 extends mage.cards.basiclands.Island { return "115054_typ_reg_sty_010.jpg"; } + public Island3(final Island3 card) { + super(card); + } + + @Override + public Island3 copy() { + return new Island3(this); + } + } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Island4.java b/Mage.Sets/src/mage/sets/shardsofalara/Island4.java index 70ff3643e1..5851ac4e77 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Island4.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Island4.java @@ -46,4 +46,13 @@ public class Island4 extends mage.cards.basiclands.Island { return "115053_typ_reg_sty_010.jpg"; } + public Island4(final Island4 card) { + super(card); + } + + @Override + public Island4 copy() { + return new Island4(this); + } + } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java b/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java index 95d7071803..674a993df2 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java @@ -113,7 +113,7 @@ class KnightOfTheWhiteOrchidAbility extends EntersBattlefieldTriggeredAbility { filter.setId(this.getId()); filter.setNotId(true); Ability ability1 = new EntersBattlefieldTriggeredAbility(new ExileTargetEffect(this.getId(), "Oblivion Ring exile"), false); - ability1.addTarget(new TargetPermanent(filter, TargetController.ANY)); + ability1.addTarget(new TargetPermanent(filter)); this.addAbility(ability1); Ability ability2 = new LeavesBattlefieldTriggeredAbility(new ReturnFromExileEffect(this.getId(), Zone.BATTLEFIELD), false); this.addAbility(ability2); diff --git a/Mage.Sets/src/mage/sets/tenth/Assassinate.java b/Mage.Sets/src/mage/sets/tenth/Assassinate.java index 0379d14b3e..0731f157c7 100644 --- a/Mage.Sets/src/mage/sets/tenth/Assassinate.java +++ b/Mage.Sets/src/mage/sets/tenth/Assassinate.java @@ -31,7 +31,6 @@ package mage.sets.tenth; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; -import mage.Constants.TargetController; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; @@ -54,7 +53,7 @@ public class Assassinate extends CardImpl { super(ownerId, "Assassinate", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{2}{B}"); this.expansionSetCode = "M10"; this.color.setBlack(true); - this.getSpellAbility().addTarget(new TargetCreaturePermanent(1, 1, filter, TargetController.ANY, false)); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/sets/tenth/Clone.java b/Mage.Sets/src/mage/sets/tenth/Clone.java index a1b3cc844c..e1583cc261 100644 --- a/Mage.Sets/src/mage/sets/tenth/Clone.java +++ b/Mage.Sets/src/mage/sets/tenth/Clone.java @@ -56,7 +56,7 @@ public class Clone extends CardImpl { this.toughness = new MageInt(0); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new CopyEffect()); - ability.addTarget(new TargetCreaturePermanent(1, 1, FilterCreaturePermanent.getDefault(), TargetController.ANY, true)); + ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/tenth/Forest1.java b/Mage.Sets/src/mage/sets/tenth/Forest1.java index b4413b491e..b5cb7d7f8f 100644 --- a/Mage.Sets/src/mage/sets/tenth/Forest1.java +++ b/Mage.Sets/src/mage/sets/tenth/Forest1.java @@ -46,4 +46,13 @@ public class Forest1 extends mage.cards.basiclands.Forest { return "08946_typ_reg_sty_010.jpg"; } + public Forest1(final Forest1 card) { + super(card); + } + + @Override + public Forest1 copy() { + return new Forest1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/tenth/Forest2.java b/Mage.Sets/src/mage/sets/tenth/Forest2.java index 2135550697..a3e053476d 100644 --- a/Mage.Sets/src/mage/sets/tenth/Forest2.java +++ b/Mage.Sets/src/mage/sets/tenth/Forest2.java @@ -46,4 +46,13 @@ public class Forest2 extends mage.cards.basiclands.Forest { return "89160_typ_reg_sty_010.jpg"; } + public Forest2(final Forest2 card) { + super(card); + } + + @Override + public Forest2 copy() { + return new Forest2(this); + } + } diff --git a/Mage.Sets/src/mage/sets/tenth/Forest3.java b/Mage.Sets/src/mage/sets/tenth/Forest3.java index 56bcdaa1a8..76d860c3e6 100644 --- a/Mage.Sets/src/mage/sets/tenth/Forest3.java +++ b/Mage.Sets/src/mage/sets/tenth/Forest3.java @@ -46,4 +46,13 @@ public class Forest3 extends mage.cards.basiclands.Forest { return "80954_typ_reg_sty_010.jpg"; } + public Forest3(final Forest3 card) { + super(card); + } + + @Override + public Forest3 copy() { + return new Forest3(this); + } + } diff --git a/Mage.Sets/src/mage/sets/tenth/Forest4.java b/Mage.Sets/src/mage/sets/tenth/Forest4.java index 38410a879f..134f37fa29 100644 --- a/Mage.Sets/src/mage/sets/tenth/Forest4.java +++ b/Mage.Sets/src/mage/sets/tenth/Forest4.java @@ -46,4 +46,13 @@ public class Forest4 extends mage.cards.basiclands.Forest { return "25153_typ_reg_sty_010.jpg"; } + public Forest4(final Forest4 card) { + super(card); + } + + @Override + public Forest4 copy() { + return new Forest4(this); + } + } diff --git a/Mage.Sets/src/mage/sets/tenth/Island1.java b/Mage.Sets/src/mage/sets/tenth/Island1.java index c4000895a0..d5d714ea15 100644 --- a/Mage.Sets/src/mage/sets/tenth/Island1.java +++ b/Mage.Sets/src/mage/sets/tenth/Island1.java @@ -46,4 +46,13 @@ public class Island1 extends mage.cards.basiclands.Island { return "08754_typ_reg_sty_010.jpg"; } + public Island1(final Island1 card) { + super(card); + } + + @Override + public Island1 copy() { + return new Island1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/tenth/Island2.java b/Mage.Sets/src/mage/sets/tenth/Island2.java index 2414c6417b..5b118dfde1 100644 --- a/Mage.Sets/src/mage/sets/tenth/Island2.java +++ b/Mage.Sets/src/mage/sets/tenth/Island2.java @@ -46,4 +46,13 @@ public class Island2 extends mage.cards.basiclands.Island { return "25162_typ_reg_sty_010.jpg"; } + public Island2(final Island2 card) { + super(card); + } + + @Override + public Island2 copy() { + return new Island2(this); + } + } diff --git a/Mage.Sets/src/mage/sets/tenth/Island3.java b/Mage.Sets/src/mage/sets/tenth/Island3.java index aa9289ea44..b7e7ee5b0e 100644 --- a/Mage.Sets/src/mage/sets/tenth/Island3.java +++ b/Mage.Sets/src/mage/sets/tenth/Island3.java @@ -46,4 +46,13 @@ public class Island3 extends mage.cards.basiclands.Island { return "80957_typ_reg_sty_010.jpg"; } + public Island3(final Island3 card) { + super(card); + } + + @Override + public Island3 copy() { + return new Island3(this); + } + } diff --git a/Mage.Sets/src/mage/sets/tenth/Island4.java b/Mage.Sets/src/mage/sets/tenth/Island4.java index a112d07d33..30a998436c 100644 --- a/Mage.Sets/src/mage/sets/tenth/Island4.java +++ b/Mage.Sets/src/mage/sets/tenth/Island4.java @@ -46,4 +46,13 @@ public class Island4 extends mage.cards.basiclands.Island { return "89166_typ_reg_sty_010.jpg"; } + public Island4(final Island4 card) { + super(card); + } + + @Override + public Island4 copy() { + return new Island4(this); + } + } diff --git a/Mage.Sets/src/mage/sets/tenth/LlanowarElves.java b/Mage.Sets/src/mage/sets/tenth/LlanowarElves.java new file mode 100644 index 0000000000..bca503ebab --- /dev/null +++ b/Mage.Sets/src/mage/sets/tenth/LlanowarElves.java @@ -0,0 +1,69 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.tenth; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.mana.GreenManaAbility; +import mage.cards.CardImpl; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LlanowarElves extends CardImpl { + + public LlanowarElves(UUID ownerId) { + super(ownerId, "Llanowar Elves", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{G}"); + this.expansionSetCode = "10E"; + this.subtype.add("Elf"); + this.subtype.add("Druid"); + this.color.setGreen(true); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + this.addAbility(new GreenManaAbility()); + } + + public LlanowarElves(final LlanowarElves card) { + super(card); + } + + @Override + public LlanowarElves copy() { + return new LlanowarElves(this); + } + + @Override + public String getArt() { + return "86938_typ_reg_sty_010.jpg"; + } + +} diff --git a/Mage.Sets/src/mage/sets/tenth/MindRot.java b/Mage.Sets/src/mage/sets/tenth/MindRot.java new file mode 100644 index 0000000000..2945cd0f0b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tenth/MindRot.java @@ -0,0 +1,65 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.tenth; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.effects.common.DiscardTargetEffect; +import mage.cards.CardImpl; +import mage.target.TargetPlayer; + +/** + * + * @author LokiX + */ +public class MindRot extends CardImpl { + + public MindRot(UUID onwerId){ + super(onwerId, "Mind Rot", Rarity.COMMON, new CardType[]{CardType.SORCERY},"{2}{B}"); + this.expansionSetCode = "10E"; + this.color.setBlack(true); + this.getSpellAbility().addTarget(new TargetPlayer()); + this.getSpellAbility().addEffect(new DiscardTargetEffect(2)); + } + + public MindRot(final MindRot card) { + super(card); + } + + @Override + public MindRot copy() { + return new MindRot(this); + } + + @Override + public String getArt() { + return "04716_typ_reg_sty_001.jpg"; + } +} diff --git a/Mage.Sets/src/mage/sets/tenth/Mountain1.java b/Mage.Sets/src/mage/sets/tenth/Mountain1.java index 41b290cd66..3ff63d8c32 100644 --- a/Mage.Sets/src/mage/sets/tenth/Mountain1.java +++ b/Mage.Sets/src/mage/sets/tenth/Mountain1.java @@ -46,4 +46,13 @@ public class Mountain1 extends mage.cards.basiclands.Mountain { return "89159_typ_reg_sty_010.jpg"; } + public Mountain1(final Mountain1 card) { + super(card); + } + + @Override + public Mountain1 copy() { + return new Mountain1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/tenth/Plains1.java b/Mage.Sets/src/mage/sets/tenth/Plains1.java index e2d0c8230d..61c49fdbef 100644 --- a/Mage.Sets/src/mage/sets/tenth/Plains1.java +++ b/Mage.Sets/src/mage/sets/tenth/Plains1.java @@ -46,4 +46,13 @@ public class Plains1 extends mage.cards.basiclands.Plains { return "80949_typ_reg_sty_010.jpg"; } + public Plains1(final Plains1 card) { + super(card); + } + + @Override + public Plains1 copy() { + return new Plains1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/tenth/Swamp1.java b/Mage.Sets/src/mage/sets/tenth/Swamp1.java index 01c000efce..72f2f283d0 100644 --- a/Mage.Sets/src/mage/sets/tenth/Swamp1.java +++ b/Mage.Sets/src/mage/sets/tenth/Swamp1.java @@ -46,4 +46,13 @@ public class Swamp1 extends mage.cards.basiclands.Swamp { return "89177_typ_reg_sty_010.jpg"; } + public Swamp1(final Swamp1 card) { + super(card); + } + + @Override + public Swamp1 copy() { + return new Swamp1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/worldwake/JaceTheMindSculptor.java b/Mage.Sets/src/mage/sets/worldwake/JaceTheMindSculptor.java index 7a1e4d73d2..2b8f027d47 100644 --- a/Mage.Sets/src/mage/sets/worldwake/JaceTheMindSculptor.java +++ b/Mage.Sets/src/mage/sets/worldwake/JaceTheMindSculptor.java @@ -121,8 +121,10 @@ class JaceTheMindSculptorEffect1 extends OneShotEffect { this.expansionSetCode = "WWK"; this.addAbility(new EntersBattlefieldStaticAbility(new TapSourceEffect(), "tapped")); EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new GainProtectionFromColorTargetEffect(Duration.EndOfTurn), false); - ability.addTarget(new TargetCreaturePermanent(1, TargetController.YOU)); + ability.addTarget(new TargetControlledCreaturePermanent()); ability.addChoice(new ChoiceColor()); this.addAbility(ability); this.addAbility(new WhiteManaAbility()); diff --git a/Mage.Sets/src/mage/sets/zendikar/Cancel.java b/Mage.Sets/src/mage/sets/zendikar/Cancel.java index 7f4a9287b4..e583a634f3 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Cancel.java +++ b/Mage.Sets/src/mage/sets/zendikar/Cancel.java @@ -46,4 +46,13 @@ public class Cancel extends mage.sets.shardsofalara.Cancel { return "123652_typ_reg_sty_010.jpg"; } + public Cancel(final Cancel card) { + super(card); + } + + @Override + public Cancel copy() { + return new Cancel(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/zendikar/Demolish.java b/Mage.Sets/src/mage/sets/zendikar/Demolish.java index 2e161b4602..07776fc6ec 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Demolish.java +++ b/Mage.Sets/src/mage/sets/zendikar/Demolish.java @@ -46,4 +46,13 @@ public class Demolish extends mage.sets.tenth.Demolish { return "123684_typ_reg_sty_010.jpg"; } + public Demolish(final Demolish card) { + super(card); + } + + @Override + public Demolish copy() { + return new Demolish(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/zendikar/EldraziMonument.java b/Mage.Sets/src/mage/sets/zendikar/EldraziMonument.java index 41bde8eecc..e15b0e2bb8 100644 --- a/Mage.Sets/src/mage/sets/zendikar/EldraziMonument.java +++ b/Mage.Sets/src/mage/sets/zendikar/EldraziMonument.java @@ -48,6 +48,7 @@ import mage.game.Game; import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledPermanent; /** @@ -98,7 +99,7 @@ class EldraziMonumentEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - TargetControlledPermanent target = new TargetControlledPermanent(1, 1, FilterCreaturePermanent.getDefault(), true); + TargetControlledPermanent target = new TargetControlledCreaturePermanent(); target.setRequired(true); Player player = game.getPlayer(source.getControllerId()); if (target.canChoose(source.getId(), source.getControllerId(), game)) { diff --git a/Mage.Sets/src/mage/sets/zendikar/Forest1.java b/Mage.Sets/src/mage/sets/zendikar/Forest1.java index 14702c7b09..725725d713 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Forest1.java +++ b/Mage.Sets/src/mage/sets/zendikar/Forest1.java @@ -46,4 +46,13 @@ public class Forest1 extends mage.cards.basiclands.Forest { return "123765_typ_reg_sty_010.jpg"; } + public Forest1(final Forest1 card) { + super(card); + } + + @Override + public Forest1 copy() { + return new Forest1(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/zendikar/Forest2.java b/Mage.Sets/src/mage/sets/zendikar/Forest2.java index e365a8bde5..eecbd0443c 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Forest2.java +++ b/Mage.Sets/src/mage/sets/zendikar/Forest2.java @@ -46,4 +46,13 @@ public class Forest2 extends mage.cards.basiclands.Forest { return "123761_typ_reg_sty_010.jpg"; } + public Forest2(final Forest2 card) { + super(card); + } + + @Override + public Forest2 copy() { + return new Forest2(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/zendikar/Forest3.java b/Mage.Sets/src/mage/sets/zendikar/Forest3.java index 1fa9fec31b..e7e551a0ef 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Forest3.java +++ b/Mage.Sets/src/mage/sets/zendikar/Forest3.java @@ -46,4 +46,13 @@ public class Forest3 extends mage.cards.basiclands.Forest { return "123752_typ_reg_sty_010.jpg"; } + public Forest3(final Forest3 card) { + super(card); + } + + @Override + public Forest3 copy() { + return new Forest3(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/zendikar/Forest4.java b/Mage.Sets/src/mage/sets/zendikar/Forest4.java index 8ec9e595a7..f9c993e289 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Forest4.java +++ b/Mage.Sets/src/mage/sets/zendikar/Forest4.java @@ -46,4 +46,13 @@ public class Forest4 extends mage.cards.basiclands.Forest { return "123768_typ_reg_sty_010.jpg"; } + public Forest4(final Forest4 card) { + super(card); + } + + @Override + public Forest4 copy() { + return new Forest4(this); + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/zendikar/GoblinGuide.java b/Mage.Sets/src/mage/sets/zendikar/GoblinGuide.java index 94acebb1d0..05ef6dd358 100644 --- a/Mage.Sets/src/mage/sets/zendikar/GoblinGuide.java +++ b/Mage.Sets/src/mage/sets/zendikar/GoblinGuide.java @@ -112,7 +112,8 @@ class GoblinGuideEffect extends OneShotEffect { defender.revealCards(cards, game); if (card.getCardType().contains(CardType.LAND)) { defender.getLibrary().removeFromTop(game); - defender.putInHand(card, game); + card.moveToZone(Zone.HAND, game, true); +// defender.putInHand(card, game); } } } diff --git a/Mage.Sets/src/mage/sets/zendikar/Island1.java b/Mage.Sets/src/mage/sets/zendikar/Island1.java index 853dbaa161..14b0a11137 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Island1.java +++ b/Mage.Sets/src/mage/sets/zendikar/Island1.java @@ -46,4 +46,13 @@ public class Island1 extends mage.cards.basiclands.Island { return "123767_typ_reg_sty_010.jpg"; } + public Island1(final Island1 card) { + super(card); + } + + @Override + public Island1 copy() { + return new Island1(this); + } + } diff --git a/Mage.Sets/src/mage/sets/zendikar/Island2.java b/Mage.Sets/src/mage/sets/zendikar/Island2.java index 33653b34eb..381342c242 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Island2.java +++ b/Mage.Sets/src/mage/sets/zendikar/Island2.java @@ -46,4 +46,13 @@ public class Island2 extends mage.cards.basiclands.Island { return "123756_typ_reg_sty_010.jpg"; } + public Island2(final Island2 card) { + super(card); + } + + @Override + public Island2 copy() { + return new Island2(this); + } + } diff --git a/Mage.Sets/src/mage/sets/zendikar/Island3.java b/Mage.Sets/src/mage/sets/zendikar/Island3.java index 851b6c35df..39f21042eb 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Island3.java +++ b/Mage.Sets/src/mage/sets/zendikar/Island3.java @@ -46,4 +46,13 @@ public class Island3 extends mage.cards.basiclands.Island { return "123754_typ_reg_sty_010.jpg"; } + public Island3(final Island3 card) { + super(card); + } + + @Override + public Island3 copy() { + return new Island3(this); + } + } diff --git a/Mage.Sets/src/mage/sets/zendikar/Island4.java b/Mage.Sets/src/mage/sets/zendikar/Island4.java index cc0fb05ec2..8c2d8bd70e 100644 --- a/Mage.Sets/src/mage/sets/zendikar/Island4.java +++ b/Mage.Sets/src/mage/sets/zendikar/Island4.java @@ -46,4 +46,13 @@ public class Island4 extends mage.cards.basiclands.Island { return "123757_typ_reg_sty_010.jpg"; } + public Island4(final Island4 card) { + super(card); + } + + @Override + public Island4 copy() { + return new Island4(this); + } + } diff --git a/Mage.Sets/src/mage/sets/zendikar/ScuteMob.java b/Mage.Sets/src/mage/sets/zendikar/ScuteMob.java index a16fbcec38..6e90031e56 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ScuteMob.java +++ b/Mage.Sets/src/mage/sets/zendikar/ScuteMob.java @@ -100,7 +100,7 @@ class ScuteMobAbility extends TriggeredAbilityImpl { } @Override - public boolean checkIfClause(Game game) { + public boolean checkInterveningIfClause(Game game) { return game.getBattlefield().countAll(filter, this.controllerId) >= 5; }