From 3fb5a60202fb45047123fd0be34c4f167fbb0a39 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 16 Sep 2016 00:41:03 +0200 Subject: [PATCH] [KLD] Added 12 green cards. --- .../mage/sets/kaladesh/ArborbackStomper.java | 66 ++++++++++ .../sets/kaladesh/ArchitectOfTheUntamed.java | 86 ++++++++++++ .../mage/sets/kaladesh/ArmorcraftJudge.java | 74 +++++++++++ .../mage/sets/kaladesh/AttuneWithAether.java | 65 +++++++++ .../mage/sets/kaladesh/BristlingHydra.java | 81 ++++++++++++ .../mage/sets/kaladesh/DubiousChallenge.java | 124 ++++++++++++++++++ .../mage/sets/kaladesh/HighspireArtisan.java | 66 ++++++++++ .../mage/sets/kaladesh/LargerThanLife.java | 69 ++++++++++ .../src/mage/sets/kaladesh/LongtuskCub.java | 71 ++++++++++ .../kaladesh/OviyaPashiriSageLifecrafter.java | 99 ++++++++++++++ .../src/mage/sets/kaladesh/ThrivingRhino.java | 72 ++++++++++ .../src/mage/sets/kaladesh/WildestDreams.java | 78 +++++++++++ .../mage/sets/ravnica/VinelasherKudzu.java | 33 +---- 13 files changed, 958 insertions(+), 26 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/kaladesh/ArborbackStomper.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/ArchitectOfTheUntamed.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/ArmorcraftJudge.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/AttuneWithAether.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/BristlingHydra.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/DubiousChallenge.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/HighspireArtisan.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/LargerThanLife.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/LongtuskCub.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/OviyaPashiriSageLifecrafter.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/ThrivingRhino.java create mode 100644 Mage.Sets/src/mage/sets/kaladesh/WildestDreams.java diff --git a/Mage.Sets/src/mage/sets/kaladesh/ArborbackStomper.java b/Mage.Sets/src/mage/sets/kaladesh/ArborbackStomper.java new file mode 100644 index 0000000000..f361077eb3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/ArborbackStomper.java @@ -0,0 +1,66 @@ +/* + * 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.kaladesh; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author LevelX2 + */ +public class ArborbackStomper extends CardImpl { + + public ArborbackStomper(UUID ownerId) { + super(ownerId, 142, "Arborback Stomper", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{G}{G}"); + this.expansionSetCode = "KLD"; + this.subtype.add("Beast"); + this.power = new MageInt(5); + this.toughness = new MageInt(4); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + // When Arborback Stomper enters the battlefield, you gain 5 life. + this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(5))); + } + + public ArborbackStomper(final ArborbackStomper card) { + super(card); + } + + @Override + public ArborbackStomper copy() { + return new ArborbackStomper(this); + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/ArchitectOfTheUntamed.java b/Mage.Sets/src/mage/sets/kaladesh/ArchitectOfTheUntamed.java new file mode 100644 index 0000000000..47a8ba62cd --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/ArchitectOfTheUntamed.java @@ -0,0 +1,86 @@ +/* + * 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.kaladesh; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.PayEnergyCost; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterControlledLandPermanent; +import mage.game.permanent.token.Token; + +/** + * + * @author LevelX2 + */ +public class ArchitectOfTheUntamed extends CardImpl { + + public ArchitectOfTheUntamed(UUID ownerId) { + super(ownerId, 143, "Architect of the Untamed", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{G}"); + this.expansionSetCode = "KLD"; + this.subtype.add("Elf"); + this.subtype.add("Artificer"); + this.subtype.add("Druid"); + this.power = new MageInt(2); + this.toughness = new MageInt(3); + + // Whenever a land enters the battlefield under your control, you get {E}. + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GetEnergyCountersControllerEffect(1), new FilterControlledLandPermanent("a land"), false, null, true)); + + // Pay {E}{E}{E}{E}{E}{E}{E}{E}: Create a 6/6 colorless Beast artifact creature token. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ArchitectOfTheUntamedBeastToken(), 1), new PayEnergyCost(8))); + } + + public ArchitectOfTheUntamed(final ArchitectOfTheUntamed card) { + super(card); + } + + @Override + public ArchitectOfTheUntamed copy() { + return new ArchitectOfTheUntamed(this); + } +} + +class ArchitectOfTheUntamedBeastToken extends Token { + + ArchitectOfTheUntamedBeastToken() { + super("Beast", "6/6 colorless Beast artifact creature token"); + cardType.add(CardType.ARTIFACT); + cardType.add(CardType.CREATURE); + subtype.add("Beast"); + power = new MageInt(6); + toughness = new MageInt(6); + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/ArmorcraftJudge.java b/Mage.Sets/src/mage/sets/kaladesh/ArmorcraftJudge.java new file mode 100644 index 0000000000..c92e3ff8f3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/ArmorcraftJudge.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.kaladesh; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.counters.CounterType; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.permanent.CounterPredicate; + +/** + * + * @author LevelX2 + */ +public class ArmorcraftJudge extends CardImpl { + + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature you control with a +1/+1 counter on it"); + + static { + filter.add(new CounterPredicate(CounterType.P1P1)); + } + + public ArmorcraftJudge(UUID ownerId) { + super(ownerId, 144, "Armorcraft Judge", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{G}"); + this.expansionSetCode = "KLD"; + this.subtype.add("Elf"); + this.subtype.add("Artificer"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // When Armorcraft Judge enters the battlefield, draw a card for each creature you control with a +1/+1 counter on it. + this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(new PermanentsOnBattlefieldCount(filter)))); + } + + public ArmorcraftJudge(final ArmorcraftJudge card) { + super(card); + } + + @Override + public ArmorcraftJudge copy() { + return new ArmorcraftJudge(this); + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/AttuneWithAether.java b/Mage.Sets/src/mage/sets/kaladesh/AttuneWithAether.java new file mode 100644 index 0000000000..c8ca7bae23 --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/AttuneWithAether.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.kaladesh; + +import java.util.UUID; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect; +import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterBasicLandCard; +import mage.target.common.TargetCardInLibrary; + +/** + * + * @author LevelX2 + */ +public class AttuneWithAether extends CardImpl { + + public AttuneWithAether(UUID ownerId) { + super(ownerId, 145, "Attune with Aether", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{G}"); + this.expansionSetCode = "KLD"; + + // Search you library for a basic land card, reveal it, put it into your hand, then shuffle your library. You get {E}{E}. + Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(1, 1, new FilterBasicLandCard()), true); + effect.setText("Search you library for a basic land card, reveal it, put it into your hand, then shuffle your library"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new GetEnergyCountersControllerEffect(2)); + } + + public AttuneWithAether(final AttuneWithAether card) { + super(card); + } + + @Override + public AttuneWithAether copy() { + return new AttuneWithAether(this); + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/BristlingHydra.java b/Mage.Sets/src/mage/sets/kaladesh/BristlingHydra.java new file mode 100644 index 0000000000..420e79cde7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/BristlingHydra.java @@ -0,0 +1,81 @@ +/* + * 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.kaladesh; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.PayEnergyCost; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect; +import mage.abilities.keyword.HexproofAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.counters.CounterType; + +/** + * + * @author LevelX2 + */ +public class BristlingHydra extends CardImpl { + + public BristlingHydra(UUID ownerId) { + super(ownerId, 147, "Bristling Hydra", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); + this.expansionSetCode = "KLD"; + this.subtype.add("Hydra"); + this.power = new MageInt(4); + this.toughness = new MageInt(3); + + // When Bristling Hydra enters the battlefield, you get {E}{E}{E}. + this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(3))); + + // Pay {E}{E}{E}: Put a +1/+1 count on Bristling Hydra. It gains hexproof until end of turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), + new PayEnergyCost(3)); + Effect effect = new GainAbilitySourceEffect(HexproofAbility.getInstance(), Duration.EndOfTurn); + effect.setText("It gains hexproof until end of turn"); + ability.addEffect(effect); + this.addAbility(ability); + } + + public BristlingHydra(final BristlingHydra card) { + super(card); + } + + @Override + public BristlingHydra copy() { + return new BristlingHydra(this); + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/DubiousChallenge.java b/Mage.Sets/src/mage/sets/kaladesh/DubiousChallenge.java new file mode 100644 index 0000000000..16d8c0a7bf --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/DubiousChallenge.java @@ -0,0 +1,124 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.kaladesh; + +import java.util.UUID; +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.Cards; +import mage.cards.CardsImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterCreatureCard; +import mage.game.Game; +import mage.players.Player; +import mage.target.TargetCard; +import mage.target.common.TargetOpponent; + +/** + * + * @author LevelX2 + */ +public class DubiousChallenge extends CardImpl { + + public DubiousChallenge(UUID ownerId) { + super(ownerId, 152, "Dubious Challenge", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{3}{G}"); + this.expansionSetCode = "KLD"; + + // Look at the top ten cards of your library, exile up to two creature cards from among them, then shuffle your library. Target opponent may choose one of the exiled cards and put it onto the battlefield under his or her control. Put the rest onto the battlefield under your control. + getSpellAbility().addEffect(new DubiousChallengeEffect()); + getSpellAbility().addTarget(new TargetOpponent()); + } + + public DubiousChallenge(final DubiousChallenge card) { + super(card); + } + + @Override + public DubiousChallenge copy() { + return new DubiousChallenge(this); + } +} + +class DubiousChallengeEffect extends OneShotEffect { + + public DubiousChallengeEffect() { + super(Outcome.Benefit); + this.staticText = "Look at the top ten cards of your library, exile up to two creature cards from among them, then shuffle your library. Target opponent may choose one of the exiled cards and put it onto the battlefield under his or her control. Put the rest onto the battlefield under your control"; + } + + public DubiousChallengeEffect(final DubiousChallengeEffect effect) { + super(effect); + } + + @Override + public DubiousChallengeEffect copy() { + return new DubiousChallengeEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + MageObject sourceObject = source.getSourceObject(game); + if (controller != null && sourceObject != null) { + Cards topCards = new CardsImpl(); + topCards.addAll(controller.getLibrary().getTopCards(game, 10)); + controller.lookAtCards(sourceObject.getIdName(), topCards, game); + TargetCard targetCreatures = new TargetCard(0, 2, Zone.LIBRARY, new FilterCreatureCard()); + controller.choose(outcome, topCards, targetCreatures, game); + Cards exiledCards = new CardsImpl(targetCreatures.getTargets()); + if (!exiledCards.isEmpty()) { + controller.moveCards(exiledCards, Zone.EXILED, source, game); + controller.shuffleLibrary(source, game); + Player opponent = game.getPlayer(getTargetPointer().getFirst(game, source)); + if (opponent != null) { + TargetCard targetOpponentCreature = new TargetCard(0, 1, Zone.EXILED, new FilterCreatureCard()); + if (opponent.choose(outcome, exiledCards, targetOpponentCreature, game)) { + Card card = game.getCard(targetOpponentCreature.getFirstTarget()); + if (card != null) { + opponent.moveCards(card, Zone.BATTLEFIELD, source, game); + exiledCards.remove(card); + } + } + if (!exiledCards.isEmpty()) { + controller.moveCards(exiledCards, Zone.BATTLEFIELD, source, game); + } + } + } else { + controller.shuffleLibrary(source, game); + } + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/HighspireArtisan.java b/Mage.Sets/src/mage/sets/kaladesh/HighspireArtisan.java new file mode 100644 index 0000000000..38c74b2d91 --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/HighspireArtisan.java @@ -0,0 +1,66 @@ +/* + * 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.kaladesh; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.keyword.ReachAbility; +import mage.abilities.keyword.FabricateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author LevelX2 + */ +public class HighspireArtisan extends CardImpl { + + public HighspireArtisan(UUID ownerId) { + super(ownerId, 157, "Highspire Artisan", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{G}"); + this.expansionSetCode = "KLD"; + this.subtype.add("Elf"); + this.subtype.add("Artificer"); + this.power = new MageInt(0); + this.toughness = new MageInt(3); + + // Reach + this.addAbility(ReachAbility.getInstance()); + // Fabricate 1 + this.addAbility(new FabricateAbility(1)); + } + + public HighspireArtisan(final HighspireArtisan card) { + super(card); + } + + @Override + public HighspireArtisan copy() { + return new HighspireArtisan(this); + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/LargerThanLife.java b/Mage.Sets/src/mage/sets/kaladesh/LargerThanLife.java new file mode 100644 index 0000000000..6bce401d54 --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/LargerThanLife.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.kaladesh; + +import java.util.UUID; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author LevelX2 + */ +public class LargerThanLife extends CardImpl { + + public LargerThanLife(UUID ownerId) { + super(ownerId, 160, "Larger Than Life", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{1}{G}"); + this.expansionSetCode = "KLD"; + + // Target creature gets +4/+4 and gains trample until end of turn. + Effect effect = new BoostTargetEffect(4, 4, Duration.EndOfTurn); + effect.setText("Target creature gets +4/+4"); + this.getSpellAbility().addEffect(effect); + effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn); + effect.setText("and gains trample until end of turn"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + } + + public LargerThanLife(final LargerThanLife card) { + super(card); + } + + @Override + public LargerThanLife copy() { + return new LargerThanLife(this); + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/LongtuskCub.java b/Mage.Sets/src/mage/sets/kaladesh/LongtuskCub.java new file mode 100644 index 0000000000..608a3a3d0a --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/LongtuskCub.java @@ -0,0 +1,71 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.kaladesh; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.PayEnergyCost; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.counters.CounterType; + +/** + * + * @author LevelX2 + */ +public class LongtuskCub extends CardImpl { + + public LongtuskCub(UUID ownerId) { + super(ownerId, 161, "Longtusk Cub", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{G}"); + this.expansionSetCode = "KLD"; + this.subtype.add("Cat"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Whenever Longtusk Cub deals combat damage to a player, you get {E}{E}. + this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new GetEnergyCountersControllerEffect(2), false)); + + // Pay {E}{E}: Put a +1/+1 counter on Longtusk Cub. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new PayEnergyCost(2))); + } + + public LongtuskCub(final LongtuskCub card) { + super(card); + } + + @Override + public LongtuskCub copy() { + return new LongtuskCub(this); + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/OviyaPashiriSageLifecrafter.java b/Mage.Sets/src/mage/sets/kaladesh/OviyaPashiriSageLifecrafter.java new file mode 100644 index 0000000000..8f478e85e1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/OviyaPashiriSageLifecrafter.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.kaladesh; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.game.permanent.token.ServoToken; +import mage.game.permanent.token.Token; + +/** + * + * @author LevelX2 + */ +public class OviyaPashiriSageLifecrafter extends CardImpl { + + public OviyaPashiriSageLifecrafter(UUID ownerId) { + super(ownerId, 165, "Oviya Pashiri, Sage Lifecrafter", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{G}"); + this.expansionSetCode = "KLD"; + this.supertype.add("Legendary"); + this.subtype.add("Human"); + this.subtype.add("Artificer"); + this.power = new MageInt(1); + this.toughness = new MageInt(2); + + // {2}{G}, {T}: Create a 1/1 colorless Servo artifact creature token. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ServoToken(), 1), new ManaCostsImpl("{2}{G}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + // {4}{G}, {T}: Create an X/X colorless Construct artifact creature token, where X is the number of creature you control. + ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new OviyaPashiriSageLifecrafterToken()), new ManaCostsImpl("{4}{G}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + } + + public OviyaPashiriSageLifecrafter(final OviyaPashiriSageLifecrafter card) { + super(card); + } + + @Override + public OviyaPashiriSageLifecrafter copy() { + return new OviyaPashiriSageLifecrafter(this); + } +} + +class OviyaPashiriSageLifecrafterToken extends Token { + + final static FilterControlledCreaturePermanent filterCreature = new FilterControlledCreaturePermanent("creature you control"); + + OviyaPashiriSageLifecrafterToken() { + super("Construct", "an X/X colorless Construct artifact creature token, where X is the number of creature you control"); + cardType.add(CardType.ARTIFACT); + cardType.add(CardType.CREATURE); + subtype.add("Construct"); + power = new MageInt(0); + toughness = new MageInt(0); + DynamicValue controlledCreatures = new PermanentsOnBattlefieldCount(filterCreature); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(controlledCreatures, controlledCreatures, Duration.WhileOnBattlefield))); + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/ThrivingRhino.java b/Mage.Sets/src/mage/sets/kaladesh/ThrivingRhino.java new file mode 100644 index 0000000000..02fe04c912 --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/ThrivingRhino.java @@ -0,0 +1,72 @@ +/* + * 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.kaladesh; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.costs.common.PayEnergyCost; +import mage.abilities.effects.common.DoIfCostPaid; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.counters.CounterType; + +/** + * + * @author LevelX2 + */ +public class ThrivingRhino extends CardImpl { + + public ThrivingRhino(UUID ownerId) { + super(ownerId, 171, "Thriving Rhino", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{G}"); + this.expansionSetCode = "KLD"; + this.subtype.add("Rhino"); + this.power = new MageInt(2); + this.toughness = new MageInt(3); + + // When Thriving Rhino enters the battlefield, you get {E}{E}. + this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2))); + + // Whenever Thriving Rhino attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it. + this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new PayEnergyCost(2)), false)); + + } + + public ThrivingRhino(final ThrivingRhino card) { + super(card); + } + + @Override + public ThrivingRhino copy() { + return new ThrivingRhino(this); + } +} diff --git a/Mage.Sets/src/mage/sets/kaladesh/WildestDreams.java b/Mage.Sets/src/mage/sets/kaladesh/WildestDreams.java new file mode 100644 index 0000000000..c08bc410f6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/kaladesh/WildestDreams.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.kaladesh; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.dynamicvalue.common.GetXValue; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.ExileSpellEffect; +import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.FilterCard; +import mage.game.Game; +import mage.target.Target; +import mage.target.common.TargetCardInYourGraveyard; + +/** + * + * @author LevelX2 + */ +public class WildestDreams extends CardImpl { + + public WildestDreams(UUID ownerId) { + super(ownerId, 174, "Wildest Dreams", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{X}{X}{G}"); + this.expansionSetCode = "KLD"; + + // Return X target cards from your graveyard to your hand. + // Exile Wildest Dreams. + Effect effect = new ReturnFromGraveyardToHandTargetEffect(); + effect.setText("Return X target cards from your graveyard to your hand"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(ExileSpellEffect.getInstance()); + + } + + @Override + public void adjustTargets(Ability ability, Game game) { + int xValue = new GetXValue().calculate(game, ability, null); + Target target = new TargetCardInYourGraveyard(xValue, new FilterCard("card from your graveyard")); + ability.addTarget(target); + } + + public WildestDreams(final WildestDreams card) { + super(card); + } + + @Override + public WildestDreams copy() { + return new WildestDreams(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ravnica/VinelasherKudzu.java b/Mage.Sets/src/mage/sets/ravnica/VinelasherKudzu.java index 9e746909c8..ffbe09fa12 100644 --- a/Mage.Sets/src/mage/sets/ravnica/VinelasherKudzu.java +++ b/Mage.Sets/src/mage/sets/ravnica/VinelasherKudzu.java @@ -28,14 +28,15 @@ package mage.sets.ravnica; import java.util.UUID; - -import mage.constants.CardType; -import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.common.LandfallAbility; +import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.counters.CounterType; +import mage.filter.common.FilterControlledLandPermanent; /** * @@ -52,7 +53,8 @@ public class VinelasherKudzu extends CardImpl { this.toughness = new MageInt(1); // Whenever a land enters the battlefield under your control, put a +1/+1 counter on Vinelasher Kudzu. - this.addAbility(new VinelasherKudzuAbility()); + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, + new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new FilterControlledLandPermanent("a land"), false, null, true)); } public VinelasherKudzu(final VinelasherKudzu card) { @@ -64,24 +66,3 @@ public class VinelasherKudzu extends CardImpl { return new VinelasherKudzu(this); } } - -class VinelasherKudzuAbility extends LandfallAbility { - - VinelasherKudzuAbility() { - super(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false); - } - - public VinelasherKudzuAbility(final VinelasherKudzuAbility ability) { - super(ability); - } - - @Override - public String getRule() { - return "Whenever a land enters the battlefield under your control, put a +1/+1 counter on {this}."; - } - - @Override - public LandfallAbility copy() { - return new VinelasherKudzuAbility(this); - } -}