From ecef0ab8dc58a33ea8c22af40f516359bf92c8b9 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Sun, 11 Apr 2010 22:42:32 +0000 Subject: [PATCH] latest --- Mage.Sets/src/mage/sets/AlaraReborn.java | 3 + Mage.Sets/src/mage/sets/Conflux.java | 3 + Mage.Sets/src/mage/sets/Magic2010.java | 8 ++ Mage.Sets/src/mage/sets/Sets.java | 57 +++++++++ Mage.Sets/src/mage/sets/ShardsOfAlara.java | 4 + Mage.Sets/src/mage/sets/Worldwake.java | 5 + Mage.Sets/src/mage/sets/Zendikar.java | 8 ++ .../mage/sets/alarareborn/BehemothSledge.java | 62 +++++++++ .../sets/alarareborn/BituminousBlast.java | 2 + .../mage/sets/alarareborn/BloodbraidElf.java | 2 + .../src/mage/sets/alarareborn/FinestHour.java | 117 +++++++++++++++++ .../mage/sets/alarareborn/MaelstromPulse.java | 2 + .../mage/sets/alarareborn/PutridLeech.java | 7 +- .../alarareborn/SpellbreakerBehemoth.java | 2 + .../src/mage/sets/alarareborn/Terminate.java | 2 + .../sets/alarareborn/VengefulRebirth.java | 2 + .../src/mage/sets/conflux/FontOfMythos.java | 78 ++++++++++++ .../sets/conflux/KnightOfTheReliquary.java | 120 ++++++++++++++++++ .../src/mage/sets/conflux/MartialCoup.java | 5 +- .../src/mage/sets/conflux/NobleHierarch.java | 2 + .../src/mage/sets/conflux/PathToExile.java | 2 + .../src/mage/sets/conflux/Thornling.java | 68 ++++++++++ .../mage/sets/magic2010/BaneslayerAngel.java | 2 + .../mage/sets/magic2010/BirdsOfParadise.java | 65 ++++++++++ Mage.Sets/src/mage/sets/magic2010/Cancel.java | 7 +- .../mage/sets/magic2010/CelestialPurge.java | 3 +- .../sets/magic2010/DragonskullSummit.java | 2 + .../mage/sets/magic2010/EliteVanguard.java | 54 ++++++++ .../src/mage/sets/magic2010/Flashfreeze.java | 64 ++++++++++ .../mage/sets/magic2010/GargoyleCastle.java | 3 +- .../sets/magic2010/GarrukWildspeaker.java | 7 +- .../mage/sets/magic2010/GlacialFortress.java | 77 +++++++++++ .../mage/sets/magic2010/GreatSableStag.java | 2 + .../mage/sets/magic2010/HonorOfThePure.java | 4 +- .../src/mage/sets/magic2010/HowlingMine.java | 83 ++++++++++++ .../src/mage/sets/magic2010/JaceBeleren.java | 68 ++++++++++ .../mage/sets/magic2010/LightningBolt.java | 2 + .../sets/magic2010/MasterOfTheWildHunt.java | 4 +- .../mage/sets/magic2010/RootboundCrag.java | 2 + .../src/mage/sets/magic2010/SafePassage.java | 53 ++++++++ .../mage/sets/magic2010/SunpetalGrove.java | 2 + .../sets/magic2010/TerramorphicExpanse.java | 69 ++++++++++ .../src/mage/sets/magic2010/TimeWarp.java | 74 +++++++++++ .../src/mage/sets/magic2010/WhiteKnight.java | 2 + .../mage/sets/planechase/OblivionRing.java | 2 + .../src/mage/sets/planechase/SoulWarden.java | 42 +----- .../sets/shardsofalara/AjaniVengeant.java | 3 +- .../mage/sets/shardsofalara/Angelsong.java | 55 ++++++++ .../mage/sets/shardsofalara/Blightning.java | 2 + .../sets/shardsofalara/BroodmateDragon.java | 2 + .../shardsofalara/CrumblingNecropolis.java | 2 + .../shardsofalara/ElspethKnightErrant.java | 83 ++++++++++++ .../mage/sets/shardsofalara/JundPanorama.java | 2 + .../shardsofalara/KnightOfTheWhiteOrchid.java | 36 ++++-- .../sets/shardsofalara/RafiqOfTheMany.java | 93 ++++++++++++++ .../mage/sets/shardsofalara/RangerOfEos.java | 45 +------ .../mage/sets/shardsofalara/RhoxWarMonk.java | 59 +++++++++ .../mage/sets/shardsofalara/SarkhanVol.java | 11 +- .../mage/sets/shardsofalara/SavageLands.java | 2 + .../sets/shardsofalara/SproutingThrinax.java | 2 + .../mage/sets/shardsofalara/WildNacatl.java | 2 + .../sets/shardsofalara/WoollyThoctar.java | 2 + Mage.Sets/src/mage/sets/tenth/Forest1.java | 2 + Mage.Sets/src/mage/sets/tenth/Island1.java | 2 + Mage.Sets/src/mage/sets/tenth/Mountain1.java | 2 + Mage.Sets/src/mage/sets/tenth/Plains1.java | 2 + Mage.Sets/src/mage/sets/tenth/Swamp1.java | 2 + .../mage/sets/worldwake/BasiliskCollar.java | 2 + .../sets/worldwake/CelestialColonnade.java | 80 ++++++++++++ .../src/mage/sets/worldwake/RagingRavine.java | 8 +- .../src/mage/sets/worldwake/SejiriSteppe.java | 62 +++++++++ .../mage/sets/worldwake/StirringWildwood.java | 78 ++++++++++++ .../mage/sets/worldwake/StoneforgeMystic.java | 79 ++++++++++++ .../src/mage/sets/worldwake/TectonicEdge.java | 99 +++++++++++++++ .../src/mage/sets/zendikar/ArchiveTrap.java | 98 ++++++++++++++ .../src/mage/sets/zendikar/AridMesa.java | 2 + .../mage/sets/zendikar/BraveTheElements.java | 13 +- .../mage/sets/zendikar/BurstLightning.java | 6 +- .../mage/sets/zendikar/ConquerorsPledge.java | 4 +- .../src/mage/sets/zendikar/DayOfJudgment.java | 52 ++++++++ .../src/mage/sets/zendikar/EmeriaAngel.java | 2 + .../mage/sets/zendikar/GoblinRuinblaster.java | 4 +- .../mage/sets/zendikar/KabiraCrossroads.java | 55 ++++++++ .../src/mage/sets/zendikar/LotusCobra.java | 60 +++++++++ .../src/mage/sets/zendikar/MarshFlats.java | 2 + .../mage/sets/zendikar/MistyRainforest.java | 2 + .../sets/zendikar/OranRiefTheVastwood.java | 3 + .../mage/sets/zendikar/RampagingBaloths.java | 70 ++++++++++ .../src/mage/sets/zendikar/ScaldingTarn.java | 74 +++++++++++ .../src/mage/sets/zendikar/ScuteMob.java | 22 ++-- .../src/mage/sets/zendikar/SteppeLynx.java | 7 +- .../sets/zendikar/SunspringExpedition.java | 64 ++++++++++ .../mage/sets/zendikar/TeeteringPeaks.java | 61 +++++++++ .../mage/sets/zendikar/VerdantCatacombs.java | 2 + 94 files changed, 2539 insertions(+), 137 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/Sets.java create mode 100644 Mage.Sets/src/mage/sets/alarareborn/BehemothSledge.java create mode 100644 Mage.Sets/src/mage/sets/alarareborn/FinestHour.java create mode 100644 Mage.Sets/src/mage/sets/conflux/FontOfMythos.java create mode 100644 Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java create mode 100644 Mage.Sets/src/mage/sets/conflux/Thornling.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/BirdsOfParadise.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/EliteVanguard.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/Flashfreeze.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/GlacialFortress.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/HowlingMine.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/JaceBeleren.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/SafePassage.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/TerramorphicExpanse.java create mode 100644 Mage.Sets/src/mage/sets/magic2010/TimeWarp.java create mode 100644 Mage.Sets/src/mage/sets/shardsofalara/Angelsong.java create mode 100644 Mage.Sets/src/mage/sets/shardsofalara/ElspethKnightErrant.java create mode 100644 Mage.Sets/src/mage/sets/shardsofalara/RafiqOfTheMany.java create mode 100644 Mage.Sets/src/mage/sets/shardsofalara/RhoxWarMonk.java create mode 100644 Mage.Sets/src/mage/sets/worldwake/CelestialColonnade.java create mode 100644 Mage.Sets/src/mage/sets/worldwake/SejiriSteppe.java create mode 100644 Mage.Sets/src/mage/sets/worldwake/StirringWildwood.java create mode 100644 Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java create mode 100644 Mage.Sets/src/mage/sets/worldwake/TectonicEdge.java create mode 100644 Mage.Sets/src/mage/sets/zendikar/ArchiveTrap.java create mode 100644 Mage.Sets/src/mage/sets/zendikar/DayOfJudgment.java create mode 100644 Mage.Sets/src/mage/sets/zendikar/KabiraCrossroads.java create mode 100644 Mage.Sets/src/mage/sets/zendikar/LotusCobra.java create mode 100644 Mage.Sets/src/mage/sets/zendikar/RampagingBaloths.java create mode 100644 Mage.Sets/src/mage/sets/zendikar/ScaldingTarn.java create mode 100644 Mage.Sets/src/mage/sets/zendikar/SunspringExpedition.java create mode 100644 Mage.Sets/src/mage/sets/zendikar/TeeteringPeaks.java diff --git a/Mage.Sets/src/mage/sets/AlaraReborn.java b/Mage.Sets/src/mage/sets/AlaraReborn.java index b116ed21fde..1d84673d78b 100644 --- a/Mage.Sets/src/mage/sets/AlaraReborn.java +++ b/Mage.Sets/src/mage/sets/AlaraReborn.java @@ -45,12 +45,15 @@ public class AlaraReborn extends ExpansionSet { private AlaraReborn() { this.name = "Alara Reborn"; + this.cards.add(BehemothSledge.class); this.cards.add(BituminousBlast.class); this.cards.add(BloodbraidElf.class); + this.cards.add(FinestHour.class); this.cards.add(MaelstromPulse.class); this.cards.add(PutridLeech.class); this.cards.add(SpellbreakerBehemoth.class); this.cards.add(Terminate.class); this.cards.add(VengefulRebirth.class); } + } diff --git a/Mage.Sets/src/mage/sets/Conflux.java b/Mage.Sets/src/mage/sets/Conflux.java index 43310041d93..531a8fd5a13 100644 --- a/Mage.Sets/src/mage/sets/Conflux.java +++ b/Mage.Sets/src/mage/sets/Conflux.java @@ -45,9 +45,12 @@ public class Conflux extends ExpansionSet { private Conflux() { this.name = "Conflux"; + this.cards.add(FontOfMythos.class); + this.cards.add(KnightOfTheReliquary.class); this.cards.add(MartialCoup.class); this.cards.add(NobleHierarch.class); this.cards.add(PathToExile.class); + this.cards.add(Thornling.class); } } diff --git a/Mage.Sets/src/mage/sets/Magic2010.java b/Mage.Sets/src/mage/sets/Magic2010.java index ed1f8536d5e..7ac959d0a53 100644 --- a/Mage.Sets/src/mage/sets/Magic2010.java +++ b/Mage.Sets/src/mage/sets/Magic2010.java @@ -46,17 +46,25 @@ public class Magic2010 extends ExpansionSet { private Magic2010() { this.name = "Magic 2010"; this.cards.add(BaneslayerAngel.class); + this.cards.add(BirdsOfParadise.class); this.cards.add(Cancel.class); this.cards.add(CelestialPurge.class); this.cards.add(DragonskullSummit.class); + this.cards.add(Flashfreeze.class); this.cards.add(GargoyleCastle.class); this.cards.add(GarrukWildspeaker.class); + this.cards.add(GlacialFortress.class); this.cards.add(GreatSableStag.class); this.cards.add(HonorOfThePure.class); + this.cards.add(HowlingMine.class); + this.cards.add(JaceBeleren.class); this.cards.add(LightningBolt.class); this.cards.add(MasterOfTheWildHunt.class); this.cards.add(RootboundCrag.class); + this.cards.add(SafePassage.class); this.cards.add(SunpetalGrove.class); + this.cards.add(TerramorphicExpanse.class); + this.cards.add(TimeWarp.class); this.cards.add(WhiteKnight.class); } } diff --git a/Mage.Sets/src/mage/sets/Sets.java b/Mage.Sets/src/mage/sets/Sets.java new file mode 100644 index 00000000000..029589ebeb1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/Sets.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; + +import java.util.ArrayList; +import mage.cards.ExpansionSet; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class Sets extends ArrayList { + + private static final Sets fINSTANCE = new Sets(); + + public static Sets getInstance() { + return fINSTANCE; + } + + private Sets() { + this.add(AlaraReborn.getInstance()); + this.add(Conflux.getInstance()); + this.add(Magic2010.getInstance()); + this.add(Planechase.getInstance()); + this.add(ShardsOfAlara.getInstance()); + this.add(Tenth.getInstance()); + this.add(Worldwake.getInstance()); + this.add(Zendikar.getInstance()); + } + +} diff --git a/Mage.Sets/src/mage/sets/ShardsOfAlara.java b/Mage.Sets/src/mage/sets/ShardsOfAlara.java index 4c926845fc8..aadd0f81ac9 100644 --- a/Mage.Sets/src/mage/sets/ShardsOfAlara.java +++ b/Mage.Sets/src/mage/sets/ShardsOfAlara.java @@ -46,12 +46,16 @@ public class ShardsOfAlara extends ExpansionSet { private ShardsOfAlara() { this.name = "Shards Of Alara"; this.cards.add(AjaniVengeant.class); + this.cards.add(Angelsong.class); this.cards.add(Blightning.class); this.cards.add(BroodmateDragon.class); this.cards.add(CrumblingNecropolis.class); + this.cards.add(ElspethKnightErrant.class); this.cards.add(JundPanorama.class); this.cards.add(KnightOfTheWhiteOrchid.class); + this.cards.add(RafiqOfTheMany.class); this.cards.add(RangerOfEos.class); + this.cards.add(RhoxWarMonk.class); this.cards.add(SarkhanVol.class); this.cards.add(SavageLands.class); this.cards.add(SproutingThrinax.class); diff --git a/Mage.Sets/src/mage/sets/Worldwake.java b/Mage.Sets/src/mage/sets/Worldwake.java index 43372e772f2..d3d3bc79e67 100644 --- a/Mage.Sets/src/mage/sets/Worldwake.java +++ b/Mage.Sets/src/mage/sets/Worldwake.java @@ -46,7 +46,12 @@ public class Worldwake extends ExpansionSet { private Worldwake() { this.name = "Worldwake"; this.cards.add(BasiliskCollar.class); + this.cards.add(CelestialColonnade.class); this.cards.add(RagingRavine.class); + this.cards.add(SejiriSteppe.class); + this.cards.add(StirringWildwood.class); + this.cards.add(StoneforgeMystic.class); + this.cards.add(TectonicEdge.class); } } diff --git a/Mage.Sets/src/mage/sets/Zendikar.java b/Mage.Sets/src/mage/sets/Zendikar.java index 3cfa7d72391..316bdfe3f3a 100644 --- a/Mage.Sets/src/mage/sets/Zendikar.java +++ b/Mage.Sets/src/mage/sets/Zendikar.java @@ -45,17 +45,25 @@ public class Zendikar extends ExpansionSet { private Zendikar() { this.name = "Zendikar"; + this.cards.add(ArchiveTrap.class); this.cards.add(AridMesa.class); this.cards.add(BraveTheElements.class); this.cards.add(BurstLightning.class); this.cards.add(ConquerorsPledge.class); + this.cards.add(DayOfJudgment.class); this.cards.add(EmeriaAngel.class); this.cards.add(GoblinRuinblaster.class); + this.cards.add(KabiraCrossroads.class); + this.cards.add(LotusCobra.class); this.cards.add(MarshFlats.class); this.cards.add(MistyRainforest.class); this.cards.add(OranRiefTheVastwood.class); + this.cards.add(RampagingBaloths.class); + this.cards.add(ScaldingTarn.class); this.cards.add(ScuteMob.class); this.cards.add(SteppeLynx.class); + this.cards.add(SunspringExpedition.class); + this.cards.add(TeeteringPeaks.class); this.cards.add(VerdantCatacombs.class); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/BehemothSledge.java b/Mage.Sets/src/mage/sets/alarareborn/BehemothSledge.java new file mode 100644 index 00000000000..2cf3a1db7d6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/BehemothSledge.java @@ -0,0 +1,62 @@ +/* + * 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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Zone; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.BoostEquippedEffect; +import mage.abilities.effects.common.GainAbilityEquippedEffect; +import mage.abilities.keyword.EquipAbility; +import mage.abilities.keyword.LifelinkAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.sets.AlaraReborn; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class BehemothSledge extends CardImpl { + + public BehemothSledge(UUID ownerId) { + super(ownerId, "Behemoth Sledge", new CardType[]{CardType.ARTIFACT}, "{1}{G}{W}"); + this.expansionSetId = AlaraReborn.getInstance().getId(); + this.art = "120963_typ_reg_sty_010.jpg"; + this.subtype.add("Equipment"); + this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityEquippedEffect(LifelinkAbility.getInstance()))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityEquippedEffect(TrampleAbility.getInstance()))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2))); + } + +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/BituminousBlast.java b/Mage.Sets/src/mage/sets/alarareborn/BituminousBlast.java index aceb3acabcb..3cb68af0c07 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/BituminousBlast.java +++ b/Mage.Sets/src/mage/sets/alarareborn/BituminousBlast.java @@ -33,6 +33,7 @@ import mage.Constants.CardType; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.CascadeAbility; import mage.cards.CardImpl; +import mage.sets.AlaraReborn; import mage.target.common.TargetCreaturePermanent; /** @@ -43,6 +44,7 @@ public class BituminousBlast extends CardImpl { public BituminousBlast(UUID ownerId) { super(ownerId, "Bituminous Blast", new CardType[]{CardType.INSTANT}, "{3}{B}{R}"); + this.expansionSetId = AlaraReborn.getInstance().getId(); this.color.setBlack(true); this.color.setRed(true); this.art = "121045_typ_reg_sty_010.jpg"; diff --git a/Mage.Sets/src/mage/sets/alarareborn/BloodbraidElf.java b/Mage.Sets/src/mage/sets/alarareborn/BloodbraidElf.java index b9dd5c62c1d..4444fb9df6f 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/BloodbraidElf.java +++ b/Mage.Sets/src/mage/sets/alarareborn/BloodbraidElf.java @@ -34,6 +34,7 @@ import mage.MageInt; import mage.abilities.keyword.CascadeAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; +import mage.sets.AlaraReborn; /** * @@ -43,6 +44,7 @@ public class BloodbraidElf extends CardImpl { public BloodbraidElf(UUID ownerId) { super(ownerId, "Bloodbraid Elf", new CardType[]{CardType.CREATURE}, "{2}{R}{G}"); + this.expansionSetId = AlaraReborn.getInstance().getId(); this.color.setRed(true); this.color.setGreen(true); this.subtype.add("Elf"); diff --git a/Mage.Sets/src/mage/sets/alarareborn/FinestHour.java b/Mage.Sets/src/mage/sets/alarareborn/FinestHour.java new file mode 100644 index 00000000000..341705e5614 --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/FinestHour.java @@ -0,0 +1,117 @@ +/* + * 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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.TurnPhase; +import mage.Constants.Zone; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.keyword.ExaltedAbility; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import mage.game.permanent.Permanent; +import mage.game.turn.TurnMod; +import mage.sets.AlaraReborn; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class FinestHour extends CardImpl { + + public FinestHour(UUID ownerId) { + super(ownerId, "Finest Hour", new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{W}{U}"); + this.expansionSetId = AlaraReborn.getInstance().getId(); + this.color.setWhite(true); + this.color.setGreen(true); + this.color.setBlue(true); + this.art = "121018_typ_reg_sty_010.jpg"; + this.addAbility(new ExaltedAbility()); + this.addAbility(new FinestHourAbility()); + } + +} + +class FinestHourAbility extends TriggeredAbilityImpl { + + public FinestHourAbility() { + super(Zone.BATTLEFIELD, new FinestHourEffect()); + } + + @Override + public void checkTrigger(GameEvent event, Game game) { + if (checkIfClause(game) && game.getActivePlayerId().equals(this.controllerId)) { + if (event.getType() == EventType.DECLARED_ATTACKERS) { + if (game.getCombat().attacksAlone()) { + this.targets.add(new TargetCreaturePermanent()); + this.targets.get(0).getTargets().add(game.getCombat().getAttackers().get(0)); + trigger(game, event.getPlayerId()); + } + } + } + } + + @Override + public boolean checkIfClause(Game game) { + return game.getTurn().getPhase(TurnPhase.COMBAT).getCount() == 0; + } + + @Override + public String getRule() { + return "Whenever a creature you control attacks alone, if it's the first combat phase of the turn, untap that creature. After this phase, there is an additional combat phase."; + } + +} + +class FinestHourEffect extends OneShotEffect { + + public FinestHourEffect() { + super(Outcome.Benefit); + } + + @Override + public boolean apply(Game game) { + Permanent permanent = game.getPermanent(this.source.getFirstTarget()); + if (permanent != null) { + permanent.setTapped(false); + game.getState().getTurnMods().add(new TurnMod(this.source.getControllerId(), TurnPhase.COMBAT, null)); + } + else { + return false; + } + return true; + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/alarareborn/MaelstromPulse.java b/Mage.Sets/src/mage/sets/alarareborn/MaelstromPulse.java index 1f3603abdef..3d1e534df2a 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/MaelstromPulse.java +++ b/Mage.Sets/src/mage/sets/alarareborn/MaelstromPulse.java @@ -32,6 +32,7 @@ import java.util.UUID; import mage.Constants.CardType; import mage.abilities.effects.common.DestroyAllNamedPermanentsEffect; import mage.cards.CardImpl; +import mage.sets.AlaraReborn; import mage.target.common.TargetNonlandPermanent; /** @@ -42,6 +43,7 @@ public class MaelstromPulse extends CardImpl { public MaelstromPulse(UUID ownerId) { super(ownerId, "Maelstrom Pulse", new CardType[]{CardType.SORCERY}, "{1}{B}{G}"); + this.expansionSetId = AlaraReborn.getInstance().getId(); this.color.setBlack(true); this.color.setGreen(true); this.art = "121021_typ_reg_sty_010.jpg"; diff --git a/Mage.Sets/src/mage/sets/alarareborn/PutridLeech.java b/Mage.Sets/src/mage/sets/alarareborn/PutridLeech.java index cad7bfab7d9..a8a6713aee4 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/PutridLeech.java +++ b/Mage.Sets/src/mage/sets/alarareborn/PutridLeech.java @@ -30,12 +30,14 @@ package mage.sets.alarareborn; import java.util.UUID; import mage.Constants.CardType; +import mage.Constants.Duration; import mage.Constants.Zone; import mage.MageInt; import mage.abilities.common.ActivateOncePerTurnActivatedAbility; import mage.abilities.costs.common.PayLifeCost; -import mage.abilities.effects.common.BoostSourceEOTEffect; +import mage.abilities.effects.common.BoostSourceEffect; import mage.cards.CardImpl; +import mage.sets.AlaraReborn; /** * @@ -45,6 +47,7 @@ public class PutridLeech extends CardImpl { public PutridLeech(UUID ownerId) { super(ownerId, "Putrid Leech", new CardType[]{CardType.CREATURE}, "{B}{G}"); + this.expansionSetId = AlaraReborn.getInstance().getId(); this.color.setBlack(true); this.color.setGreen(true); this.subtype.add("Zombie"); @@ -52,6 +55,6 @@ public class PutridLeech extends CardImpl { this.art = "120997_typ_reg_sty_010.jpg"; this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEOTEffect(2, 2), new PayLifeCost(2))); + this.addAbility(new ActivateOncePerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new PayLifeCost(2))); } } diff --git a/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java b/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java index 72a3163008c..655f6d7383c 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java +++ b/Mage.Sets/src/mage/sets/alarareborn/SpellbreakerBehemoth.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.CantCounterControlledEffect; import mage.abilities.effects.common.CantCounterSourceEffect; import mage.cards.CardImpl; import mage.filter.FilterSpell; +import mage.sets.AlaraReborn; /** * @@ -46,6 +47,7 @@ public class SpellbreakerBehemoth extends CardImpl { public SpellbreakerBehemoth(UUID ownerId) { super(ownerId, "Spellbreaker Behemoth", new CardType[]{CardType.CREATURE}, "{1}{R}{G}{G}"); + this.expansionSetId = AlaraReborn.getInstance().getId(); this.color.setRed(true); this.color.setGreen(true); this.subtype.add("Beast"); diff --git a/Mage.Sets/src/mage/sets/alarareborn/Terminate.java b/Mage.Sets/src/mage/sets/alarareborn/Terminate.java index 4577ddedaf1..6f1da123533 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/Terminate.java +++ b/Mage.Sets/src/mage/sets/alarareborn/Terminate.java @@ -32,6 +32,7 @@ import java.util.UUID; import mage.Constants.CardType; import mage.abilities.effects.common.DestroyNoRegenTargetEffect; import mage.cards.CardImpl; +import mage.sets.AlaraReborn; import mage.target.common.TargetCreaturePermanent; /** @@ -42,6 +43,7 @@ public class Terminate extends CardImpl { public Terminate(UUID ownerId) { super(ownerId, "Terminate", new CardType[]{CardType.INSTANT}, "{B}{R}"); + this.expansionSetId = AlaraReborn.getInstance().getId(); this.color.setBlack(true); this.color.setRed(true); this.art = "115230_typ_reg_sty_010.jpg"; diff --git a/Mage.Sets/src/mage/sets/alarareborn/VengefulRebirth.java b/Mage.Sets/src/mage/sets/alarareborn/VengefulRebirth.java index 65abb75ae32..fada3063988 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/VengefulRebirth.java +++ b/Mage.Sets/src/mage/sets/alarareborn/VengefulRebirth.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.sets.AlaraReborn; import mage.target.common.TargetCardInGraveyard; import mage.target.common.TargetCreatureOrPlayer; @@ -49,6 +50,7 @@ public class VengefulRebirth extends CardImpl { public VengefulRebirth(UUID ownerId) { super(ownerId, "Vengeful Rebirth", new CardType[]{CardType.SORCERY}, "{4}{R}{G}"); + this.expansionSetId = AlaraReborn.getInstance().getId(); this.color.setRed(true); this.color.setGreen(true); this.art = "115104_typ_reg_sty_010.jpg"; diff --git a/Mage.Sets/src/mage/sets/conflux/FontOfMythos.java b/Mage.Sets/src/mage/sets/conflux/FontOfMythos.java new file mode 100644 index 00000000000..502726944ab --- /dev/null +++ b/Mage.Sets/src/mage/sets/conflux/FontOfMythos.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.conflux; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Zone; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.DrawCardTargetEffect; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import mage.sets.Conflux; +import mage.target.TargetPlayer; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class FontOfMythos extends CardImpl { + + public FontOfMythos(UUID ownerId) { + super(ownerId, "Font of Mythos", new CardType[]{CardType.ARTIFACT}, "{4}"); + this.expansionSetId = Conflux.getInstance().getId(); + this.art = "119800_typ_reg_sty_010.jpg"; + this.addAbility(new FontOfMythosAbility()); + } + +} + +class FontOfMythosAbility extends TriggeredAbilityImpl { + + public FontOfMythosAbility() { + super(Zone.BATTLEFIELD, new DrawCardTargetEffect(2)); + } + + @Override + public void checkTrigger(GameEvent event, Game game) { + if (event.getType() == EventType.DRAW_STEP_PRE) { + this.targets.add(new TargetPlayer()); + this.targets.get(0).getTargets().add(event.getPlayerId()); + trigger(game, event.getPlayerId()); + } + } + + @Override + public String getRule() { + return "At the beginning of each player's draw step, that player draws two additional cards."; + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java b/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java new file mode 100644 index 00000000000..d4317583898 --- /dev/null +++ b/Mage.Sets/src/mage/sets/conflux/KnightOfTheReliquary.java @@ -0,0 +1,120 @@ +/* + * 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.conflux; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Layer; +import mage.Constants.Outcome; +import mage.Constants.SubLayer; +import mage.Constants.TargetController; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.Costs; +import mage.abilities.costs.CostsImpl; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.effects.common.SearchLibraryPutInPlayEffect; +import mage.cards.CardImpl; +import mage.filter.Filter.ComparisonScope; +import mage.filter.common.FilterLandCard; +import mage.filter.common.FilterLandPermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.sets.Conflux; +import mage.target.common.TargetCardInLibrary; +import mage.target.common.TargetLandPermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class KnightOfTheReliquary extends CardImpl { + + private static FilterLandPermanent filter = new FilterLandPermanent("Forest or Plains"); + + static { + filter.getSubtype().add("Forest"); + filter.getSubtype().add("Plains"); + filter.setScopeSubtype(ComparisonScope.Any); + } + + public KnightOfTheReliquary(UUID ownerId) { + super(ownerId, "Knight of the Reliquary", new CardType[]{CardType.CREATURE}, "{1}{G}{W}"); + this.expansionSetId = Conflux.getInstance().getId(); + this.color.setWhite(true); + this.color.setGreen(true); + this.subtype.add("Human"); + this.subtype.add("Knight"); + this.art = "119798_typ_reg_sty_010.jpg"; + this.power = new MageInt(2); + this.toughness = new MageInt(2); + TargetCardInLibrary target = new TargetCardInLibrary(new FilterLandCard()); + TargetLandPermanent sac = new TargetLandPermanent(1, 1, filter, TargetController.YOU); + Costs costs = new CostsImpl(); + costs.add(new TapSourceCost()); + costs.add(new SacrificeTargetCost(sac)); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new KnightOfTheReliquaryEffect())); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(target, false, Outcome.PutLandInPlay), costs)); + } + +} + +class KnightOfTheReliquaryEffect extends ContinuousEffectImpl { + + private static FilterLandCard filter = new FilterLandCard(); + + public KnightOfTheReliquaryEffect() { + super(Duration.WhileOnBattlefield, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature); + } + + @Override + public boolean apply(Game game) { + int count = game.getPlayer(this.source.getControllerId()).getGraveyard().count(filter); + if (count > 0) { + Permanent target = (Permanent) game.getPermanent(this.source.getSourceId()); + if (target != null) { + target.addPower(count); + target.addToughness(count); + return true; + } + } + return false; + } + + @Override + public String getText() { + return "{this} gets +1/+1 for each land card in your graveyard"; + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/conflux/MartialCoup.java b/Mage.Sets/src/mage/sets/conflux/MartialCoup.java index fd3770b4b64..64ae77b5a53 100644 --- a/Mage.Sets/src/mage/sets/conflux/MartialCoup.java +++ b/Mage.Sets/src/mage/sets/conflux/MartialCoup.java @@ -38,6 +38,7 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.SoldierToken; import mage.players.Player; +import mage.sets.Conflux; /** * @@ -47,6 +48,7 @@ public class MartialCoup extends CardImpl { public MartialCoup(UUID ownerId) { super(ownerId, "Martial Coup", new CardType[]{CardType.SORCERY}, "{X}{W}{W}"); + this.expansionSetId = Conflux.getInstance().getId(); this.color.setWhite(true); this.art = "118685_typ_reg_sty_010.jpg"; this.getSpellAbility().addEffect(new MartialCoupEffect()); @@ -59,9 +61,10 @@ class MartialCoupEffect extends OneShotEffect { super(Outcome.PutCreatureInPlay); } + @Override public boolean apply(Game game) { Player controller = game.getPlayer(this.source.getControllerId()); - int amount = this.source.getCosts().getVariableCosts().get(0).getValue(); + int amount = this.source.getManaCosts().getVariableCosts().get(0).getValue(); FilterCreaturePermanent filter = new FilterCreaturePermanent(); if (amount > 4) { diff --git a/Mage.Sets/src/mage/sets/conflux/NobleHierarch.java b/Mage.Sets/src/mage/sets/conflux/NobleHierarch.java index c5ca654ac0c..ec23eb937f1 100644 --- a/Mage.Sets/src/mage/sets/conflux/NobleHierarch.java +++ b/Mage.Sets/src/mage/sets/conflux/NobleHierarch.java @@ -36,6 +36,7 @@ import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; +import mage.sets.Conflux; /** * @@ -45,6 +46,7 @@ public class NobleHierarch extends CardImpl { public NobleHierarch(UUID ownerId) { super(ownerId, "Noble Hierarch", new CardType[]{CardType.CREATURE}, "{G}"); + this.expansionSetId = Conflux.getInstance().getId(); this.color.setGreen(true); this.subtype.add("Human"); this.subtype.add("Druid"); diff --git a/Mage.Sets/src/mage/sets/conflux/PathToExile.java b/Mage.Sets/src/mage/sets/conflux/PathToExile.java index 9a4bd84261a..99c5959348b 100644 --- a/Mage.Sets/src/mage/sets/conflux/PathToExile.java +++ b/Mage.Sets/src/mage/sets/conflux/PathToExile.java @@ -39,6 +39,7 @@ import mage.filter.common.FilterBasicLandCard; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import mage.sets.Conflux; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCreaturePermanent; @@ -50,6 +51,7 @@ public class PathToExile extends CardImpl { public PathToExile(UUID ownerId) { super(ownerId, "Path To Exile", new CardType[]{CardType.INSTANT}, "{W}"); + this.expansionSetId = Conflux.getInstance().getId(); this.color.setWhite(true); this.art = "118686_typ_reg_sty_010.jpg"; this.getSpellAbility().addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/sets/conflux/Thornling.java b/Mage.Sets/src/mage/sets/conflux/Thornling.java new file mode 100644 index 00000000000..9208acc3895 --- /dev/null +++ b/Mage.Sets/src/mage/sets/conflux/Thornling.java @@ -0,0 +1,68 @@ +/* + * 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.conflux; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCosts; +import mage.abilities.effects.common.BoostSourceEffect; +import mage.abilities.effects.common.GainAbilitySourceEffect; +import mage.abilities.keyword.HasteAbility; +import mage.abilities.keyword.IndestructableAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.sets.Conflux; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class Thornling extends CardImpl { + + public Thornling(UUID ownerId) { + super(ownerId, "Thornling", new CardType[]{CardType.CREATURE}, "{3}{G}{G}"); + this.expansionSetId = Conflux.getInstance().getId(); + this.color.setGreen(true); + this.subtype.add("Elemental"); + this.subtype.add("Shapeshifter"); + this.art = "118734_typ_reg_sty_010.jpg"; + this.power = new MageInt(4); + this.toughness = new MageInt(4); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.EndOfTurn), new ManaCosts("{G}"))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn), new ManaCosts("{G}"))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(IndestructableAbility.getInstance(), Duration.EndOfTurn), new ManaCosts("{G}"))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, -1, Duration.EndOfTurn), new ManaCosts("{1}"))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(-1, 1, Duration.EndOfTurn), new ManaCosts("{1}"))); + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2010/BaneslayerAngel.java b/Mage.Sets/src/mage/sets/magic2010/BaneslayerAngel.java index f7f6f5ae0d1..9d54b70e0bd 100644 --- a/Mage.Sets/src/mage/sets/magic2010/BaneslayerAngel.java +++ b/Mage.Sets/src/mage/sets/magic2010/BaneslayerAngel.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.sets.Magic2010; /** * @@ -47,6 +48,7 @@ public class BaneslayerAngel extends CardImpl { public BaneslayerAngel(UUID ownerId) { super(ownerId, "Baneslayer Angel", new CardType[]{CardType.CREATURE}, "{3}{W}{W}"); + this.expansionSetId = Magic2010.getInstance().getId(); this.subtype.add("Angel"); this.color.setWhite(true); this.art = ""; diff --git a/Mage.Sets/src/mage/sets/magic2010/BirdsOfParadise.java b/Mage.Sets/src/mage/sets/magic2010/BirdsOfParadise.java new file mode 100644 index 00000000000..47890fcf012 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/BirdsOfParadise.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.magic2010; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.MageInt; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.mana.BlackManaAbility; +import mage.abilities.mana.BlueManaAbility; +import mage.abilities.mana.GreenManaAbility; +import mage.abilities.mana.RedManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; +import mage.sets.Magic2010; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class BirdsOfParadise extends CardImpl { + + public BirdsOfParadise(UUID ownerId) { + super(ownerId, "Birds of Paradise", new CardType[]{CardType.CREATURE}, "{G}"); + this.expansionSetId = Magic2010.getInstance().getId(); + this.subtype.add("Bird"); + this.color.setGreen(true); + this.art = "88690_typ_reg_sty_010.jpg"; + this.power = new MageInt(0); + this.toughness = new MageInt(1); + this.addAbility(FlyingAbility.getInstance()); + this.addAbility(new BlackManaAbility()); + this.addAbility(new BlueManaAbility()); + this.addAbility(new GreenManaAbility()); + this.addAbility(new RedManaAbility()); + this.addAbility(new WhiteManaAbility()); + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2010/Cancel.java b/Mage.Sets/src/mage/sets/magic2010/Cancel.java index 791e2b62e94..d5d967df761 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Cancel.java +++ b/Mage.Sets/src/mage/sets/magic2010/Cancel.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.Constants.CardType; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; -import mage.filter.FilterSpell; +import mage.sets.Magic2010; import mage.target.TargetSpell; /** @@ -41,13 +41,12 @@ import mage.target.TargetSpell; */ public class Cancel extends CardImpl { - private static FilterSpell filter = new FilterSpell(); - public Cancel(UUID ownerId) { super(ownerId, "Cancel", new CardType[]{CardType.INSTANT}, "{1}{U}{U}"); + this.expansionSetId = Magic2010.getInstance().getId(); this.color.setBlue(true); this.art = "116179_typ_reg_sty_010.jpg"; - this.getSpellAbility().addTarget(new TargetSpell(filter)); + this.getSpellAbility().addTarget(new TargetSpell()); this.getSpellAbility().addEffect(new CounterTargetEffect()); } diff --git a/Mage.Sets/src/mage/sets/magic2010/CelestialPurge.java b/Mage.Sets/src/mage/sets/magic2010/CelestialPurge.java index 03b0ce08b4e..878286a912c 100644 --- a/Mage.Sets/src/mage/sets/magic2010/CelestialPurge.java +++ b/Mage.Sets/src/mage/sets/magic2010/CelestialPurge.java @@ -31,11 +31,11 @@ package mage.sets.magic2010; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.TargetController; -import mage.ObjectColor; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterPermanent; +import mage.sets.Magic2010; import mage.target.TargetPermanent; /** @@ -55,6 +55,7 @@ public class CelestialPurge extends CardImpl { public CelestialPurge(UUID ownerId) { super(ownerId, "Celestial Purge", new CardType[]{CardType.INSTANT}, "{1}{W}"); + this.expansionSetId = Magic2010.getInstance().getId(); this.color.setWhite(true); this.art = "118751_typ_reg_sty_010.jpg"; this.getSpellAbility().addTarget(new TargetPermanent(filter, TargetController.ANY)); diff --git a/Mage.Sets/src/mage/sets/magic2010/DragonskullSummit.java b/Mage.Sets/src/mage/sets/magic2010/DragonskullSummit.java index c0c4a60789d..cfd0deef688 100644 --- a/Mage.Sets/src/mage/sets/magic2010/DragonskullSummit.java +++ b/Mage.Sets/src/mage/sets/magic2010/DragonskullSummit.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.events.GameEvent; +import mage.sets.Magic2010; /** * @@ -47,6 +48,7 @@ public class DragonskullSummit extends CardImpl { public DragonskullSummit(UUID ownerId) { super(ownerId, "Dragonskull Summit", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Magic2010.getInstance().getId(); this.art = "121671_typ_reg_sty_010.jpg"; this.addAbility(new EntersBattlefieldStaticAbility(new DragonskullSummitEffect())); this.addAbility(new BlackManaAbility()); diff --git a/Mage.Sets/src/mage/sets/magic2010/EliteVanguard.java b/Mage.Sets/src/mage/sets/magic2010/EliteVanguard.java new file mode 100644 index 00000000000..56a681fa978 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/EliteVanguard.java @@ -0,0 +1,54 @@ +/* + * 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.MageInt; +import mage.cards.CardImpl; +import mage.sets.Magic2010; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class EliteVanguard extends CardImpl { + + public EliteVanguard(UUID ownerId) { + super(ownerId, "Elite Vanguard", new CardType[]{CardType.CREATURE}, "{W}"); + this.expansionSetId = Magic2010.getInstance().getId(); + this.color.setWhite(true); + this.subtype.add("Human"); + this.subtype.add("Soldier"); + this.art = ""; + this.power = new MageInt(2); + this.toughness = new MageInt(1); + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2010/Flashfreeze.java b/Mage.Sets/src/mage/sets/magic2010/Flashfreeze.java new file mode 100644 index 00000000000..9aa15965f88 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/Flashfreeze.java @@ -0,0 +1,64 @@ +/* + * 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.abilities.effects.common.CounterTargetEffect; +import mage.cards.CardImpl; +import mage.filter.Filter.ComparisonScope; +import mage.filter.FilterSpell; +import mage.sets.Magic2010; +import mage.target.TargetSpell; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class Flashfreeze extends CardImpl { + + private static FilterSpell filter = new FilterSpell("red or green spell"); + + static { + filter.getColor().setRed(true); + filter.getColor().setGreen(true); + filter.setScopeColor(ComparisonScope.Any); + filter.setUseColor(true); + } + + public Flashfreeze(UUID ownerId) { + super(ownerId, "Flashfreeze", new CardType[]{CardType.INSTANT}, "{1}{U}"); + this.expansionSetId = Magic2010.getInstance().getId(); + this.color.setBlue(true); + this.art = "96954_typ_reg_sty_010.jpg"; + this.getSpellAbility().addTarget(new TargetSpell(filter)); + this.getSpellAbility().addEffect(new CounterTargetEffect()); + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2010/GargoyleCastle.java b/Mage.Sets/src/mage/sets/magic2010/GargoyleCastle.java index 7ddc07c1297..a814a0831de 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GargoyleCastle.java +++ b/Mage.Sets/src/mage/sets/magic2010/GargoyleCastle.java @@ -32,7 +32,6 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Zone; import mage.MageInt; -import mage.ObjectColor; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; @@ -42,6 +41,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.game.permanent.token.Token; +import mage.sets.Magic2010; /** * @@ -51,6 +51,7 @@ public class GargoyleCastle extends CardImpl { public GargoyleCastle(UUID ownerId) { super(ownerId, "Gargoyle Castle", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Magic2010.getInstance().getId(); this.art = "122169_typ_reg_sty_010.jpg"; this.addAbility(new ColorlessManaAbility()); this.addAbility(new GargoyleCastleAbility()); diff --git a/Mage.Sets/src/mage/sets/magic2010/GarrukWildspeaker.java b/Mage.Sets/src/mage/sets/magic2010/GarrukWildspeaker.java index 1de64f59034..54d57c40b13 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GarrukWildspeaker.java +++ b/Mage.Sets/src/mage/sets/magic2010/GarrukWildspeaker.java @@ -37,11 +37,13 @@ import mage.abilities.LoyaltyAbility; import mage.abilities.effects.Effects; import mage.abilities.effects.common.BoostControlledEffect; import mage.abilities.effects.common.CreateTokenEffect; -import mage.abilities.effects.common.GainAbilityControlledEOTEffect; +import mage.abilities.effects.common.GainAbilityControlledEffect; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; +import mage.filter.common.FilterCreaturePermanent; import mage.game.permanent.token.BeastToken; +import mage.sets.Magic2010; import mage.target.common.TargetLandPermanent; /** @@ -54,6 +56,7 @@ public class GarrukWildspeaker extends CardImpl { public GarrukWildspeaker(UUID ownerId) { super(ownerId, "Garruk Wildspeaker", new CardType[]{CardType.PLANESWALKER}, "{2}{G}{G}"); + this.expansionSetId = Magic2010.getInstance().getId(); this.subtype.add("Garruk"); this.color.setGreen(true); this.art = "105523_typ_reg_sty_010.jpg"; @@ -67,7 +70,7 @@ public class GarrukWildspeaker extends CardImpl { Effects effects1 = new Effects(null); effects1.add(new BoostControlledEffect(3, 3, Duration.EndOfTurn)); - effects1.add(new GainAbilityControlledEOTEffect(TrampleAbility.getInstance())); + effects1.add(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent())); this.addAbility(new LoyaltyAbility(effects1, -4)); } } diff --git a/Mage.Sets/src/mage/sets/magic2010/GlacialFortress.java b/Mage.Sets/src/mage/sets/magic2010/GlacialFortress.java new file mode 100644 index 00000000000..0decb7f6a60 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/GlacialFortress.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.abilities.common.EntersBattlefieldStaticAbility; +import mage.abilities.effects.common.EntersBattlefieldTappedEffect; +import mage.abilities.mana.BlueManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; +import mage.filter.FilterPermanent; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.sets.Magic2010; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class GlacialFortress extends CardImpl { + + public GlacialFortress(UUID ownerId) { + super(ownerId, "Glacial Fortress", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Magic2010.getInstance().getId(); + this.art = "121634_typ_reg_sty_010.jpg"; + this.addAbility(new EntersBattlefieldStaticAbility(new GlacialFortressEffect())); + this.addAbility(new BlueManaAbility()); + this.addAbility(new WhiteManaAbility()); + } +} + +class GlacialFortressEffect extends EntersBattlefieldTappedEffect { + + @Override + public boolean replaceEvent(GameEvent event, Game game) { + FilterPermanent filter = new FilterPermanent(); + filter.getName().add("Plains"); + filter.getName().add("Island"); + filter.getControllerId().add(this.source.getControllerId()); + if (game.getBattlefield().count(filter) == 0) + return apply(game); + return false; + } + + @Override + public String getText() { + return super.getText() + " unless you control a Plains or an Island"; + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/GreatSableStag.java b/Mage.Sets/src/mage/sets/magic2010/GreatSableStag.java index ee6cd92a961..f11c2aed32e 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GreatSableStag.java +++ b/Mage.Sets/src/mage/sets/magic2010/GreatSableStag.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.CantCounterSourceEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.sets.Magic2010; /** * @@ -46,6 +47,7 @@ public class GreatSableStag extends CardImpl { public GreatSableStag(UUID ownerId) { super(ownerId, "Great Sable Stag", new CardType[]{CardType.CREATURE}, "{1}{G}{G}"); + this.expansionSetId = Magic2010.getInstance().getId(); this.subtype.add("Elk"); this.color.setGreen(true); this.art = "122172_typ_reg_sty_010.jpg"; diff --git a/Mage.Sets/src/mage/sets/magic2010/HonorOfThePure.java b/Mage.Sets/src/mage/sets/magic2010/HonorOfThePure.java index 4391aba4314..6d2820cecb1 100644 --- a/Mage.Sets/src/mage/sets/magic2010/HonorOfThePure.java +++ b/Mage.Sets/src/mage/sets/magic2010/HonorOfThePure.java @@ -36,6 +36,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; +import mage.sets.Magic2010; /** * @@ -47,11 +48,12 @@ public class HonorOfThePure extends CardImpl { public HonorOfThePure(UUID ownerId) { super(ownerId, "Honor of the Pure", new CardType[]{CardType.ENCHANTMENT}, "{1}{W}"); + this.expansionSetId = Magic2010.getInstance().getId(); this.color.setWhite(true); this.art = ""; filter.setUseColor(true); filter.getColor().setWhite(true); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileInPlay, filter))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter))); } } diff --git a/Mage.Sets/src/mage/sets/magic2010/HowlingMine.java b/Mage.Sets/src/mage/sets/magic2010/HowlingMine.java new file mode 100644 index 00000000000..5c5197d17d8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/HowlingMine.java @@ -0,0 +1,83 @@ +/* + * 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.Zone; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.DrawCardTargetEffect; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import mage.sets.Magic2010; +import mage.target.TargetPlayer; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class HowlingMine extends CardImpl { + + public HowlingMine(UUID ownerId) { + super(ownerId, "Howling Mine", new CardType[]{CardType.ARTIFACT}, "{2}"); + this.expansionSetId = Magic2010.getInstance().getId(); + this.art = "102959_typ_reg_sty_010.jpg"; + this.addAbility(new HowlingMineAbility()); + } + +} + +class HowlingMineAbility extends TriggeredAbilityImpl { + + public HowlingMineAbility() { + super(Zone.BATTLEFIELD, new DrawCardTargetEffect(1)); + } + + @Override + public void checkTrigger(GameEvent event, Game game) { + if (event.getType() == EventType.DRAW_STEP_PRE) { + this.targets.add(new TargetPlayer()); + this.targets.get(0).getTargets().add(event.getPlayerId()); + trigger(game, event.getPlayerId()); + } + } + + @Override + public boolean checkIfClause(Game game) { + return !game.getPermanent(this.sourceId).isTapped(); + } + + @Override + public String getRule() { + return "At the beginning of each player's draw step, if {this} is untapped, that player draws an additional card."; + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2010/JaceBeleren.java b/Mage.Sets/src/mage/sets/magic2010/JaceBeleren.java new file mode 100644 index 00000000000..6db5674aab0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/JaceBeleren.java @@ -0,0 +1,68 @@ +/* + * 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.MageInt; +import mage.abilities.LoyaltyAbility; +import mage.abilities.effects.common.DrawCardAllEffect; +import mage.abilities.effects.common.DrawCardTargetEffect; +import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect; +import mage.cards.CardImpl; +import mage.sets.Magic2010; +import mage.target.TargetPlayer; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class JaceBeleren extends CardImpl { + + public JaceBeleren(UUID ownerId) { + super(ownerId, "Jace Beleren", new CardType[]{CardType.PLANESWALKER}, "{1}{U}{U}"); + this.expansionSetId = Magic2010.getInstance().getId(); + this.subtype.add("Jace"); + this.color.setBlue(true); + this.art = "105537_typ_reg_sty_010.jpg"; + this.loyalty = new MageInt(3); + + this.addAbility(new LoyaltyAbility(new DrawCardAllEffect(1), 2)); + + LoyaltyAbility ability1 = new LoyaltyAbility(new DrawCardTargetEffect(1), -1); + ability1.addTarget(new TargetPlayer()); + this.addAbility(ability1); + + LoyaltyAbility ability2 = new LoyaltyAbility(new PutLibraryIntoGraveTargetEffect(20), -10); + ability2.addTarget(new TargetPlayer()); + this.addAbility(ability2); + + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2010/LightningBolt.java b/Mage.Sets/src/mage/sets/magic2010/LightningBolt.java index 853c928c40f..c524be5cf8d 100644 --- a/Mage.Sets/src/mage/sets/magic2010/LightningBolt.java +++ b/Mage.Sets/src/mage/sets/magic2010/LightningBolt.java @@ -32,6 +32,7 @@ import java.util.UUID; import mage.Constants.CardType; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; +import mage.sets.Magic2010; import mage.target.common.TargetCreatureOrPlayer; /** @@ -42,6 +43,7 @@ public class LightningBolt extends CardImpl { public LightningBolt(UUID ownerId) { super(ownerId, "Lightning Bolt", new CardType[]{CardType.INSTANT}, "{R}"); + this.expansionSetId = Magic2010.getInstance().getId(); this.color.setRed(true); this.art = "121669_typ_reg_sty_010.jpg"; this.getSpellAbility().addTarget(new TargetCreatureOrPlayer()); diff --git a/Mage.Sets/src/mage/sets/magic2010/MasterOfTheWildHunt.java b/Mage.Sets/src/mage/sets/magic2010/MasterOfTheWildHunt.java index 19eb934df6e..0f201d0d174 100644 --- a/Mage.Sets/src/mage/sets/magic2010/MasterOfTheWildHunt.java +++ b/Mage.Sets/src/mage/sets/magic2010/MasterOfTheWildHunt.java @@ -33,11 +33,9 @@ import java.util.List; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Outcome; -import mage.Constants.PhaseStep; import mage.Constants.Zone; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.ActivatedAbilityImpl; import mage.abilities.common.OnEventTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; @@ -50,6 +48,7 @@ import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.game.permanent.token.WolfToken; import mage.players.Player; +import mage.sets.Magic2010; import mage.target.common.TargetCreaturePermanent; /** @@ -62,6 +61,7 @@ public class MasterOfTheWildHunt extends CardImpl { public MasterOfTheWildHunt(UUID ownerId) { super(ownerId, "Master of the Wild Hunt", new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); + this.expansionSetId = Magic2010.getInstance().getId(); this.subtype.add("Human"); this.subtype.add("Shaman"); this.color.setGreen(true); diff --git a/Mage.Sets/src/mage/sets/magic2010/RootboundCrag.java b/Mage.Sets/src/mage/sets/magic2010/RootboundCrag.java index 966aee0b95e..9495b944f96 100644 --- a/Mage.Sets/src/mage/sets/magic2010/RootboundCrag.java +++ b/Mage.Sets/src/mage/sets/magic2010/RootboundCrag.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.events.GameEvent; +import mage.sets.Magic2010; /** * @@ -47,6 +48,7 @@ public class RootboundCrag extends CardImpl { public RootboundCrag(UUID ownerId) { super(ownerId, "Rootbound Crag", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Magic2010.getInstance().getId(); this.art = "121648_typ_reg_sty_010.jpg"; this.addAbility(new EntersBattlefieldStaticAbility(new RootboundCragEffect())); this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/sets/magic2010/SafePassage.java b/Mage.Sets/src/mage/sets/magic2010/SafePassage.java new file mode 100644 index 00000000000..13dad533116 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/SafePassage.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.magic2010; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.abilities.effects.common.PreventAllDamageToEffect; +import mage.cards.CardImpl; +import mage.filter.common.FilterCreatureOrPlayer; +import mage.sets.Magic2010; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class SafePassage extends CardImpl { + + public SafePassage(UUID ownerId) { + super(ownerId, "Safe Passage", new CardType[]{CardType.INSTANT}, "{2}{W}"); + this.expansionSetId = Magic2010.getInstance().getId(); + this.color.setWhite(true); + this.art = "121601_typ_reg_sty_010.jpg"; + this.getSpellAbility().addEffect(new PreventAllDamageToEffect(Duration.EndOfTurn, new FilterCreatureOrPlayer("you and creatures you control", ownerId))); + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2010/SunpetalGrove.java b/Mage.Sets/src/mage/sets/magic2010/SunpetalGrove.java index 8a9e0ca4d99..71cfcb02697 100644 --- a/Mage.Sets/src/mage/sets/magic2010/SunpetalGrove.java +++ b/Mage.Sets/src/mage/sets/magic2010/SunpetalGrove.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.events.GameEvent; +import mage.sets.Magic2010; /** * @@ -47,6 +48,7 @@ public class SunpetalGrove extends CardImpl { public SunpetalGrove(UUID ownerId) { super(ownerId, "Sunpetal Grove", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Magic2010.getInstance().getId(); this.art = "121679_typ_reg_sty_010.jpg"; this.addAbility(new EntersBattlefieldStaticAbility(new SunpetalGroveEffect())); this.addAbility(new GreenManaAbility()); diff --git a/Mage.Sets/src/mage/sets/magic2010/TerramorphicExpanse.java b/Mage.Sets/src/mage/sets/magic2010/TerramorphicExpanse.java new file mode 100644 index 00000000000..6f72b29ab5c --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/TerramorphicExpanse.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.magic2010; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Zone; +import mage.abilities.ActivatedAbilityImpl; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.SearchLibraryPutInPlayEffect; +import mage.cards.CardImpl; +import mage.filter.common.FilterBasicLandCard; +import mage.sets.Magic2010; +import mage.target.common.TargetCardInLibrary; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class TerramorphicExpanse extends CardImpl { + + public TerramorphicExpanse(UUID ownerId) { + super(ownerId, "Terramorphic Expanse", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Magic2010.getInstance().getId(); + this.art = "97502_typ_reg_sty_010.jpg"; + this.addAbility(new TerramorphicExpanseAbility()); + } + +} + +class TerramorphicExpanseAbility extends ActivatedAbilityImpl { + + public TerramorphicExpanseAbility() { + super(Zone.BATTLEFIELD, null); + addCost(new TapSourceCost()); + addCost(new SacrificeSourceCost()); + TargetCardInLibrary target = new TargetCardInLibrary(new FilterBasicLandCard()); + addEffect(new SearchLibraryPutInPlayEffect(target, true, Outcome.PutLandInPlay)); + } + +} diff --git a/Mage.Sets/src/mage/sets/magic2010/TimeWarp.java b/Mage.Sets/src/mage/sets/magic2010/TimeWarp.java new file mode 100644 index 00000000000..49ddebdebc2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/TimeWarp.java @@ -0,0 +1,74 @@ +/* + * 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.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.turn.TurnMod; +import mage.sets.Magic2010; +import mage.target.TargetPlayer; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class TimeWarp extends CardImpl { + + public TimeWarp(UUID ownerId) { + super(ownerId, "Time Warp", new CardType[]{CardType.SORCERY}, "{3}{U}{U}"); + this.expansionSetId = Magic2010.getInstance().getId(); + this.color.setBlue(true); + this.art = "122160_typ_reg_sty_010.jpg"; + this.getSpellAbility().addTarget(new TargetPlayer()); + this.getSpellAbility().addEffect(new TimeWarpEffect()); + } + +} + +class TimeWarpEffect extends OneShotEffect { + + public TimeWarpEffect() { + super(Outcome.ExtraTurn); + } + + @Override + public boolean apply(Game game) { + game.getState().getTurnMods().add(new TurnMod(source.getFirstTarget())); + return true; + } + + @Override + public String getText() { + return "Target player takes an extra turn after this one."; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2010/WhiteKnight.java b/Mage.Sets/src/mage/sets/magic2010/WhiteKnight.java index 6d4c42e841e..17e9aa7040e 100644 --- a/Mage.Sets/src/mage/sets/magic2010/WhiteKnight.java +++ b/Mage.Sets/src/mage/sets/magic2010/WhiteKnight.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.sets.Magic2010; /** * @@ -44,6 +45,7 @@ public class WhiteKnight extends CardImpl { public WhiteKnight(UUID ownerId) { super(ownerId, "White Knight", new CardType[]{CardType.CREATURE}, "{W}{W}"); + this.expansionSetId = Magic2010.getInstance().getId(); this.subtype.add("Human"); this.subtype.add("Knight"); this.color.setWhite(true); diff --git a/Mage.Sets/src/mage/sets/planechase/OblivionRing.java b/Mage.Sets/src/mage/sets/planechase/OblivionRing.java index 4a473b4ab9e..13435f4046b 100644 --- a/Mage.Sets/src/mage/sets/planechase/OblivionRing.java +++ b/Mage.Sets/src/mage/sets/planechase/OblivionRing.java @@ -39,6 +39,7 @@ import mage.abilities.common.LeavesBattlefieldTriggeredAbility; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.filter.common.FilterNonlandPermanent; +import mage.sets.Planechase; import mage.target.TargetPermanent; /** @@ -49,6 +50,7 @@ public class OblivionRing extends CardImpl { public OblivionRing(UUID ownerId) { super(ownerId, "Oblivion Ring", new CardType[]{CardType.ENCHANTMENT}, "{2}{W}"); + this.expansionSetId = Planechase.getInstance().getId(); this.color.setWhite(true); this.art = "115005_typ_reg_sty_010.jpg"; FilterNonlandPermanent filter = new FilterNonlandPermanent(); diff --git a/Mage.Sets/src/mage/sets/planechase/SoulWarden.java b/Mage.Sets/src/mage/sets/planechase/SoulWarden.java index fdfd94bff64..b56aa05c828 100644 --- a/Mage.Sets/src/mage/sets/planechase/SoulWarden.java +++ b/Mage.Sets/src/mage/sets/planechase/SoulWarden.java @@ -30,12 +30,9 @@ package mage.sets.planechase; import java.util.UUID; import mage.Constants.CardType; -import mage.Constants.Duration; import mage.Constants.Zone; import mage.MageInt; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.game.Game; @@ -43,6 +40,7 @@ import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; +import mage.sets.Planechase; /** * @@ -52,6 +50,7 @@ public class SoulWarden extends CardImpl { public SoulWarden(UUID ownerId) { super(ownerId, "Soul Warden", new CardType[]{CardType.CREATURE}, "{W}"); + this.expansionSetId = Planechase.getInstance().getId(); this.subtype.add("Human"); this.subtype.add("Cleric"); this.color.setWhite(true); @@ -70,7 +69,7 @@ class SoulWardenAbility extends TriggeredAbilityImpl { } @Override - public void handleEvent(GameEvent event, Game game) { + public void 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.getId().equals(this.getSourceId())) @@ -84,38 +83,3 @@ class SoulWardenAbility extends TriggeredAbilityImpl { } } - -//class SoulWardenEffect extends ReplacementEffectImpl { -// -// public SoulWardenEffect() { -// super(Duration.WhileInPlay); -// } -// -// @Override -// public boolean apply(Game game) { -// game.getPlayer(source.getControllerId()).gainLife(1, game); -// return true; -// } -// -// @Override -// public boolean replaceEvent(GameEvent event, Game game) { -// apply(game); -// return false; -// } -// -// @Override -// public boolean applies(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)) -// return true; -// } -// return false; -// } -// -// @Override -// public String getText() { -// return "Whenever another creature enters the battlefield, you gain 1 life"; -// } -// -//} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/shardsofalara/AjaniVengeant.java b/Mage.Sets/src/mage/sets/shardsofalara/AjaniVengeant.java index 3c01ac27558..a39f662b43d 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/AjaniVengeant.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/AjaniVengeant.java @@ -35,11 +35,11 @@ import mage.abilities.LoyaltyAbility; import mage.abilities.effects.Effects; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DestroyAllControlledTargetEffect; -import mage.abilities.effects.common.DestroyAllEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.SkipNextUntapTargetEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.sets.ShardsOfAlara; import mage.target.TargetPermanent; import mage.target.TargetPlayer; import mage.target.common.TargetCreatureOrPlayer; @@ -52,6 +52,7 @@ public class AjaniVengeant extends CardImpl { public AjaniVengeant(UUID ownerId) { super(ownerId, "Ajani Vengeant", new CardType[]{CardType.PLANESWALKER}, "{2}{R}{W}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.subtype.add("Ajani"); this.color.setRed(true); this.color.setWhite(true); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Angelsong.java b/Mage.Sets/src/mage/sets/shardsofalara/Angelsong.java new file mode 100644 index 00000000000..bc320aa1d8d --- /dev/null +++ b/Mage.Sets/src/mage/sets/shardsofalara/Angelsong.java @@ -0,0 +1,55 @@ +/* + * 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.shardsofalara; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.abilities.costs.mana.ManaCosts; +import mage.abilities.effects.common.PreventAllCombatDamageEffect; +import mage.abilities.keyword.CyclingAbility; +import mage.cards.CardImpl; +import mage.sets.ShardsOfAlara; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class Angelsong extends CardImpl { + + public Angelsong(UUID ownerId) { + super(ownerId, "Angelsong", new CardType[]{CardType.INSTANT}, "{1}{W}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); + this.color.setWhite(true); + this.art = "115068_typ_reg_sty_010.jpg"; + this.getSpellAbility().addEffect(new PreventAllCombatDamageEffect(Duration.EndOfTurn)); + this.addAbility(new CyclingAbility(new ManaCosts("{2}"))); + } + +} diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Blightning.java b/Mage.Sets/src/mage/sets/shardsofalara/Blightning.java index 762a97c81d2..6c82e6a49da 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Blightning.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Blightning.java @@ -33,6 +33,7 @@ import mage.Constants.CardType; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DiscardTargetEffect; import mage.cards.CardImpl; +import mage.sets.ShardsOfAlara; import mage.target.TargetPlayer; /** @@ -43,6 +44,7 @@ public class Blightning extends CardImpl { public Blightning(UUID ownerId) { super(ownerId, "Blightning", new CardType[]{CardType.SORCERY}, "{1}{B}{R}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.color.setBlack(true); this.color.setRed(true); this.art = "115010_typ_reg_sty_010.jpg"; diff --git a/Mage.Sets/src/mage/sets/shardsofalara/BroodmateDragon.java b/Mage.Sets/src/mage/sets/shardsofalara/BroodmateDragon.java index 05e00c6a8d0..be90a1962fc 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/BroodmateDragon.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/BroodmateDragon.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.game.permanent.token.DragonToken; +import mage.sets.ShardsOfAlara; /** * @@ -47,6 +48,7 @@ public class BroodmateDragon extends CardImpl { public BroodmateDragon(UUID ownerId) { super(ownerId, "Broodmate Dragon", new CardType[]{CardType.CREATURE}, "{3}{B}{R}{G}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.subtype.add("Dragon"); this.color.setRed(true); this.color.setGreen(true); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/CrumblingNecropolis.java b/Mage.Sets/src/mage/sets/shardsofalara/CrumblingNecropolis.java index ecd846c946d..e76873a2db5 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/CrumblingNecropolis.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/CrumblingNecropolis.java @@ -36,6 +36,7 @@ import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; +import mage.sets.ShardsOfAlara; /** * @@ -45,6 +46,7 @@ public class CrumblingNecropolis extends CardImpl { public CrumblingNecropolis(UUID ownerId) { super(ownerId, "Crumbling Necropolis", new CardType[]{CardType.LAND}, null); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.art = "115145_typ_reg_sty_010.jpg"; this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect())); this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/ElspethKnightErrant.java b/Mage.Sets/src/mage/sets/shardsofalara/ElspethKnightErrant.java new file mode 100644 index 00000000000..83639e573e3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/shardsofalara/ElspethKnightErrant.java @@ -0,0 +1,83 @@ +/* + * 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.shardsofalara; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.MageInt; +import mage.abilities.LoyaltyAbility; +import mage.abilities.effects.Effects; +import mage.abilities.effects.common.BoostTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.GainAbilityControlledEffect; +import mage.abilities.effects.common.GainAbilityTargetEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.IndestructableAbility; +import mage.cards.CardImpl; +import mage.filter.FilterPermanent; +import mage.game.permanent.token.SoldierToken; +import mage.sets.ShardsOfAlara; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class ElspethKnightErrant extends CardImpl { + + private static SoldierToken soldierToken = new SoldierToken(); + + public ElspethKnightErrant(UUID ownerId) { + super(ownerId, "Elspeth, Knight-Errant", new CardType[]{CardType.PLANESWALKER}, "{2}{W}{W}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); + this.subtype.add("Elspeth"); + this.color.setWhite(true); + this.art = "114973_typ_reg_sty_010.jpg"; + this.loyalty = new MageInt(4); + + this.addAbility(new LoyaltyAbility(new CreateTokenEffect(soldierToken), 1)); + + Effects effects1 = new Effects(null); + effects1.add(new BoostTargetEffect(3, 3, Duration.EndOfTurn)); + effects1.add(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)); + LoyaltyAbility ability1 = new LoyaltyAbility(effects1, 1); + ability1.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability1); + + FilterPermanent filter = new FilterPermanent("artifacts, creatures, enchantments and lands"); + filter.getCardType().add(CardType.ARTIFACT); + filter.getCardType().add(CardType.CREATURE); + filter.getCardType().add(CardType.ENCHANTMENT); + filter.getCardType().add(CardType.LAND); + this.addAbility(new LoyaltyAbility(new GainAbilityControlledEffect(IndestructableAbility.getInstance(), Duration.EndOfGame, filter), -8)); + + } + +} diff --git a/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java index 71ba0df2754..eddacb1b752 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.sets.ShardsOfAlara; import mage.target.common.TargetCardInLibrary; /** @@ -50,6 +51,7 @@ public class JundPanorama extends CardImpl { public JundPanorama(UUID ownerId) { super(ownerId, "Jund Panorama", new CardType[]{CardType.LAND}, null); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.art = "116191_typ_reg_sty_010.jpg"; this.addAbility(new ColorlessManaAbility()); this.addAbility(new JundPanoramaAbility()); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java b/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java index 0ff6d99d83f..b6ccaffc7bb 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java @@ -43,6 +43,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.game.events.ZoneChangeEvent; +import mage.sets.ShardsOfAlara; import mage.target.common.TargetCardInLibrary; /** @@ -53,6 +54,7 @@ public class KnightOfTheWhiteOrchid extends CardImpl { public KnightOfTheWhiteOrchid(UUID ownerId) { super(ownerId, "Knight of the White Orchid", new CardType[]{CardType.CREATURE}, "{W}{W}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.subtype.add("Human"); this.subtype.add("Knight"); this.color.setWhite(true); @@ -77,29 +79,35 @@ class KnightOfTheWhiteOrchidAbility extends EntersBattlefieldTriggeredAbility { } @Override - public void handleEvent(GameEvent event, Game game) { + public void checkTrigger(GameEvent event, Game game) { if (event.getType() == EventType.ZONE_CHANGE && event.getTargetId().equals(this.getSourceId()) ) { ZoneChangeEvent zEvent = (ZoneChangeEvent)event; if (zEvent.getToZone() == Zone.BATTLEFIELD) { - FilterLandPermanent filter = new FilterLandPermanent(); - filter.getControllerId().clear(); - filter.getControllerId().add(this.controllerId); - int numLands = game.getBattlefield().count(filter); - for (UUID opponentId: game.getOpponents(this.controllerId)) { - filter.getControllerId().clear(); - filter.getControllerId().add(opponentId); - if (numLands < game.getBattlefield().count(filter)) { - trigger(game, this.controllerId); - break; - } - } + trigger(game, this.controllerId); } } } + @Override + public boolean checkIfClause(Game game) { + FilterLandPermanent filter = new FilterLandPermanent(); + filter.getControllerId().clear(); + filter.getControllerId().add(this.controllerId); + int numLands = game.getBattlefield().count(filter); + for (UUID opponentId: game.getOpponents(this.controllerId)) { + filter.getControllerId().clear(); + filter.getControllerId().add(opponentId); + if (numLands < game.getBattlefield().count(filter)) { + return true; + } + } + return false; + } + + @Override public String getRule() { - return "When Knight of the White Orchid enters the battlefield, if an opponent controls more lands than you, you may " + super.getRule(); + return "When {this} enters the battlefield, if an opponent controls more lands than you, you may " + super.getRule(); } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/shardsofalara/RafiqOfTheMany.java b/Mage.Sets/src/mage/sets/shardsofalara/RafiqOfTheMany.java new file mode 100644 index 00000000000..c6b2ba5f2eb --- /dev/null +++ b/Mage.Sets/src/mage/sets/shardsofalara/RafiqOfTheMany.java @@ -0,0 +1,93 @@ +/* + * 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.shardsofalara; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.GainAbilityTargetEffect; +import mage.abilities.keyword.DoubleStrikeAbility; +import mage.abilities.keyword.ExaltedAbility; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import mage.sets.ShardsOfAlara; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class RafiqOfTheMany extends CardImpl { + + public RafiqOfTheMany(UUID ownerId) { + super(ownerId, "Rafiq of the Many", new CardType[]{CardType.CREATURE}, "{1}{G}{W}{U}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); + this.color.setGreen(true); + this.color.setWhite(true); + this.color.setBlue(true); + this.supertype.add("Legendary"); + this.subtype.add("Human"); + this.subtype.add("Knight"); + this.art = "115029_typ_reg_sty_010.jpg"; + this.power = new MageInt(3); + this.toughness = new MageInt(3); + this.addAbility(new ExaltedAbility()); + this.addAbility(new RafiqOfTheManyAbility()); + } + +} + +class RafiqOfTheManyAbility extends TriggeredAbilityImpl { + + public RafiqOfTheManyAbility() { + super(Zone.BATTLEFIELD, new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn)); + } + + @Override + public void checkTrigger(GameEvent event, Game game) { + if (event.getType() == EventType.DECLARED_ATTACKERS ) { + if (game.getCombat().attacksAlone()) { + this.targets.add(new TargetCreaturePermanent()); + this.targets.get(0).getTargets().add(game.getCombat().getAttackers().get(0)); + trigger(game, event.getPlayerId()); + } + } + } + + @Override + public String getRule() { + return "Whenever a creature you control attacks alone, it gains double strike until end of turn."; + } + +} diff --git a/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java b/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java index 60ad60708ab..3d4daf597a4 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java @@ -30,21 +30,13 @@ package mage.sets.shardsofalara; import java.util.UUID; import mage.Constants.CardType; -import mage.Constants.Outcome; -import mage.Constants.Zone; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.SearchLibraryRevealPutInHandEffect; -import mage.cards.Card; import mage.cards.CardImpl; -import mage.cards.Cards; -import mage.cards.CardsImpl; import mage.filter.Filter.ComparisonType; import mage.filter.FilterCard; -import mage.game.Game; -import mage.players.Player; -import mage.target.TargetCard; +import mage.sets.ShardsOfAlara; import mage.target.common.TargetCardInLibrary; /** @@ -63,6 +55,7 @@ public class RangerOfEos extends CardImpl { public RangerOfEos(UUID ownerId) { super(ownerId, "Ranger Of Eos", new CardType[]{CardType.CREATURE}, "{3}{W}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.color.setWhite(true); this.subtype.add("Human"); this.subtype.add("Soldier"); @@ -75,37 +68,3 @@ public class RangerOfEos extends CardImpl { } } - -//class RangerOfEosEffect extends OneShotEffect { -// -// private static FilterCard filter = new FilterCard(); -// -// static { -// filter.getCardType().add(CardType.CREATURE); -// filter.setConvertedManaCost(2); -// filter.setConvertedManaCostComparison(ComparisonType.LessThan); -// } -// -// @Override -// public boolean apply(Game game) { -// Player player = game.getPlayer(this.getSource().getControllerId()); -// TargetCard target = new TargetCard(0, 2, Zone.LIBRARY, filter); -// player.searchCards(new CardsImpl(Zone.LIBRARY, player.getLibrary().getCards()), target, game); -// Cards cards = new CardsImpl(Zone.REVEALED); -// for (UUID cardId: target.getTargets()) { -// Card card = player.getLibrary().remove(cardId); -// if (card != null) { -// player.putInHand(card, game); -// cards.add(card); -// } -// } -// if (cards.size() > 0) -// player.revealCards(cards, game); -// return true; -// } -// -// @Override -// public String getText() { -// return "you may search your library for up to two creature cards with converted mana cost 1 or less, reveal them, and put them into your hand. If you do, shuffle your library."; -// } -//} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/shardsofalara/RhoxWarMonk.java b/Mage.Sets/src/mage/sets/shardsofalara/RhoxWarMonk.java new file mode 100644 index 00000000000..c9006e81c59 --- /dev/null +++ b/Mage.Sets/src/mage/sets/shardsofalara/RhoxWarMonk.java @@ -0,0 +1,59 @@ +/* + * 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.shardsofalara; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.MageInt; +import mage.abilities.keyword.LifelinkAbility; +import mage.cards.CardImpl; +import mage.sets.ShardsOfAlara; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class RhoxWarMonk extends CardImpl { + + public RhoxWarMonk(UUID ownerId) { + super(ownerId, "Rhox War Monk", new CardType[]{CardType.CREATURE}, "{G}{W}{U}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); + this.subtype.add("Rhino"); + this.subtype.add("Monk"); + this.color.setWhite(true); + this.color.setBlue(true); + this.color.setGreen(true); + this.art = "115055_typ_reg_sty_010.jpg"; + this.power = new MageInt(3); + this.toughness = new MageInt(4); + + this.addAbility(LifelinkAbility.getInstance()); + } + +} diff --git a/Mage.Sets/src/mage/sets/shardsofalara/SarkhanVol.java b/Mage.Sets/src/mage/sets/shardsofalara/SarkhanVol.java index 2e26cbba75d..2d113537a18 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/SarkhanVol.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/SarkhanVol.java @@ -36,13 +36,15 @@ import mage.abilities.LoyaltyAbility; import mage.abilities.effects.Effects; import mage.abilities.effects.common.BoostControlledEffect; import mage.abilities.effects.common.CreateTokenEffect; -import mage.abilities.effects.common.GainAbilityControlledEOTEffect; -import mage.abilities.effects.common.GainAbilityTargetEOTEffect; +import mage.abilities.effects.common.GainAbilityControlledEffect; +import mage.abilities.effects.common.GainAbilityTargetEffect; import mage.abilities.effects.common.GainControlTargetEOTEffect; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; +import mage.filter.common.FilterCreaturePermanent; import mage.game.permanent.token.DragonToken; +import mage.sets.ShardsOfAlara; import mage.target.common.TargetCreaturePermanent; /** @@ -55,6 +57,7 @@ public class SarkhanVol extends CardImpl { public SarkhanVol(UUID ownerId) { super(ownerId, "Sarkhan Vol", new CardType[]{CardType.PLANESWALKER}, "{2}{R}{G}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.subtype.add("Sarkhan"); this.color.setRed(true); this.color.setGreen(true); @@ -63,13 +66,13 @@ public class SarkhanVol extends CardImpl { Effects effects1 = new Effects(null); effects1.add(new BoostControlledEffect(1, 1, Duration.EndOfTurn)); - effects1.add(new GainAbilityControlledEOTEffect(HasteAbility.getInstance())); + effects1.add(new GainAbilityControlledEffect(HasteAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent())); this.addAbility(new LoyaltyAbility(effects1, 1)); Effects effects2 = new Effects(null); effects2.add(new GainControlTargetEOTEffect()); effects2.add(new UntapTargetEffect()); - effects2.add(new GainAbilityTargetEOTEffect(HasteAbility.getInstance())); + effects2.add(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)); LoyaltyAbility ability = new LoyaltyAbility(effects2, -2); ability.addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/SavageLands.java b/Mage.Sets/src/mage/sets/shardsofalara/SavageLands.java index 2cb71dbe28c..ba4480c5c9b 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/SavageLands.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/SavageLands.java @@ -36,6 +36,7 @@ import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; +import mage.sets.ShardsOfAlara; /** * @@ -45,6 +46,7 @@ public class SavageLands extends CardImpl { public SavageLands(UUID ownerId) { super(ownerId, "Savage Lands", new CardType[]{CardType.LAND}, null); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.art = "114986_typ_reg_sty_010.jpg"; this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect())); this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/SproutingThrinax.java b/Mage.Sets/src/mage/sets/shardsofalara/SproutingThrinax.java index ca03ade5e0a..1f48dce857a 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/SproutingThrinax.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/SproutingThrinax.java @@ -35,6 +35,7 @@ import mage.abilities.common.PutIntoGraveFromBattlefieldTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.game.permanent.token.SaprolingToken; +import mage.sets.ShardsOfAlara; /** * @@ -46,6 +47,7 @@ public class SproutingThrinax extends CardImpl { public SproutingThrinax(UUID ownerId) { super(ownerId, "Sprouting Thrinax", new CardType[]{CardType.CREATURE}, "{B}{R}{G}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.color.setBlack(true); this.color.setRed(true); this.color.setGreen(true); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/WildNacatl.java b/Mage.Sets/src/mage/sets/shardsofalara/WildNacatl.java index c42704ae120..b5043f6fe71 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/WildNacatl.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/WildNacatl.java @@ -36,6 +36,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.BoostSourceWhileControlsEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.sets.ShardsOfAlara; /** * @@ -48,6 +49,7 @@ public class WildNacatl extends CardImpl { public WildNacatl(UUID ownerId) { super(ownerId, "Wild Nacatl", new CardType[]{CardType.CREATURE}, "{G}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.color.setGreen(true); this.subtype.add("Cat"); this.subtype.add("Warrior"); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/WoollyThoctar.java b/Mage.Sets/src/mage/sets/shardsofalara/WoollyThoctar.java index 01692aecfab..020ac5c7f92 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/WoollyThoctar.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/WoollyThoctar.java @@ -32,6 +32,7 @@ import java.util.UUID; import mage.Constants.CardType; import mage.MageInt; import mage.cards.CardImpl; +import mage.sets.ShardsOfAlara; /** * @@ -41,6 +42,7 @@ public class WoollyThoctar extends CardImpl { public WoollyThoctar(UUID ownerId) { super(ownerId, "Woolly Thoctar", new CardType[]{CardType.CREATURE}, "{R}{G}{W}"); + this.expansionSetId = ShardsOfAlara.getInstance().getId(); this.color.setRed(true); this.color.setGreen(true); this.color.setWhite(true); diff --git a/Mage.Sets/src/mage/sets/tenth/Forest1.java b/Mage.Sets/src/mage/sets/tenth/Forest1.java index c0658ede8ea..48165d225ef 100644 --- a/Mage.Sets/src/mage/sets/tenth/Forest1.java +++ b/Mage.Sets/src/mage/sets/tenth/Forest1.java @@ -30,6 +30,7 @@ package mage.sets.tenth; import java.util.UUID; import mage.cards.basiclands.Forest; +import mage.sets.Tenth; /** * @@ -39,6 +40,7 @@ public class Forest1 extends Forest { public Forest1(UUID ownerId) { super(ownerId); + this.expansionSetId = Tenth.getInstance().getId(); this.art = "89160_typ_reg_sty_010.jpg"; } diff --git a/Mage.Sets/src/mage/sets/tenth/Island1.java b/Mage.Sets/src/mage/sets/tenth/Island1.java index 4aff21aac2f..2e0d53082f1 100644 --- a/Mage.Sets/src/mage/sets/tenth/Island1.java +++ b/Mage.Sets/src/mage/sets/tenth/Island1.java @@ -30,6 +30,7 @@ package mage.sets.tenth; import java.util.UUID; import mage.cards.basiclands.Island; +import mage.sets.Tenth; /** * @@ -39,6 +40,7 @@ public class Island1 extends Island { public Island1(UUID ownerId) { super(ownerId); + this.expansionSetId = Tenth.getInstance().getId(); this.art = "80957_typ_reg_sty_010.jpg"; } diff --git a/Mage.Sets/src/mage/sets/tenth/Mountain1.java b/Mage.Sets/src/mage/sets/tenth/Mountain1.java index d36bb4c4533..b1f8cf9e0cf 100644 --- a/Mage.Sets/src/mage/sets/tenth/Mountain1.java +++ b/Mage.Sets/src/mage/sets/tenth/Mountain1.java @@ -30,6 +30,7 @@ package mage.sets.tenth; import java.util.UUID; import mage.cards.basiclands.Mountain; +import mage.sets.Tenth; /** * @@ -39,6 +40,7 @@ public class Mountain1 extends Mountain { public Mountain1(UUID ownerId) { super(ownerId); + this.expansionSetId = Tenth.getInstance().getId(); this.art = "89159_typ_reg_sty_010.jpg"; } diff --git a/Mage.Sets/src/mage/sets/tenth/Plains1.java b/Mage.Sets/src/mage/sets/tenth/Plains1.java index 9f76ebfb7de..d36e4c2b33d 100644 --- a/Mage.Sets/src/mage/sets/tenth/Plains1.java +++ b/Mage.Sets/src/mage/sets/tenth/Plains1.java @@ -30,6 +30,7 @@ package mage.sets.tenth; import java.util.UUID; import mage.cards.basiclands.Plains; +import mage.sets.Tenth; /** * @@ -39,6 +40,7 @@ public class Plains1 extends Plains { public Plains1(UUID ownerId) { super(ownerId); + this.expansionSetId = Tenth.getInstance().getId(); this.art = "80949_typ_reg_sty_010.jpg"; } diff --git a/Mage.Sets/src/mage/sets/tenth/Swamp1.java b/Mage.Sets/src/mage/sets/tenth/Swamp1.java index e4ef40d3ade..07fd7796e2b 100644 --- a/Mage.Sets/src/mage/sets/tenth/Swamp1.java +++ b/Mage.Sets/src/mage/sets/tenth/Swamp1.java @@ -30,6 +30,7 @@ package mage.sets.tenth; import java.util.UUID; import mage.cards.basiclands.Swamp; +import mage.sets.Tenth; /** * @@ -39,6 +40,7 @@ public class Swamp1 extends Swamp { public Swamp1(UUID ownerId) { super(ownerId); + this.expansionSetId = Tenth.getInstance().getId(); this.art = "89177_typ_reg_sty_010.jpg"; } diff --git a/Mage.Sets/src/mage/sets/worldwake/BasiliskCollar.java b/Mage.Sets/src/mage/sets/worldwake/BasiliskCollar.java index 993402841fe..1233f4e5c0d 100644 --- a/Mage.Sets/src/mage/sets/worldwake/BasiliskCollar.java +++ b/Mage.Sets/src/mage/sets/worldwake/BasiliskCollar.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.LifelinkAbility; import mage.cards.CardImpl; +import mage.sets.Worldwake; /** * @@ -48,6 +49,7 @@ public class BasiliskCollar extends CardImpl { public BasiliskCollar(UUID ownerId) { super(ownerId, "Basilisk Collar", new CardType[]{CardType.ARTIFACT}, "{1}"); + this.expansionSetId = Worldwake.getInstance().getId(); this.art = "126549_typ_reg_sty_010.jpg"; this.subtype.add("Equipment"); this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2))); diff --git a/Mage.Sets/src/mage/sets/worldwake/CelestialColonnade.java b/Mage.Sets/src/mage/sets/worldwake/CelestialColonnade.java new file mode 100644 index 00000000000..72162054b77 --- /dev/null +++ b/Mage.Sets/src/mage/sets/worldwake/CelestialColonnade.java @@ -0,0 +1,80 @@ +/* + * 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.worldwake; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldStaticAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCosts; +import mage.abilities.effects.common.BecomesCreatureSourceEOTEffect; +import mage.abilities.effects.common.EntersBattlefieldTappedEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.VigilanceAbility; +import mage.abilities.mana.BlueManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; +import mage.game.permanent.token.Token; +import mage.sets.Worldwake; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class CelestialColonnade extends CardImpl { + + public CelestialColonnade(UUID ownerId) { + super(ownerId, "Celestial Colonnade", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Worldwake.getInstance().getId(); + this.art = "126518_typ_reg_sty_010.jpg"; + this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect())); + this.addAbility(new BlueManaAbility()); + this.addAbility(new WhiteManaAbility()); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEOTEffect(new CelestialColonnadeToken()), new ManaCosts("{3}{W}{U}"))); + } + +} + +class CelestialColonnadeToken extends Token { + + public CelestialColonnadeToken() { + super("", "4/4 white and blue Elemental creature with flying and vigilance"); + cardType.add(CardType.CREATURE); + subtype.add("Elemental"); + color.setBlue(true); + color.setWhite(true); + power = new MageInt(4); + toughness = new MageInt(4); + addAbility(FlyingAbility.getInstance()); + addAbility(VigilanceAbility.getInstance()); + } + +} diff --git a/Mage.Sets/src/mage/sets/worldwake/RagingRavine.java b/Mage.Sets/src/mage/sets/worldwake/RagingRavine.java index 4fb1f69b88c..d89f6d1df13 100644 --- a/Mage.Sets/src/mage/sets/worldwake/RagingRavine.java +++ b/Mage.Sets/src/mage/sets/worldwake/RagingRavine.java @@ -32,16 +32,18 @@ import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Zone; import mage.MageInt; -import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.common.EntersBattlefieldStaticAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCosts; import mage.abilities.effects.common.AddPlusOneCountersSourceEffect; import mage.abilities.effects.common.BecomesCreatureSourceEOTEffect; +import mage.abilities.effects.common.EntersBattlefieldTappedEffect; import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.game.permanent.token.Token; +import mage.sets.Worldwake; /** * @@ -51,7 +53,9 @@ public class RagingRavine extends CardImpl { public RagingRavine(UUID ownerId) { super(ownerId, "Raging Ravine", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Worldwake.getInstance().getId(); this.art = "126537_typ_reg_sty_010.jpg"; + this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect())); this.addAbility(new GreenManaAbility()); this.addAbility(new RedManaAbility()); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEOTEffect(new RagingRavineToken()), new ManaCosts("{2}{R}{G}"))); @@ -65,6 +69,8 @@ class RagingRavineToken extends Token { super("", "3/3 red and green Elemental creature with \"Whenever this creature attacks, put a +1/+1 counter on it.\""); cardType.add(CardType.CREATURE); subtype.add("Elemental"); + color.setRed(true); + color.setGreen(true); power = new MageInt(3); toughness = new MageInt(3); addAbility(new AttacksTriggeredAbility(new AddPlusOneCountersSourceEffect(1), false)); diff --git a/Mage.Sets/src/mage/sets/worldwake/SejiriSteppe.java b/Mage.Sets/src/mage/sets/worldwake/SejiriSteppe.java new file mode 100644 index 00000000000..e2322662438 --- /dev/null +++ b/Mage.Sets/src/mage/sets/worldwake/SejiriSteppe.java @@ -0,0 +1,62 @@ +/* + * 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.worldwake; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.TargetController; +import mage.abilities.common.EntersBattlefieldStaticAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.EntersBattlefieldTappedEffect; +import mage.abilities.effects.common.GainProtectionFromColorTargetEOTEffect; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; +import mage.choices.ChoiceColor; +import mage.sets.Worldwake; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class SejiriSteppe extends CardImpl { + + public SejiriSteppe(UUID ownerId) { + super(ownerId, "Sejiri Steppe", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Worldwake.getInstance().getId(); + this.art = "123657_typ_reg_sty_010.jpg"; + this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect())); + EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new GainProtectionFromColorTargetEOTEffect(), false); + ability.addTarget(new TargetCreaturePermanent(1, TargetController.YOU)); + ability.addChoice(new ChoiceColor()); + this.addAbility(ability); + this.addAbility(new WhiteManaAbility()); + } + +} diff --git a/Mage.Sets/src/mage/sets/worldwake/StirringWildwood.java b/Mage.Sets/src/mage/sets/worldwake/StirringWildwood.java new file mode 100644 index 00000000000..a9e8a44e799 --- /dev/null +++ b/Mage.Sets/src/mage/sets/worldwake/StirringWildwood.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.worldwake; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldStaticAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCosts; +import mage.abilities.effects.common.BecomesCreatureSourceEOTEffect; +import mage.abilities.effects.common.EntersBattlefieldTappedEffect; +import mage.abilities.keyword.ReachAbility; +import mage.abilities.mana.GreenManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; +import mage.game.permanent.token.Token; +import mage.sets.Worldwake; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class StirringWildwood extends CardImpl { + + public StirringWildwood(UUID ownerId) { + super(ownerId, "Stirring Wildwood", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Worldwake.getInstance().getId(); + this.art = "126541_typ_reg_sty_010.jpg"; + this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect())); + this.addAbility(new GreenManaAbility()); + this.addAbility(new WhiteManaAbility()); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEOTEffect(new StirringWildwoodToken()), new ManaCosts("{1}{G}{W}"))); + } + +} + +class StirringWildwoodToken extends Token { + + public StirringWildwoodToken() { + super("", "3/4 green and white Elemental creature with reach"); + cardType.add(CardType.CREATURE); + subtype.add("Elemental"); + color.setGreen(true); + color.setWhite(true); + power = new MageInt(3); + toughness = new MageInt(4); + addAbility(ReachAbility.getInstance()); + } + +} diff --git a/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java b/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java new file mode 100644 index 00000000000..5c76222f06c --- /dev/null +++ b/Mage.Sets/src/mage/sets/worldwake/StoneforgeMystic.java @@ -0,0 +1,79 @@ +/* + * 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.worldwake; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCosts; +import mage.abilities.effects.common.PlayTargetWithoutPayingManaEffect; +import mage.abilities.effects.common.SearchLibraryRevealPutInHandEffect; +import mage.cards.CardImpl; +import mage.filter.FilterCard; +import mage.sets.Worldwake; +import mage.target.common.TargetCardInHand; +import mage.target.common.TargetCardInLibrary; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class StoneforgeMystic extends CardImpl { + + private static FilterCard filter = new FilterCard("an Equipment card"); + + static { + filter.getCardType().add(CardType.ARTIFACT); + filter.getSubtype().add("Equipment"); + } + + public StoneforgeMystic(UUID ownerId) { + super(ownerId, "Stoneforge Mystic", new CardType[]{CardType.CREATURE}, "{1}{W}"); + this.expansionSetId = Worldwake.getInstance().getId(); + this.color.setWhite(true); + this.subtype.add("Kor"); + this.subtype.add("Artificer"); + this.art = "126571_typ_reg_sty_010.jpg"; + this.power = new MageInt(1); + this.toughness = new MageInt(2); + + TargetCardInLibrary target = new TargetCardInLibrary(1, 1, filter); + this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryRevealPutInHandEffect(target), true)); + + SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PlayTargetWithoutPayingManaEffect(), new ManaCosts("{1}{W}")); + ability.addCost(new TapSourceCost()); + ability.addTarget(new TargetCardInHand(0, 1, filter)); + this.addAbility(ability); + } + +} diff --git a/Mage.Sets/src/mage/sets/worldwake/TectonicEdge.java b/Mage.Sets/src/mage/sets/worldwake/TectonicEdge.java new file mode 100644 index 00000000000..a3b26405e93 --- /dev/null +++ b/Mage.Sets/src/mage/sets/worldwake/TectonicEdge.java @@ -0,0 +1,99 @@ +/* + * 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.worldwake; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.CostImpl; +import mage.abilities.costs.Costs; +import mage.abilities.costs.CostsImpl; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.mana.ColorlessManaAbility; +import mage.cards.CardImpl; +import mage.filter.common.FilterLandPermanent; +import mage.game.Game; +import mage.sets.Worldwake; +import mage.target.common.TargetNonBasicLandPermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class TectonicEdge extends CardImpl { + + public TectonicEdge(UUID ownerId) { + super(ownerId, "Tectonic Edge", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Worldwake.getInstance().getId(); + this.art = "126492_typ_reg_sty_010.jpg"; + this.addAbility(new ColorlessManaAbility()); + Costs costs = new CostsImpl(); + costs.add(new TapSourceCost()); + costs.add(new SacrificeSourceCost()); + costs.add(new TectonicEdgeCost()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), costs); + ability.addTarget(new TargetNonBasicLandPermanent()); + ability.addManaCost(new GenericManaCost(1)); + this.addAbility(ability); + } + +} + +class TectonicEdgeCost extends CostImpl { + + FilterLandPermanent filter = new FilterLandPermanent(); + + public TectonicEdgeCost() { + this.text = "Activate this ability only if an opponent controls four or more lands"; + } + + @Override + public boolean canPay(UUID playerId, Game game) { + for (UUID opponentId: game.getOpponents(playerId)) { + filter.getControllerId().clear(); + filter.getControllerId().add(opponentId); + if (game.getBattlefield().count(filter) > 3) { + return true; + } + } + return false; + } + + @Override + public boolean pay(Game game, boolean noMana) { + this.paid = true; + return paid; + } + +} diff --git a/Mage.Sets/src/mage/sets/zendikar/ArchiveTrap.java b/Mage.Sets/src/mage/sets/zendikar/ArchiveTrap.java new file mode 100644 index 00000000000..3f4626ab261 --- /dev/null +++ b/Mage.Sets/src/mage/sets/zendikar/ArchiveTrap.java @@ -0,0 +1,98 @@ +/* + * 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.zendikar; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.abilities.costs.AlternativeCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import mage.sets.Zendikar; +import mage.target.common.TargetOpponent; +import mage.watchers.Watcher; +import mage.watchers.WatcherImpl; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class ArchiveTrap extends CardImpl { + + public ArchiveTrap(UUID ownerId) { + super(ownerId, "Archive Trap", new CardType[]{CardType.INSTANT}, "{3}{U}{U}"); + this.expansionSetId = Zendikar.getInstance().getId(); + this.color.setBlue(true); + this.art = "125080_typ_reg_sty_010.jpg"; + this.getSpellAbility().addTarget(new TargetOpponent()); + this.getSpellAbility().addEffect(new PutLibraryIntoGraveTargetEffect(13)); + this.getSpellAbility().addAlternativeCost(new ArchiveTrapAlternativeCost()); + this.watchers.add(new ArchiveTrapWatcher(ownerId)); + } + +} + +class ArchiveTrapWatcher extends WatcherImpl { + + public ArchiveTrapWatcher(UUID controllerId) { + super(controllerId, "LibrarySearched"); + } + + @Override + public void watch(GameEvent event, Game game) { + if (event.getType() == EventType.LIBRARY_SEARCHED && game.getOpponents(controllerId).contains(event.getPlayerId())) + condition = true; + } + +} + +class ArchiveTrapAlternativeCost extends AlternativeCost { + + public ArchiveTrapAlternativeCost() { + super("you may pay {0} rather than pay Archive Trap's mana cost"); + this.add(new GenericManaCost(0)); + } + + @Override + public boolean isAvailable(Game game) { + Watcher watcher = game.getState().getWatchers().get("LibrarySearched"); + if (watcher != null && watcher.conditionMet()) + return true; + return false; + } + + @Override + public String getText() { + return "If an opponent searched his or her library this turn, you may pay {0} rather than pay Archive Trap's mana cost"; + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/zendikar/AridMesa.java b/Mage.Sets/src/mage/sets/zendikar/AridMesa.java index 213e499c9f4..8add05c590f 100644 --- a/Mage.Sets/src/mage/sets/zendikar/AridMesa.java +++ b/Mage.Sets/src/mage/sets/zendikar/AridMesa.java @@ -39,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.sets.Zendikar; import mage.target.common.TargetCardInLibrary; /** @@ -49,6 +50,7 @@ public class AridMesa extends CardImpl { public AridMesa(UUID ownerId) { super(ownerId, "Arid Mesa", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Zendikar.getInstance().getId(); this.art = "123565_typ_reg_sty_010.jpg"; this.addAbility(new AridMesaAbility()); } diff --git a/Mage.Sets/src/mage/sets/zendikar/BraveTheElements.java b/Mage.Sets/src/mage/sets/zendikar/BraveTheElements.java index 5088706a09f..34f4217fff2 100644 --- a/Mage.Sets/src/mage/sets/zendikar/BraveTheElements.java +++ b/Mage.Sets/src/mage/sets/zendikar/BraveTheElements.java @@ -30,7 +30,8 @@ package mage.sets.zendikar; import java.util.UUID; import mage.Constants.CardType; -import mage.abilities.effects.common.GainAbilityControlledEOTEffect; +import mage.Constants.Duration; +import mage.abilities.effects.common.GainAbilityControlledEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.choices.ChoiceColor; @@ -38,6 +39,7 @@ import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.sets.Zendikar; /** * @@ -47,6 +49,7 @@ public class BraveTheElements extends CardImpl { public BraveTheElements(UUID ownerId) { super(ownerId, "Brave the Elements", new CardType[]{CardType.INSTANT}, "{W}"); + this.expansionSetId = Zendikar.getInstance().getId(); this.color.setWhite(true); this.art = "123638_typ_reg_sty_010.jpg"; this.getSpellAbility().addChoice(new ChoiceColor()); @@ -55,13 +58,13 @@ public class BraveTheElements extends CardImpl { } -class BraveTheElementsEffect extends GainAbilityControlledEOTEffect { +class BraveTheElementsEffect extends GainAbilityControlledEffect { FilterCreaturePermanent filter1 = new FilterCreaturePermanent(); - FilterCard filter2 = new FilterCard(); + FilterCard filter2; public BraveTheElementsEffect() { - super(new ProtectionAbility(new FilterCard())); + super(new ProtectionAbility(new FilterCard()), Duration.EndOfTurn); filter1.setUseColor(true); filter1.getColor().setWhite(true); filter2 = (FilterCard)((ProtectionAbility)ability).getFilter(); @@ -76,7 +79,7 @@ class BraveTheElementsEffect extends GainAbilityControlledEOTEffect { filter1.getControllerId().clear(); filter1.getControllerId().add(source.getControllerId()); for (Permanent perm: game.getBattlefield().getActivePermanents(filter1)) { - perm.getAbilities().add(ability); + perm.addAbility(ability); } return true; } diff --git a/Mage.Sets/src/mage/sets/zendikar/BurstLightning.java b/Mage.Sets/src/mage/sets/zendikar/BurstLightning.java index b1d7ccaa515..adae31baa78 100644 --- a/Mage.Sets/src/mage/sets/zendikar/BurstLightning.java +++ b/Mage.Sets/src/mage/sets/zendikar/BurstLightning.java @@ -34,6 +34,7 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.KickerAbility; import mage.cards.CardImpl; +import mage.sets.Zendikar; import mage.target.common.TargetCreatureOrPlayer; /** @@ -44,13 +45,14 @@ public class BurstLightning extends CardImpl { public BurstLightning(UUID ownerId) { super(ownerId, "Burst Lightning", new CardType[]{CardType.INSTANT}, "{R}"); + this.expansionSetId = Zendikar.getInstance().getId(); this.color.setRed(true); this.art = "123560_typ_reg_sty_010.jpg"; this.getSpellAbility().addTarget(new TargetCreatureOrPlayer()); this.getSpellAbility().addEffect(new DamageTargetEffect(2)); KickerAbility ability = new KickerAbility(new DamageTargetEffect(4), true); - ability.getTargets().add(this.getSpellAbility().getTargets().get(0)); - ability.getCosts().add(new GenericManaCost(4)); + ability.addTarget(this.getSpellAbility().getTargets().get(0)); + ability.addManaCost(new GenericManaCost(4)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/zendikar/ConquerorsPledge.java b/Mage.Sets/src/mage/sets/zendikar/ConquerorsPledge.java index a480b224281..66d11d5c877 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ConquerorsPledge.java +++ b/Mage.Sets/src/mage/sets/zendikar/ConquerorsPledge.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.KickerAbility; import mage.cards.CardImpl; import mage.game.permanent.token.Token; +import mage.sets.Zendikar; /** * @@ -45,11 +46,12 @@ public class ConquerorsPledge extends CardImpl { public ConquerorsPledge(UUID ownerId) { super(ownerId, "Conquerors Pledge", new CardType[]{CardType.SORCERY}, "{2}{W}{W}{W}"); + this.expansionSetId = Zendikar.getInstance().getId(); this.color.setWhite(true); this.art = "123781_typ_reg_sty_010.jpg"; this.getSpellAbility().addEffect(new CreateTokenEffect(new KorSoldierToken(), 6)); KickerAbility ability = new KickerAbility(new CreateTokenEffect(new KorSoldierToken(), 12), true); - ability.getCosts().add(new GenericManaCost(6)); + ability.addManaCost(new GenericManaCost(6)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/zendikar/DayOfJudgment.java b/Mage.Sets/src/mage/sets/zendikar/DayOfJudgment.java new file mode 100644 index 00000000000..ac72c0c38ad --- /dev/null +++ b/Mage.Sets/src/mage/sets/zendikar/DayOfJudgment.java @@ -0,0 +1,52 @@ +/* + * 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.zendikar; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.abilities.effects.common.DestroyAllEffect; +import mage.cards.CardImpl; +import mage.filter.common.FilterCreaturePermanent; +import mage.sets.Zendikar; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class DayOfJudgment extends CardImpl { + + public DayOfJudgment(UUID ownerId) { + super(ownerId, "Day of Judgment", new CardType[]{CardType.SORCERY}, "{2}{W}{W}"); + this.expansionSetId = Zendikar.getInstance().getId(); + this.color.setWhite(true); + this.art = "123645_typ_reg_sty_010.jpg"; + this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterCreaturePermanent("creatures"))); + } + +} diff --git a/Mage.Sets/src/mage/sets/zendikar/EmeriaAngel.java b/Mage.Sets/src/mage/sets/zendikar/EmeriaAngel.java index 2537f3cca48..49ab125db9b 100644 --- a/Mage.Sets/src/mage/sets/zendikar/EmeriaAngel.java +++ b/Mage.Sets/src/mage/sets/zendikar/EmeriaAngel.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.game.permanent.token.Token; +import mage.sets.Zendikar; /** * @@ -45,6 +46,7 @@ public class EmeriaAngel extends CardImpl { public EmeriaAngel(UUID ownerId) { super(ownerId, "Emeria Angel", new CardType[]{CardType.CREATURE}, "{2}{W}{W}"); + this.expansionSetId = Zendikar.getInstance().getId(); this.subtype.add("Angel"); this.color.setWhite(true); this.art = "123678_typ_reg_sty_010.jpg"; diff --git a/Mage.Sets/src/mage/sets/zendikar/GoblinRuinblaster.java b/Mage.Sets/src/mage/sets/zendikar/GoblinRuinblaster.java index c13911259de..9ae4fa5d12f 100644 --- a/Mage.Sets/src/mage/sets/zendikar/GoblinRuinblaster.java +++ b/Mage.Sets/src/mage/sets/zendikar/GoblinRuinblaster.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.KickerAbility; import mage.cards.CardImpl; +import mage.sets.Zendikar; import mage.target.common.TargetNonBasicLandPermanent; /** @@ -49,6 +50,7 @@ public class GoblinRuinblaster extends CardImpl { public GoblinRuinblaster(UUID ownerId) { super(ownerId, "Goblin Ruinblaster", new CardType[]{CardType.CREATURE}, "{2}{R}"); + this.expansionSetId = Zendikar.getInstance().getId(); this.color.setRed(true); this.subtype.add("Goblin"); this.subtype.add("Shaman"); @@ -58,7 +60,7 @@ public class GoblinRuinblaster extends CardImpl { this.addAbility(HasteAbility.getInstance()); KickerAbility ability = new KickerAbility(new EntersBattlefieldEffect(new DestroyTargetEffect()), false); ability.getTargets().add(new TargetNonBasicLandPermanent()); - ability.getCosts().add(new ColoredManaCost(ColoredManaSymbol.R)); + ability.addManaCost(new ColoredManaCost(ColoredManaSymbol.R)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/zendikar/KabiraCrossroads.java b/Mage.Sets/src/mage/sets/zendikar/KabiraCrossroads.java new file mode 100644 index 00000000000..4ab7451bba7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/zendikar/KabiraCrossroads.java @@ -0,0 +1,55 @@ +/* + * 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.zendikar; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.abilities.common.EntersBattlefieldStaticAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.EntersBattlefieldTappedEffect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; +import mage.sets.Zendikar; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class KabiraCrossroads extends CardImpl { + + public KabiraCrossroads(UUID ownerId) { + super(ownerId, "Kabira Crossroads", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Zendikar.getInstance().getId(); + this.art = "126610_typ_reg_sty_010.jpg"; + this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(2), false)); + this.addAbility(new WhiteManaAbility()); + } +} diff --git a/Mage.Sets/src/mage/sets/zendikar/LotusCobra.java b/Mage.Sets/src/mage/sets/zendikar/LotusCobra.java new file mode 100644 index 00000000000..8a3f161c422 --- /dev/null +++ b/Mage.Sets/src/mage/sets/zendikar/LotusCobra.java @@ -0,0 +1,60 @@ +/* + * 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.zendikar; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.MageInt; +import mage.abilities.common.LandfallAbility; +import mage.abilities.effects.common.AddManaOfAnyColorEffect; +import mage.cards.CardImpl; +import mage.choices.ChoiceColor; +import mage.sets.Zendikar; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class LotusCobra extends CardImpl { + + public LotusCobra(UUID ownerId) { + super(ownerId, "Lotus Cobra", new CardType[]{CardType.CREATURE}, "{1}{G}"); + this.expansionSetId = Zendikar.getInstance().getId(); + this.subtype.add("Snake"); + this.color.setGreen(true); + this.art = "123641_typ_reg_sty_010.jpg"; + this.power = new MageInt(2); + this.toughness = new MageInt(1); + + LandfallAbility ability = new LandfallAbility(new AddManaOfAnyColorEffect(1), false); + ability.addChoice(new ChoiceColor()); + this.addAbility(ability); + } + +} diff --git a/Mage.Sets/src/mage/sets/zendikar/MarshFlats.java b/Mage.Sets/src/mage/sets/zendikar/MarshFlats.java index d90707d4769..33be2d1bd08 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MarshFlats.java +++ b/Mage.Sets/src/mage/sets/zendikar/MarshFlats.java @@ -39,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.sets.Zendikar; import mage.target.common.TargetCardInLibrary; /** @@ -49,6 +50,7 @@ public class MarshFlats extends CardImpl { public MarshFlats(UUID ownerId) { super(ownerId, "Marsh Flats", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Zendikar.getInstance().getId(); this.art = "123707_typ_reg_sty_010.jpg"; this.addAbility(new MarshFlatsAbility()); } diff --git a/Mage.Sets/src/mage/sets/zendikar/MistyRainforest.java b/Mage.Sets/src/mage/sets/zendikar/MistyRainforest.java index af411dc3c8d..0d0a0e06360 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MistyRainforest.java +++ b/Mage.Sets/src/mage/sets/zendikar/MistyRainforest.java @@ -39,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.sets.Zendikar; import mage.target.common.TargetCardInLibrary; /** @@ -49,6 +50,7 @@ public class MistyRainforest extends CardImpl { public MistyRainforest(UUID ownerId) { super(ownerId, "Misty Rainforest", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Zendikar.getInstance().getId(); this.art = "123689_typ_reg_sty_010.jpg"; this.addAbility(new MistyRainforestAbility()); } diff --git a/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java b/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java index 53dca04be2f..9c188d7cf10 100644 --- a/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java +++ b/Mage.Sets/src/mage/sets/zendikar/OranRiefTheVastwood.java @@ -43,6 +43,7 @@ import mage.counters.PlusOneCounter; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.sets.Zendikar; /** * @@ -52,6 +53,7 @@ public class OranRiefTheVastwood extends CardImpl { public OranRiefTheVastwood(UUID ownerId) { super(ownerId, "Oran-Rief, the Vastwood", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Zendikar.getInstance().getId(); this.art = "123692_typ_reg_sty_010.jpg"; this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect())); this.addAbility(new GreenManaAbility()); @@ -66,6 +68,7 @@ class OranRiefTheVastwoodEffect extends OneShotEffect { super(Outcome.BoostCreature); } + @Override public boolean apply(Game game) { FilterPermanent filter = new FilterPermanent(); filter.getCardType().add(CardType.CREATURE); diff --git a/Mage.Sets/src/mage/sets/zendikar/RampagingBaloths.java b/Mage.Sets/src/mage/sets/zendikar/RampagingBaloths.java new file mode 100644 index 00000000000..4489238c102 --- /dev/null +++ b/Mage.Sets/src/mage/sets/zendikar/RampagingBaloths.java @@ -0,0 +1,70 @@ +/* + * 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.zendikar; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.MageInt; +import mage.abilities.common.LandfallAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.game.permanent.token.Token; +import mage.sets.Zendikar; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class RampagingBaloths extends CardImpl { + + public RampagingBaloths(UUID ownerId) { + super(ownerId, "Rampaging Baloths", new CardType[]{CardType.CREATURE}, "{4}{G}{G}"); + this.expansionSetId = Zendikar.getInstance().getId(); + this.subtype.add("Beast"); + this.color.setGreen(true); + this.art = "123726_typ_reg_sty_010.jpg"; + this.power = new MageInt(6); + this.toughness = new MageInt(6); + this.addAbility(TrampleAbility.getInstance()); + this.addAbility(new LandfallAbility(new CreateTokenEffect(new RampagingBalothsToken()), true)); + } + +} + +class RampagingBalothsToken extends Token { + + public RampagingBalothsToken() { + super("Beast", "4/4 green Beast creature token"); + cardType.add(CardType.CREATURE); + subtype.add("Beast"); + power = new MageInt(4); + toughness = new MageInt(4); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/zendikar/ScaldingTarn.java b/Mage.Sets/src/mage/sets/zendikar/ScaldingTarn.java new file mode 100644 index 00000000000..77032452428 --- /dev/null +++ b/Mage.Sets/src/mage/sets/zendikar/ScaldingTarn.java @@ -0,0 +1,74 @@ +/* + * 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.zendikar; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Zone; +import mage.abilities.ActivatedAbilityImpl; +import mage.abilities.costs.common.PayLifeCost; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.SearchLibraryPutInPlayEffect; +import mage.cards.CardImpl; +import mage.filter.FilterCard; +import mage.sets.Zendikar; +import mage.target.common.TargetCardInLibrary; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class ScaldingTarn extends CardImpl { + + public ScaldingTarn(UUID ownerId) { + super(ownerId, "Scalding Tarn", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Zendikar.getInstance().getId(); + this.art = "123672_typ_reg_sty_010.jpg"; + this.addAbility(new ScaldingTarnAbility()); + } + +} + +class ScaldingTarnAbility extends ActivatedAbilityImpl { + + public ScaldingTarnAbility() { + super(Zone.BATTLEFIELD, null); + addCost(new TapSourceCost()); + addCost(new PayLifeCost(1)); + addCost(new SacrificeSourceCost()); + FilterCard filter = new FilterCard("Island or Mountain"); + filter.getName().add("Island"); + filter.getName().add("Mountain"); + TargetCardInLibrary target = new TargetCardInLibrary(filter); + addEffect(new SearchLibraryPutInPlayEffect(target, false, Outcome.PutLandInPlay)); + } + +} diff --git a/Mage.Sets/src/mage/sets/zendikar/ScuteMob.java b/Mage.Sets/src/mage/sets/zendikar/ScuteMob.java index 30831f7e895..5a235c7ff77 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ScuteMob.java +++ b/Mage.Sets/src/mage/sets/zendikar/ScuteMob.java @@ -39,7 +39,7 @@ import mage.filter.common.FilterLandPermanent; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; -import mage.game.permanent.Permanent; +import mage.sets.Zendikar; /** * @@ -49,6 +49,7 @@ public class ScuteMob extends CardImpl { public ScuteMob(UUID ownerId) { super(ownerId, "Scute Mob", new CardType[]{CardType.CREATURE}, "{G}"); + this.expansionSetId = Zendikar.getInstance().getId(); this.color.setGreen(true); this.subtype.add("Insect"); this.art = "123606_typ_reg_sty_010.jpg"; @@ -68,18 +69,19 @@ class ScuteMobAbility extends TriggeredAbilityImpl { } @Override - public void handleEvent(GameEvent event, Game game) { - if (event.getType() == EventType.UPKEEP_STEP_PRE) { - Permanent permanent = game.getPermanent(this.sourceId); - if (game.getActivePlayerId().equals(permanent.getControllerId())) { - filter.getControllerId().clear(); - filter.getControllerId().add(permanent.getControllerId()); - if (game.getBattlefield().count(filter) >= 5) - trigger(game, permanent.getControllerId()); - } + public void checkTrigger(GameEvent event, Game game) { + if (event.getType() == EventType.UPKEEP_STEP_PRE && event.getPlayerId().equals(this.controllerId)) { + trigger(game, this.controllerId); } } + @Override + public boolean checkIfClause(Game game) { + filter.getControllerId().clear(); + filter.getControllerId().add(this.controllerId); + return game.getBattlefield().count(filter) >= 5; + } + @Override public String getRule() { return "At the beginning of your upkeep, if you control five or more lands, put four +1/+1 counters on Scute Mob."; diff --git a/Mage.Sets/src/mage/sets/zendikar/SteppeLynx.java b/Mage.Sets/src/mage/sets/zendikar/SteppeLynx.java index 31fe4cf5257..72e8f1a3311 100644 --- a/Mage.Sets/src/mage/sets/zendikar/SteppeLynx.java +++ b/Mage.Sets/src/mage/sets/zendikar/SteppeLynx.java @@ -30,10 +30,12 @@ package mage.sets.zendikar; import java.util.UUID; import mage.Constants.CardType; +import mage.Constants.Duration; import mage.MageInt; import mage.abilities.common.LandfallAbility; -import mage.abilities.effects.common.BoostSourceEOTEffect; +import mage.abilities.effects.common.BoostSourceEffect; import mage.cards.CardImpl; +import mage.sets.Zendikar; /** * @@ -43,13 +45,14 @@ public class SteppeLynx extends CardImpl { public SteppeLynx(UUID ownerId) { super(ownerId, "Steppe Lynx", new CardType[]{CardType.CREATURE}, "{W}"); + this.expansionSetId = Zendikar.getInstance().getId(); this.subtype.add("Cat"); this.color.setWhite(true); this.art = "123546_typ_reg_sty_010.jpg"; this.power = new MageInt(0); this.toughness = new MageInt(1); - this.addAbility(new LandfallAbility(new BoostSourceEOTEffect(2, 2), false)); + this.addAbility(new LandfallAbility(new BoostSourceEffect(2, 2, Duration.EndOfTurn), false)); } } diff --git a/Mage.Sets/src/mage/sets/zendikar/SunspringExpedition.java b/Mage.Sets/src/mage/sets/zendikar/SunspringExpedition.java new file mode 100644 index 00000000000..f6c15333afa --- /dev/null +++ b/Mage.Sets/src/mage/sets/zendikar/SunspringExpedition.java @@ -0,0 +1,64 @@ +/* + * 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.zendikar; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Zone; +import mage.abilities.ActivatedAbility; +import mage.abilities.ActivatedAbilityImpl; +import mage.abilities.common.LandfallAbility; +import mage.abilities.costs.common.RemoveCountersSourceCost; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.effects.common.AddCountersSourceEffect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.cards.CardImpl; +import mage.sets.Zendikar; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class SunspringExpedition extends CardImpl { + + public SunspringExpedition(UUID ownerId) { + super(ownerId, "Sunspring Expedition", new CardType[]{CardType.ENCHANTMENT}, "{W}"); + this.expansionSetId = Zendikar.getInstance().getId(); + this.color.setWhite(true); + this.art = "123558_typ_reg_sty_010.jpg"; + + this.addAbility(new LandfallAbility(new AddCountersSourceEffect("quest", 1), true)); + ActivatedAbility ability = new ActivatedAbilityImpl(Zone.BATTLEFIELD, new GainLifeEffect(8)) {}; + ability.addCost(new RemoveCountersSourceCost("quest", 3)); + ability.addCost(new SacrificeSourceCost()); + this.addAbility(ability); + } + + +} diff --git a/Mage.Sets/src/mage/sets/zendikar/TeeteringPeaks.java b/Mage.Sets/src/mage/sets/zendikar/TeeteringPeaks.java new file mode 100644 index 00000000000..4665cf6951b --- /dev/null +++ b/Mage.Sets/src/mage/sets/zendikar/TeeteringPeaks.java @@ -0,0 +1,61 @@ +/* + * 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.zendikar; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldStaticAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.BoostTargetEffect; +import mage.abilities.effects.common.EntersBattlefieldTappedEffect; +import mage.abilities.mana.RedManaAbility; +import mage.cards.CardImpl; +import mage.sets.Zendikar; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class TeeteringPeaks extends CardImpl { + + public TeeteringPeaks(UUID ownerId) { + super(ownerId, "Teetering Peaks", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Zendikar.getInstance().getId(); + this.art = "123557_typ_reg_sty_010.jpg"; + this.addAbility(new EntersBattlefieldStaticAbility(new EntersBattlefieldTappedEffect())); + Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(2, 0, Duration.EndOfTurn), false); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + this.addAbility(new RedManaAbility()); + } + +} diff --git a/Mage.Sets/src/mage/sets/zendikar/VerdantCatacombs.java b/Mage.Sets/src/mage/sets/zendikar/VerdantCatacombs.java index efc3babc23d..f796d10ec7f 100644 --- a/Mage.Sets/src/mage/sets/zendikar/VerdantCatacombs.java +++ b/Mage.Sets/src/mage/sets/zendikar/VerdantCatacombs.java @@ -39,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.filter.FilterCard; +import mage.sets.Zendikar; import mage.target.common.TargetCardInLibrary; /** @@ -49,6 +50,7 @@ public class VerdantCatacombs extends CardImpl { public VerdantCatacombs(UUID ownerId) { super(ownerId, "Verdant Catacombs", new CardType[]{CardType.LAND}, null); + this.expansionSetId = Zendikar.getInstance().getId(); this.art = "123743_typ_reg_sty_010.jpg"; this.addAbility(new VerdantCatacombsAbility()); }