From bef1482c2db57b8c3eff0973d6e60565e563f0d5 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 12 Sep 2014 22:20:00 +0200 Subject: [PATCH] [KTK] Added 12green cards. 3 cards fixed. --- .../mage/sets/khansoftarkir/AinokTracker.java | 2 +- .../sets/khansoftarkir/ArchersParapet.java | 75 ++++++++++ .../sets/khansoftarkir/BecomeImmense.java | 66 +++++++++ .../sets/khansoftarkir/CanyonLurkers.java | 2 +- .../sets/khansoftarkir/DragonscaleBoon.java | 68 +++++++++ .../mage/sets/khansoftarkir/FeedTheClan.java | 76 ++++++++++ .../mage/sets/khansoftarkir/HighlandGame.java | 65 +++++++++ .../sets/khansoftarkir/KinTreeWarden.java | 72 ++++++++++ .../sets/khansoftarkir/LongshotSquad.java | 89 ++++++++++++ .../mage/sets/khansoftarkir/SavagePunch.java | 90 ++++++++++++ .../sets/khansoftarkir/ScoutTheBorders.java | 135 ++++++++++++++++++ .../mage/sets/khansoftarkir/SmokeTeller.java | 124 ++++++++++++++++ .../mage/sets/khansoftarkir/SultaiFlayer.java | 79 ++++++++++ .../sets/khansoftarkir/TrailOfMystery.java | 108 ++++++++++++++ .../sets/khansoftarkir/WoollyLoxodon.java | 2 +- 15 files changed, 1050 insertions(+), 3 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/ArchersParapet.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/BecomeImmense.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/DragonscaleBoon.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/FeedTheClan.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/HighlandGame.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/KinTreeWarden.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/LongshotSquad.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/SavagePunch.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/ScoutTheBorders.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/SmokeTeller.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/SultaiFlayer.java create mode 100644 Mage.Sets/src/mage/sets/khansoftarkir/TrailOfMystery.java diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/AinokTracker.java b/Mage.Sets/src/mage/sets/khansoftarkir/AinokTracker.java index 6a1f883f18c..76856425343 100644 --- a/Mage.Sets/src/mage/sets/khansoftarkir/AinokTracker.java +++ b/Mage.Sets/src/mage/sets/khansoftarkir/AinokTracker.java @@ -55,7 +55,7 @@ public class AinokTracker extends CardImpl { // First Strike this.addAbility(FirstStrikeAbility.getInstance()); // Morph 4R - this.addAbility(new MorphAbility(this, new ManaCostsImpl(""))); + this.addAbility(new MorphAbility(this, new ManaCostsImpl("{4}{R}"))); } public AinokTracker(final AinokTracker card) { diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/ArchersParapet.java b/Mage.Sets/src/mage/sets/khansoftarkir/ArchersParapet.java new file mode 100644 index 00000000000..4344aab3c9b --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/ArchersParapet.java @@ -0,0 +1,75 @@ +/* + * 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.khansoftarkir; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.LoseLifeOpponentsEffect; +import mage.abilities.keyword.DefenderAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author LevelX2 + */ +public class ArchersParapet extends CardImpl { + + public ArchersParapet(UUID ownerId) { + super(ownerId, 128, "Archers' Parapet", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{G}"); + this.expansionSetCode = "KTK"; + this.subtype.add("Wall"); + + this.color.setGreen(true); + this.power = new MageInt(0); + this.toughness = new MageInt(5); + + // Defender + this.addAbility(DefenderAbility.getInstance()); + // 1B, T: Each opponent loses 1 life. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LoseLifeOpponentsEffect(1), new ManaCostsImpl("{1}{B}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + + } + + public ArchersParapet(final ArchersParapet card) { + super(card); + } + + @Override + public ArchersParapet copy() { + return new ArchersParapet(this); + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/BecomeImmense.java b/Mage.Sets/src/mage/sets/khansoftarkir/BecomeImmense.java new file mode 100644 index 00000000000..0edd9a221fe --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/BecomeImmense.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.khansoftarkir; + +import java.util.UUID; +import mage.abilities.effects.common.continious.BoostTargetEffect; +import mage.abilities.keyword.DelveAbility; +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 BecomeImmense extends CardImpl { + + public BecomeImmense(UUID ownerId) { + super(ownerId, 130, "Become Immense", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{5}{G}"); + this.expansionSetCode = "KTK"; + + this.color.setGreen(true); + + // Delve + this.addAbility(new DelveAbility()); + // Target creature gets +6/+6 until end of turn + this.getSpellAbility().addEffect(new BoostTargetEffect(6,6,Duration.EndOfTurn)); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + } + + public BecomeImmense(final BecomeImmense card) { + super(card); + } + + @Override + public BecomeImmense copy() { + return new BecomeImmense(this); + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/CanyonLurkers.java b/Mage.Sets/src/mage/sets/khansoftarkir/CanyonLurkers.java index a321b02d6a3..aa65c42bfd7 100644 --- a/Mage.Sets/src/mage/sets/khansoftarkir/CanyonLurkers.java +++ b/Mage.Sets/src/mage/sets/khansoftarkir/CanyonLurkers.java @@ -52,7 +52,7 @@ public class CanyonLurkers extends CardImpl { this.toughness = new MageInt(2); // Morph 3R - this.addAbility(new MorphAbility(this, new ManaCostsImpl(""))); + this.addAbility(new MorphAbility(this, new ManaCostsImpl("{3}{R}"))); } public CanyonLurkers(final CanyonLurkers card) { diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/DragonscaleBoon.java b/Mage.Sets/src/mage/sets/khansoftarkir/DragonscaleBoon.java new file mode 100644 index 00000000000..574703c333b --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/DragonscaleBoon.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.khansoftarkir; + +import java.util.UUID; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.UntapTargetEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.counters.CounterType; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author LevelX2 + */ +public class DragonscaleBoon extends CardImpl { + + public DragonscaleBoon(UUID ownerId) { + super(ownerId, 131, "Dragonscale Boon", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{3}{G}"); + this.expansionSetCode = "KTK"; + + this.color.setGreen(true); + + // Put two +1/+1 counters on target creature and untap it + this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2))); + Effect effect = new UntapTargetEffect(); + effect.setText("and untap it"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + } + + public DragonscaleBoon(final DragonscaleBoon card) { + super(card); + } + + @Override + public DragonscaleBoon copy() { + return new DragonscaleBoon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/FeedTheClan.java b/Mage.Sets/src/mage/sets/khansoftarkir/FeedTheClan.java new file mode 100644 index 00000000000..43574560c86 --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/FeedTheClan.java @@ -0,0 +1,76 @@ +/* + * 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.khansoftarkir; + +import java.util.UUID; +import mage.abilities.condition.InvertCondition; +import mage.abilities.condition.common.FerociousCondition; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.IntPlusDynamicValue; +import mage.abilities.dynamicvalue.common.ManacostVariableValue; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author LevelX2 + */ +public class FeedTheClan extends CardImpl { + + public FeedTheClan(UUID ownerId) { + super(ownerId, 132, "Feed the Clan", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{G}"); + this.expansionSetCode = "KTK"; + + this.color.setGreen(true); + + // You gain 5 life. + this.getSpellAbility().addEffect(new ConditionalOneShotEffect( + new GainLifeEffect(5), + new InvertCondition(FerociousCondition.getInstance()), + "You gain 5 life")); + + // Ferocious - You gain 10 life instead if you control a creature with power 4 or greater. + this.getSpellAbility().addEffect(new ConditionalOneShotEffect( + new GainLifeEffect(10), + FerociousCondition.getInstance(), + "

Ferocious - You gain 10 life instead if you control a creature with power 4 or greater")); + + } + + public FeedTheClan(final FeedTheClan card) { + super(card); + } + + @Override + public FeedTheClan copy() { + return new FeedTheClan(this); + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/HighlandGame.java b/Mage.Sets/src/mage/sets/khansoftarkir/HighlandGame.java new file mode 100644 index 00000000000..bd4f5b0253e --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/HighlandGame.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.khansoftarkir; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.DiesTriggeredAbility; +import mage.abilities.effects.common.GainLifeEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author LevelX2 + */ +public class HighlandGame extends CardImpl { + + public HighlandGame(UUID ownerId) { + super(ownerId, 135, "Highland Game", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{G}"); + this.expansionSetCode = "KTK"; + this.subtype.add("Elk"); + + this.color.setGreen(true); + this.power = new MageInt(2); + this.toughness = new MageInt(1); + + // When Highland Game dies, you gain 2 life. + this.addAbility(new DiesTriggeredAbility(new GainLifeEffect(2))); + } + + public HighlandGame(final HighlandGame card) { + super(card); + } + + @Override + public HighlandGame copy() { + return new HighlandGame(this); + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/KinTreeWarden.java b/Mage.Sets/src/mage/sets/khansoftarkir/KinTreeWarden.java new file mode 100644 index 00000000000..fcad8805c10 --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/KinTreeWarden.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.khansoftarkir; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.RegenerateSourceEffect; +import mage.abilities.keyword.MorphAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author LevelX2 + */ +public class KinTreeWarden extends CardImpl { + + public KinTreeWarden(UUID ownerId) { + super(ownerId, 139, "Kin-Tree Warden", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{G}"); + this.expansionSetCode = "KTK"; + this.subtype.add("Human"); + this.subtype.add("Warrior"); + + this.color.setGreen(true); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // {2}: Regenerate Kin-Tree Warden + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new GenericManaCost(2))); + // Morph {G} + this.addAbility(new MorphAbility(this, new ManaCostsImpl("{G}"))); + } + + public KinTreeWarden(final KinTreeWarden card) { + super(card); + } + + @Override + public KinTreeWarden copy() { + return new KinTreeWarden(this); + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/LongshotSquad.java b/Mage.Sets/src/mage/sets/khansoftarkir/LongshotSquad.java new file mode 100644 index 00000000000..589d10eddd5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/LongshotSquad.java @@ -0,0 +1,89 @@ +/* + * 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.khansoftarkir; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continious.GainAbilityAllEffect; +import mage.abilities.keyword.OutlastAbility; +import mage.abilities.keyword.ReachAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.permanent.ControllerPredicate; +import mage.filter.predicate.permanent.CounterPredicate; + +/** + * + * @author LevelX2 + */ +public class LongshotSquad extends CardImpl { + + private static final FilterPermanent filter = new FilterPermanent(); + + static { + filter.add(new CardTypePredicate(CardType.CREATURE)); + filter.add(new ControllerPredicate(TargetController.YOU)); + filter.add(new CounterPredicate(CounterType.P1P1)); + } + + public LongshotSquad(UUID ownerId) { + super(ownerId, 140, "Longshot Squad", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{G}"); + this.expansionSetCode = "KTK"; + this.subtype.add("Hound"); + this.subtype.add("Archer"); + + this.color.setGreen(true); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Outlast 1G + this.addAbility(new OutlastAbility(new ManaCostsImpl("{1}{G}"))); + // Each creature you control with a +1/+1 counter on it has reach. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ReachAbility.getInstance(), Duration.WhileOnBattlefield, filter, + "Each creature you control with a +1/+1 counter on it has reach"))); + + } + + public LongshotSquad(final LongshotSquad card) { + super(card); + } + + @Override + public LongshotSquad copy() { + return new LongshotSquad(this); + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/SavagePunch.java b/Mage.Sets/src/mage/sets/khansoftarkir/SavagePunch.java new file mode 100644 index 00000000000..94580f7afdb --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/SavagePunch.java @@ -0,0 +1,90 @@ +/* + * 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.khansoftarkir; + +import java.util.UUID; +import mage.abilities.condition.common.FerociousCondition; +import mage.constants.TargetController; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.ControllerPredicate; +import mage.target.Target; +import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.common.TargetCreaturePermanent; +import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.FightTargetsEffect; +import mage.abilities.effects.common.continious.BoostTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; + + +/** + * + * @author LevelX2 + */ +public class SavagePunch extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control"); + + static { + filter.add(new ControllerPredicate(TargetController.NOT_YOU)); + } + + public SavagePunch(UUID ownerId) { + super(ownerId, 147, "Savage Punch", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{1}{G}"); + this.expansionSetCode = "KTK"; + + this.color.setGreen(true); + // Ferocious - The creature you control gets +2/+2 until end of turn before it fights if you control a creature with power 4 or greater. + Effect effect = new ConditionalContinousEffect( + new BoostTargetEffect(2,2,Duration.EndOfTurn), + FerociousCondition.getInstance(), + "Ferocious - The creature you control gets +2/+2 until end of turn before it fights if you control a creature with power 4 or greater"); + effect.setApplyEffectsAfter(); + this.getSpellAbility().addEffect(effect); + + // Target creature you control fights target creature you don't control. + effect = new FightTargetsEffect(); + effect.setText("

Target creature you control fights target creature you don't control"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); + Target target = new TargetCreaturePermanent(filter); + this.getSpellAbility().addTarget(target); + } + + public SavagePunch(final SavagePunch card) { + super(card); + } + + @Override + public SavagePunch copy() { + return new SavagePunch(this); + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/ScoutTheBorders.java b/Mage.Sets/src/mage/sets/khansoftarkir/ScoutTheBorders.java new file mode 100644 index 00000000000..48af1ea16ef --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/ScoutTheBorders.java @@ -0,0 +1,135 @@ +/* + * 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.khansoftarkir; + +import java.util.UUID; +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.FilterCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.game.Game; +import mage.players.Player; +import mage.target.TargetCard; + +/** + * + * @author LevelX2 + */ +public class ScoutTheBorders extends CardImpl { + + public ScoutTheBorders(UUID ownerId) { + super(ownerId, 148, "Scout the Borders", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{2}{G}"); + this.expansionSetCode = "KTK"; + + this.color.setGreen(true); + + // Reveal the top five cards of your library. You may put a creature or land card from among them into your hand. Put the rest into your graveyard. + this.getSpellAbility().addEffect(new GrislySalvageEffect()); + } + + public ScoutTheBorders(final ScoutTheBorders card) { + super(card); + } + + @Override + public ScoutTheBorders copy() { + return new ScoutTheBorders(this); + } +} + +class GrislySalvageEffect extends OneShotEffect { + + private static final FilterCard filterPutInHand = new FilterCard("creature or land card to put in hand"); + static { + filterPutInHand.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new CardTypePredicate(CardType.LAND))); + } + + public GrislySalvageEffect() { + super(Outcome.DrawCard); + this.staticText = "Reveal the top five cards of your library. You may put a creature or land card from among them into your hand. Put the rest into your graveyard"; + } + + public GrislySalvageEffect(final GrislySalvageEffect effect) { + super(effect); + } + + @Override + public GrislySalvageEffect copy() { + return new GrislySalvageEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + Cards cards = new CardsImpl(Zone.PICK); + + boolean properCardFound = false; + int count = Math.min(controller.getLibrary().size(), 5); + for (int i = 0; i < count; i++) { + Card card = controller.getLibrary().removeFromTop(game); + if (card != null) { + cards.add(card); + if (filterPutInHand.match(card, source.getSourceId(), source.getControllerId(), game)) { + properCardFound = true; + } + } + } + + if (!cards.isEmpty()) { + controller.revealCards("Scout the Borders", cards, game); + TargetCard target = new TargetCard(Zone.PICK, filterPutInHand); + if (properCardFound && controller.choose(Outcome.DrawCard, cards, target, game)) { + Card card = game.getCard(target.getFirstTarget()); + if (card != null) { + controller.moveCardToHandWithInfo(card, source.getSourceId(), game, Zone.LIBRARY); + } + + } + + for (UUID cardId : cards) { + Card card = game.getCard(cardId); + if (card != null) { + controller.moveCardToGraveyardWithInfo(card, source.getSourceId(), game, Zone.LIBRARY); + } + } + } + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/SmokeTeller.java b/Mage.Sets/src/mage/sets/khansoftarkir/SmokeTeller.java new file mode 100644 index 00000000000..2cffd937136 --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/SmokeTeller.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.khansoftarkir; + +import java.util.UUID; +import mage.MageInt; +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.OneShotEffect; +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.FilterCreaturePermanent; +import mage.filter.predicate.other.FaceDownPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author LevelX2 + */ +public class SmokeTeller extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face down creature"); + + static { + filter.add(new FaceDownPredicate()); + } + + public SmokeTeller(UUID ownerId) { + super(ownerId, 151, "Smoke Teller", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{G}"); + this.expansionSetCode = "KTK"; + this.subtype.add("Human"); + this.subtype.add("Shaman"); + + this.color.setGreen(true); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // 1U: Look at target face-down creature. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SmokeTellerLookFaceDownEffect(), new ManaCostsImpl("{1}{U}")); + ability.addTarget(new TargetCreaturePermanent(filter)); + this.addAbility(ability); + } + + public SmokeTeller(final SmokeTeller card) { + super(card); + } + + @Override + public SmokeTeller copy() { + return new SmokeTeller(this); + } +} + +class SmokeTellerLookFaceDownEffect extends OneShotEffect { + + public SmokeTellerLookFaceDownEffect() { + super(Outcome.Benefit); + this.staticText = "Look at target face-down creature"; + } + + public SmokeTellerLookFaceDownEffect(final SmokeTellerLookFaceDownEffect effect) { + super(effect); + } + + @Override + public SmokeTellerLookFaceDownEffect copy() { + return new SmokeTellerLookFaceDownEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + MageObject mageObject = game.getObject(source.getSourceId()); + if (player == null || mageObject == null) { + return false; + } + Permanent faceDownCreature = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (faceDownCreature != null) { + Permanent copyFaceDown = faceDownCreature.copy(); + copyFaceDown.setFaceDown(false); + Cards cards = new CardsImpl(); + cards.add(copyFaceDown); + player.lookAtCards("face down card - " + mageObject.getLogName(), cards, game); + } else { + return false; + } + return true; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/SultaiFlayer.java b/Mage.Sets/src/mage/sets/khansoftarkir/SultaiFlayer.java new file mode 100644 index 00000000000..d3ef7211608 --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/SultaiFlayer.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.khansoftarkir; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.DiesCreatureTriggeredAbility; +import mage.abilities.effects.common.GainLifeEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.filter.Filter; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; +import mage.filter.predicate.permanent.ControllerPredicate; + +/** + * + * @author LevelX2 + */ +public class SultaiFlayer extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature you control with toughness 4 or greater"); + + static { + filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 3)); + filter.add(new ControllerPredicate(TargetController.YOU)); + } + + public SultaiFlayer(UUID ownerId) { + super(ownerId, 152, "Sultai Flayer", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{G}"); + this.expansionSetCode = "KTK"; + this.subtype.add("Naga"); + this.subtype.add("Shaman"); + + this.color.setGreen(true); + this.power = new MageInt(3); + this.toughness = new MageInt(4); + + // Whenever a creature you control with toughness 4 or greater dies, you gain 4 life. + this.addAbility(new DiesCreatureTriggeredAbility(new GainLifeEffect(4), false, filter)); + + } + + public SultaiFlayer(final SultaiFlayer card) { + super(card); + } + + @Override + public SultaiFlayer copy() { + return new SultaiFlayer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/TrailOfMystery.java b/Mage.Sets/src/mage/sets/khansoftarkir/TrailOfMystery.java new file mode 100644 index 00000000000..a1c5c8c6f6b --- /dev/null +++ b/Mage.Sets/src/mage/sets/khansoftarkir/TrailOfMystery.java @@ -0,0 +1,108 @@ +/* + * 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.khansoftarkir; + +import java.util.UUID; +import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.TurnedFaceUpAllTriggeredAbility; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continious.BoostTargetEffect; +import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.other.FaceDownPredicate; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.target.common.TargetCardInLibrary; + +/** + * + * @author LevelX2 + */ +public class TrailOfMystery extends CardImpl { + + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a face-down creature"); + + static { + filter.add(new FaceDownPredicate()); + } + + public TrailOfMystery(UUID ownerId) { + super(ownerId, 154, "Trail of Mystery", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}"); + this.expansionSetCode = "KTK"; + + this.color.setGreen(true); + + // Whenever a face-down creature enters the battlefield under your control, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library. + Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(new FilterBasicLandCard()), true, true); + this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filter, true)); + + // Whenever a permanent you control is turned face up, if it's a creature, it gets +2/+2 until end of turn. + this.addAbility(new TrailOfMysteryTriggeredAbility()); + } + + public TrailOfMystery(final TrailOfMystery card) { + super(card); + } + + @Override + public TrailOfMystery copy() { + return new TrailOfMystery(this); + } +} + +class TrailOfMysteryTriggeredAbility extends TurnedFaceUpAllTriggeredAbility { + + public TrailOfMysteryTriggeredAbility() { + super(new BoostTargetEffect(2,2,Duration.EndOfTurn), new FilterControlledCreaturePermanent(), true); + } + + public TrailOfMysteryTriggeredAbility(final TrailOfMysteryTriggeredAbility ability) { + super(ability); + } + + @Override + public TrailOfMysteryTriggeredAbility copy() { + return new TrailOfMysteryTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + return false; + } + + @Override + public String getRule() { + return "Whenever a permanent you control is turned face up, if it's a creature, it gets +2/+2 until end of turn"; + } +} diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/WoollyLoxodon.java b/Mage.Sets/src/mage/sets/khansoftarkir/WoollyLoxodon.java index b40e0e2e85c..3ec8c4b6e25 100644 --- a/Mage.Sets/src/mage/sets/khansoftarkir/WoollyLoxodon.java +++ b/Mage.Sets/src/mage/sets/khansoftarkir/WoollyLoxodon.java @@ -52,7 +52,7 @@ public class WoollyLoxodon extends CardImpl { this.toughness = new MageInt(7); // Morph 5G - this.addAbility(new MorphAbility(this, new ManaCostsImpl(""))); + this.addAbility(new MorphAbility(this, new ManaCostsImpl("{5}{G}"))); } public WoollyLoxodon(final WoollyLoxodon card) {