From 78ccf3adb11ec94d7944097137c14be9250e665f Mon Sep 17 00:00:00 2001 From: fireshoes Date: Sat, 9 Jan 2016 12:20:47 -0600 Subject: [PATCH] [OGW] Added most red cards. Updated a few other cards that use "Discard a card. If you do, draw a card." --- .../battleforzendikar/WastelandStrangler.java | 2 +- .../mage/sets/fatereforged/Vaultbreaker.java | 176 +++++++----------- .../mage/sets/fifthdawn/MagneticTheft.java | 8 +- .../mage/sets/magic2014/AcademyRaider.java | 175 +++++++---------- .../oathofthegatewatch/AkoumFlameseeker.java | 87 +++++++++ .../oathofthegatewatch/BruteStrength.java | 69 +++++++ .../oathofthegatewatch/CinderHellion.java | 71 +++++++ .../oathofthegatewatch/ConsumingSinkhole.java | 84 +++++++++ .../oathofthegatewatch/DevourInFlames.java | 66 +++++++ .../oathofthegatewatch/EldraziAggressor.java | 85 +++++++++ .../KazuulsTollCollector.java | 108 +++++++++++ .../sets/oathofthegatewatch/MawOfKozilek.java | 71 +++++++ .../OverwhelmingDenial.java | 8 +- .../oathofthegatewatch/PressIntoService.java | 70 +++++++ .../oathofthegatewatch/RealityHemorrhage.java | 64 +++++++ .../oathofthegatewatch/SparkmagesGambit.java | 63 +++++++ .../oathofthegatewatch/TearsOfValakut.java | 81 ++++++++ .../oathofthegatewatch/ZadasCommando.java | 91 +++++++++ Utils/mtg-cards-data.txt | 4 +- 19 files changed, 1165 insertions(+), 218 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/AkoumFlameseeker.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/BruteStrength.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/CinderHellion.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/ConsumingSinkhole.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/DevourInFlames.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/EldraziAggressor.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/KazuulsTollCollector.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/MawOfKozilek.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/PressIntoService.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/RealityHemorrhage.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/SparkmagesGambit.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/TearsOfValakut.java create mode 100644 Mage.Sets/src/mage/sets/oathofthegatewatch/ZadasCommando.java diff --git a/Mage.Sets/src/mage/sets/battleforzendikar/WastelandStrangler.java b/Mage.Sets/src/mage/sets/battleforzendikar/WastelandStrangler.java index 739f0d27721..553c5cdd10c 100644 --- a/Mage.Sets/src/mage/sets/battleforzendikar/WastelandStrangler.java +++ b/Mage.Sets/src/mage/sets/battleforzendikar/WastelandStrangler.java @@ -60,7 +60,7 @@ public class WastelandStrangler extends CardImpl { // When Wasteland Strangler enters the battlefield, you may put a card an opponent owns from exile into that player's graveyard. If you do, target creature gets -3/-3 until end of turn. Ability ability = new EntersBattlefieldTriggeredAbility( - new DoIfCostPaid(new BoostTargetEffect(-3, -3, Duration.EndOfTurn), new ExileOpponentsCardFromExileToGraveyardCost(true)), true); + new DoIfCostPaid(new BoostTargetEffect(-3, -3, Duration.EndOfTurn), new ExileOpponentsCardFromExileToGraveyardCost(true)), false); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/fatereforged/Vaultbreaker.java b/Mage.Sets/src/mage/sets/fatereforged/Vaultbreaker.java index 4f6840806bc..86fa4b0b56e 100644 --- a/Mage.Sets/src/mage/sets/fatereforged/Vaultbreaker.java +++ b/Mage.Sets/src/mage/sets/fatereforged/Vaultbreaker.java @@ -1,104 +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.fatereforged; - -import java.util.UUID; -import mage.MageInt; -import mage.abilities.Ability; -import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.effects.OneShotEffect; -import mage.abilities.keyword.DashAbility; -import mage.cards.CardImpl; -import mage.cards.Cards; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Rarity; -import mage.game.Game; -import mage.players.Player; - -/** - * - * @author jeffwadsworth - */ -public class Vaultbreaker extends CardImpl { - - public Vaultbreaker(UUID ownerId) { - super(ownerId, 117, "Vaultbreaker", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{R}"); - this.expansionSetCode = "FRF"; - this.subtype.add("Orc"); - this.subtype.add("Rogue"); - this.power = new MageInt(4); - this.toughness = new MageInt(2); - - // Whenever Vaultbreaker attacks, you may discard a card. If you do, draw a card. - this.addAbility(new AttacksTriggeredAbility(new VaultbreakerEffect(), true)); - - // Dash {2}{R} - this.addAbility(new DashAbility(this, "{2}{R}")); - - } - - public Vaultbreaker(final Vaultbreaker card) { - super(card); - } - - @Override - public Vaultbreaker copy() { - return new Vaultbreaker(this); - } -} - -class VaultbreakerEffect extends OneShotEffect { - - VaultbreakerEffect() { - super(Outcome.Neutral); - staticText = "you may discard a card. If you do, draw a card"; - } - - VaultbreakerEffect(final VaultbreakerEffect effect) { - super(effect); - } - - @Override - public boolean apply(Game game, Ability source) { - Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - Cards discardedCard = controller.discard(1, false, source, game); - if (discardedCard != null) { - controller.drawCards(1, game); - return true; - } - } - return false; - } - - @Override - public VaultbreakerEffect copy() { - return new VaultbreakerEffect(this); - } -} +/* + * 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.fatereforged; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.effects.common.DoIfCostPaid; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.keyword.DashAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author jeffwadsworth + */ +public class Vaultbreaker extends CardImpl { + + public Vaultbreaker(UUID ownerId) { + super(ownerId, 117, "Vaultbreaker", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{R}"); + this.expansionSetCode = "FRF"; + this.subtype.add("Orc"); + this.subtype.add("Rogue"); + this.power = new MageInt(4); + this.toughness = new MageInt(2); + + // Whenever Vaultbreaker attacks, you may discard a card. If you do, draw a card. + this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new DrawCardSourceControllerEffect(1), + new DiscardCardCost()), false, "Whenever {this} attacks, you may discard a card. If you do, draw a card")); + + // Dash {2}{R} + this.addAbility(new DashAbility(this, "{2}{R}")); + + } + + public Vaultbreaker(final Vaultbreaker card) { + super(card); + } + + @Override + public Vaultbreaker copy() { + return new Vaultbreaker(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthdawn/MagneticTheft.java b/Mage.Sets/src/mage/sets/fifthdawn/MagneticTheft.java index 613dbe9b47f..37d9aac1d88 100644 --- a/Mage.Sets/src/mage/sets/fifthdawn/MagneticTheft.java +++ b/Mage.Sets/src/mage/sets/fifthdawn/MagneticTheft.java @@ -29,22 +29,16 @@ package mage.sets.fifthdawn; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Rarity; -import mage.constants.Zone; import mage.filter.FilterPermanent; -import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; -import mage.target.common.TargetControlledCreaturePermanent; -import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -58,7 +52,7 @@ public class MagneticTheft extends CardImpl { static { filter.add(new SubtypePredicate("Equipment")); } - + public MagneticTheft(UUID ownerId) { super(ownerId, 74, "Magnetic Theft", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{R}"); this.expansionSetCode = "5DN"; diff --git a/Mage.Sets/src/mage/sets/magic2014/AcademyRaider.java b/Mage.Sets/src/mage/sets/magic2014/AcademyRaider.java index 19bfedc8976..e005feb0f2d 100644 --- a/Mage.Sets/src/mage/sets/magic2014/AcademyRaider.java +++ b/Mage.Sets/src/mage/sets/magic2014/AcademyRaider.java @@ -1,103 +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.magic2014; - -import java.util.UUID; -import mage.MageInt; -import mage.abilities.Ability; -import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; -import mage.abilities.effects.OneShotEffect; -import mage.abilities.keyword.IntimidateAbility; -import mage.cards.CardImpl; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Rarity; -import mage.game.Game; -import mage.players.Player; - -/** - * - * @author jeffwadsworth - */ -public class AcademyRaider extends CardImpl { - - public AcademyRaider(UUID ownerId) { - super(ownerId, 124, "Academy Raider", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{R}"); - this.expansionSetCode = "M14"; - this.subtype.add("Human"); - this.subtype.add("Warrior"); - - this.power = new MageInt(1); - this.toughness = new MageInt(1); - - // Intimidate - this.addAbility(IntimidateAbility.getInstance()); - - // Whenever Academy Raider deals combat damage to a player, you may discard a card. If you do, draw a card. - this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DiscardAndDrawEffect(), true)); - - } - - public AcademyRaider(final AcademyRaider card) { - super(card); - } - - @Override - public AcademyRaider copy() { - return new AcademyRaider(this); - } -} - -class DiscardAndDrawEffect extends OneShotEffect { - - public DiscardAndDrawEffect() { - super(Outcome.DrawCard); - staticText = "you may discard a card. If you do, draw a card"; - } - - public DiscardAndDrawEffect(final DiscardAndDrawEffect effect) { - super(effect); - } - - @Override - public DiscardAndDrawEffect copy() { - return new DiscardAndDrawEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Player you = game.getPlayer(source.getControllerId()); - if (you != null) { - you.discard(1, source, game); - if (you.drawCards(1, game) > 0) { - return true; - } - } - return false; - } -} +/* + * 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.magic2014; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.effects.common.DoIfCostPaid; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.keyword.IntimidateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author jeffwadsworth + */ +public class AcademyRaider extends CardImpl { + + public AcademyRaider(UUID ownerId) { + super(ownerId, 124, "Academy Raider", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{R}"); + this.expansionSetCode = "M14"; + this.subtype.add("Human"); + this.subtype.add("Warrior"); + + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // Intimidate + this.addAbility(IntimidateAbility.getInstance()); + + // Whenever Academy Raider deals combat damage to a player, you may discard a card. If you do, draw a card. + this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()), false)); + + } + + public AcademyRaider(final AcademyRaider card) { + super(card); + } + + @Override + public AcademyRaider copy() { + return new AcademyRaider(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/AkoumFlameseeker.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/AkoumFlameseeker.java new file mode 100644 index 00000000000..2a125667800 --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/AkoumFlameseeker.java @@ -0,0 +1,87 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.oathofthegatewatch; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.common.TapTargetCost; +import mage.abilities.effects.common.DoIfCostPaid; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.cards.CardImpl; +import mage.constants.AbilityWord; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author fireshoes + */ +public class AkoumFlameseeker extends CardImpl { + + private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control"); + + static { + filter.add(new SubtypePredicate("Ally")); + filter.add(Predicates.not(new TappedPredicate())); + } + + public AkoumFlameseeker(UUID ownerId) { + super(ownerId, 101, "Akoum Flameseeker", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{R}"); + this.expansionSetCode = "OGW"; + this.subtype.add("Human"); + this.subtype.add("Shaman"); + this.subtype.add("Ally"); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // Cohort — {T}, Tap an untapped Ally you control: Discard a card. If you do, draw a card. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, (new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost())), new TapSourceCost()); + ability.addCost(new TapTargetCost(new TargetControlledPermanent(filter))); + ability.setAbilityWord(AbilityWord.COHORT); + this.addAbility(ability); + } + + public AkoumFlameseeker(final AkoumFlameseeker card) { + super(card); + } + + @Override + public AkoumFlameseeker copy() { + return new AkoumFlameseeker(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/BruteStrength.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/BruteStrength.java new file mode 100644 index 00000000000..bf6040559c9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/BruteStrength.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.oathofthegatewatch; + +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 fireshoes + */ +public class BruteStrength extends CardImpl { + + public BruteStrength(UUID ownerId) { + super(ownerId, 103, "Brute Strength", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}"); + this.expansionSetCode = "OGW"; + + // Target creature gets +3/+1 and gain trample until end of turn. + Effect effect = new BoostTargetEffect(3, 1, Duration.EndOfTurn); + effect.setText("Target creature gets +3/+1"); + 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 BruteStrength(final BruteStrength card) { + super(card); + } + + @Override + public BruteStrength copy() { + return new BruteStrength(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/CinderHellion.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/CinderHellion.java new file mode 100644 index 00000000000..83070c65b6a --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/CinderHellion.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.oathofthegatewatch; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.target.common.TargetOpponent; + +/** + * + * @author fireshoes + */ +public class CinderHellion extends CardImpl { + + public CinderHellion(UUID ownerId) { + super(ownerId, 105, "Cinder Hellion", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{R}"); + this.expansionSetCode = "OGW"; + this.subtype.add("Hellion"); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // When Cinder Hellion enters the battlefield, it deals 2 damage to target opponent. + Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(2), false); + ability.addTarget(new TargetOpponent()); + this.addAbility(ability); + } + + public CinderHellion(final CinderHellion card) { + super(card); + } + + @Override + public CinderHellion copy() { + return new CinderHellion(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/ConsumingSinkhole.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/ConsumingSinkhole.java new file mode 100644 index 00000000000..5641f939394 --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/ConsumingSinkhole.java @@ -0,0 +1,84 @@ +/* + * 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.oathofthegatewatch; + +import java.util.UUID; +import mage.abilities.Mode; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.keyword.DevoidAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.target.TargetPlayer; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class ConsumingSinkhole extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("land creature"); + + static { + filter.add(new CardTypePredicate(CardType.LAND)); + } + + public ConsumingSinkhole(UUID ownerId) { + super(ownerId, 94, "Consuming Sinkhole", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{3}{R}"); + this.expansionSetCode = "OGW"; + + // Devoid + this.addAbility(new DevoidAbility(this.color)); + + // Choose one — Exile target land creature. + Effect effect = new ExileTargetEffect(); + effect.setText("Exile target land creature"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + + // Consuming Sinkhole deals 4 damage to target player. + Mode mode = new Mode(); + mode.getEffects().add(new DamageTargetEffect(4)); + mode.getTargets().add(new TargetPlayer()); + this.getSpellAbility().addMode(mode); + } + + public ConsumingSinkhole(final ConsumingSinkhole card) { + super(card); + } + + @Override + public ConsumingSinkhole copy() { + return new ConsumingSinkhole(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/DevourInFlames.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/DevourInFlames.java new file mode 100644 index 00000000000..b067e1d79a0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/DevourInFlames.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.oathofthegatewatch; + +import java.util.UUID; +import mage.abilities.costs.common.ReturnToHandChosenControlledPermanentCost; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterControlledLandPermanent; +import mage.target.common.TargetControlledPermanent; +import mage.target.common.TargetCreatureOrPlaneswalker; + +/** + * + * @author fireshoes + */ +public class DevourInFlames extends CardImpl { + + public DevourInFlames(UUID ownerId) { + super(ownerId, 106, "Devour in Flames", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{2}{R}"); + this.expansionSetCode = "OGW"; + + // As an additional cost to cast Devour in Flames, return a land you control to its owner's hand. + this.getSpellAbility().addCost(new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(new FilterControlledLandPermanent("land")))); + + // Devour in Flames deals 5 damage to target creature or planeswalker. + this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker()); + this.getSpellAbility().addEffect(new DamageTargetEffect(5)); + } + + public DevourInFlames(final DevourInFlames card) { + super(card); + } + + @Override + public DevourInFlames copy() { + return new DevourInFlames(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/EldraziAggressor.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/EldraziAggressor.java new file mode 100644 index 00000000000..d7ec8064847 --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/EldraziAggressor.java @@ -0,0 +1,85 @@ +/* + * 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.oathofthegatewatch; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.keyword.DevoidAbility; +import mage.abilities.keyword.HasteAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.ColorlessPredicate; +import mage.filter.predicate.permanent.AnotherPredicate; + +/** + * + * @author fireshoes + */ +public class EldraziAggressor extends CardImpl { + + private final String rule = "{this} has haste as long as you control another colorless creature"; + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another colorless creature"); + + static { + filter.add(new AnotherPredicate()); + filter.add(new ColorlessPredicate()); + } + + public EldraziAggressor(UUID ownerId) { + super(ownerId, 95, "Eldrazi Aggressor", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{R}"); + this.expansionSetCode = "OGW"; + this.subtype.add("Eldrazi"); + this.subtype.add("Drone"); + this.power = new MageInt(2); + this.toughness = new MageInt(3); + + // Devoid + this.addAbility(new DevoidAbility(this.color)); + + // Eldrazi Aggressor has haste as long as you control another colorless creature. + Effect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(HasteAbility.getInstance()), new PermanentsOnTheBattlefieldCondition(filter), rule); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); + } + + public EldraziAggressor(final EldraziAggressor card) { + super(card); + } + + @Override + public EldraziAggressor copy() { + return new EldraziAggressor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/KazuulsTollCollector.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/KazuulsTollCollector.java new file mode 100644 index 00000000000..de86c6f4f79 --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/KazuulsTollCollector.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.oathofthegatewatch; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.ActivateAsSorceryActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author fireshoes + */ +public class KazuulsTollCollector extends CardImpl { + + private static final FilterControlledPermanent filter = new FilterControlledPermanent("Equipment you control"); + + static { + filter.add(new SubtypePredicate("Equipment")); + } + + public KazuulsTollCollector(UUID ownerId) { + super(ownerId, 112, "Kazuul's Toll Collector", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{R}"); + this.expansionSetCode = "OGW"; + this.subtype.add("Ogre"); + this.subtype.add("Warrior"); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // {0}: Attach target Equipment you control to Kazuul's Toll Collector. Activate this ability only any time you could cast a sorcery. + Ability ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new KazuulsTollCollectorEffect(), new ManaCostsImpl("{0}")); + ability.addTarget(new TargetControlledPermanent(filter)); + this.addAbility(ability); + } + + public KazuulsTollCollector(final KazuulsTollCollector card) { + super(card); + } + + @Override + public KazuulsTollCollector copy() { + return new KazuulsTollCollector(this); + } +} + +class KazuulsTollCollectorEffect extends OneShotEffect { + + public KazuulsTollCollectorEffect() { + super(Outcome.BoostCreature); + staticText = "Attach target Equipment you control to {this}"; + } + + public KazuulsTollCollectorEffect(final KazuulsTollCollectorEffect effect) { + super(effect); + } + + @Override + public KazuulsTollCollectorEffect copy() { + return new KazuulsTollCollectorEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent equipment = game.getPermanent(source.getFirstTarget()); + Permanent permanent = game.getPermanent(source.getSourceId()); + if (permanent != null && equipment != null) { + return permanent.addAttachment(equipment.getId(), game); + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/MawOfKozilek.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/MawOfKozilek.java new file mode 100644 index 00000000000..aec8357b84b --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/MawOfKozilek.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.oathofthegatewatch; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.DevoidAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author fireshoes + */ +public class MawOfKozilek extends CardImpl { + + public MawOfKozilek(UUID ownerId) { + super(ownerId, 99, "Maw of Kozilek", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{R}"); + this.expansionSetCode = "OGW"; + this.subtype.add("Eldrazi"); + this.subtype.add("Drone"); + this.power = new MageInt(2); + this.toughness = new MageInt(5); + + // Devoid + this.addAbility(new DevoidAbility(this.color)); + + // {C}: Maw of Kozilek gets +2/-2 until end of turn. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, -2, Duration.EndOfTurn), new ManaCostsImpl("{C}"))); + } + + public MawOfKozilek(final MawOfKozilek card) { + super(card); + } + + @Override + public MawOfKozilek copy() { + return new MawOfKozilek(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/OverwhelmingDenial.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/OverwhelmingDenial.java index 36013c17b0f..1ff83b3a091 100644 --- a/Mage.Sets/src/mage/sets/oathofthegatewatch/OverwhelmingDenial.java +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/OverwhelmingDenial.java @@ -28,7 +28,9 @@ package mage.sets.oathofthegatewatch; import java.util.UUID; +import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.CantBeCounteredSourceEffect; import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.keyword.SurgeAbility; @@ -49,7 +51,11 @@ public class OverwhelmingDenial extends CardImpl { this.expansionSetCode = "OGW"; // Overwhelming Denial can't be countered by spell or abilities. - this.addAbility(new SimpleStaticAbility(Zone.STACK, new CantBeCounteredSourceEffect())); + Effect effect = new CantBeCounteredSourceEffect(); + effect.setText("{this} can't be countered by spells or abilities"); + Ability ability = new SimpleStaticAbility(Zone.STACK, effect); + ability.setRuleAtTheTop(true); + this.addAbility(ability); // Counter target spell. this.getSpellAbility().addTarget(new TargetSpell()); diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/PressIntoService.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/PressIntoService.java new file mode 100644 index 00000000000..5d70158dcdb --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/PressIntoService.java @@ -0,0 +1,70 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.oathofthegatewatch; + +import java.util.UUID; +import mage.abilities.effects.common.UntapTargetEffect; +import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.effects.common.continuous.GainControlTargetEffect; +import mage.abilities.effects.keyword.SupportEffect; +import mage.abilities.keyword.HasteAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class PressIntoService extends CardImpl { + + public PressIntoService(UUID ownerId) { + super(ownerId, 114, "Press into Service", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{4}{R}"); + this.expansionSetCode = "OGW"; + + // Support 2. + getSpellAbility().addEffect(new SupportEffect(this, 2)); + + // Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn)); + this.getSpellAbility().addEffect(new UntapTargetEffect()); + this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)); + } + + public PressIntoService(final PressIntoService card) { + super(card); + } + + @Override + public PressIntoService copy() { + return new PressIntoService(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/RealityHemorrhage.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/RealityHemorrhage.java new file mode 100644 index 00000000000..3de8d16fc04 --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/RealityHemorrhage.java @@ -0,0 +1,64 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.oathofthegatewatch; + +import java.util.UUID; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.keyword.DevoidAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.target.common.TargetCreatureOrPlayer; + +/** + * + * @author fireshoes + */ +public class RealityHemorrhage extends CardImpl { + + public RealityHemorrhage(UUID ownerId) { + super(ownerId, 100, "Reality Hemorrhage", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}"); + this.expansionSetCode = "OGW"; + + // Devoid + this.addAbility(new DevoidAbility(this.color)); + + // Reality Hemorrhage deals 2 damage to target creature or player. + this.getSpellAbility().addEffect(new DamageTargetEffect(2)); + this.getSpellAbility().addTarget(new TargetCreatureOrPlayer()); + } + + public RealityHemorrhage(final RealityHemorrhage card) { + super(card); + } + + @Override + public RealityHemorrhage copy() { + return new RealityHemorrhage(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/SparkmagesGambit.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/SparkmagesGambit.java new file mode 100644 index 00000000000..1e7ae867483 --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/SparkmagesGambit.java @@ -0,0 +1,63 @@ +/* + * 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.oathofthegatewatch; + +import java.util.UUID; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.effects.common.combat.CantBlockTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class SparkmagesGambit extends CardImpl { + + public SparkmagesGambit(UUID ownerId) { + super(ownerId, 117, "Sparkmage's Gambit", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{1}{R}"); + this.expansionSetCode = "OGW"; + + // Sparkmage's Gambit deals 1 damage to each of up to two target creatures. Those creatures can't block this turn. + this.getSpellAbility().addEffect(new DamageTargetEffect(1)); + this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn)); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2)); + } + + public SparkmagesGambit(final SparkmagesGambit card) { + super(card); + } + + @Override + public SparkmagesGambit copy() { + return new SparkmagesGambit(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/TearsOfValakut.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/TearsOfValakut.java new file mode 100644 index 00000000000..e22fd6a9c32 --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/TearsOfValakut.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.oathofthegatewatch; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.CantBeCounteredSourceEffect; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class TearsOfValakut extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying"); + + static { + filter.add(new AbilityPredicate(FlyingAbility.class)); + } + + public TearsOfValakut(UUID ownerId) { + super(ownerId, 118, "Tears of Valakut", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{R}"); + this.expansionSetCode = "OGW"; + + // Tears of Valakut can't be countered by spells or abilities. + Effect effect = new CantBeCounteredSourceEffect(); + effect.setText("{this} can't be countered by spells or abilities"); + Ability ability = new SimpleStaticAbility(Zone.STACK, effect); + ability.setRuleAtTheTop(true); + this.addAbility(ability); + + // Tears of Valakut deals 5 damage to target creature with flying. + this.getSpellAbility().addEffect(new DamageTargetEffect(5)); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + } + + public TearsOfValakut(final TearsOfValakut card) { + super(card); + } + + @Override + public TearsOfValakut copy() { + return new TearsOfValakut(this); + } +} diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/ZadasCommando.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/ZadasCommando.java new file mode 100644 index 00000000000..00d4bf79c52 --- /dev/null +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/ZadasCommando.java @@ -0,0 +1,91 @@ +/* + * 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.oathofthegatewatch; + +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.common.TapTargetCost; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.keyword.FirstStrikeAbility; +import mage.cards.CardImpl; +import mage.constants.AbilityWord; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.common.TargetControlledPermanent; +import mage.target.common.TargetOpponent; + +/** + * + * @author fireshoes + */ +public class ZadasCommando extends CardImpl { + + private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control"); + + static { + filter.add(new SubtypePredicate("Ally")); + filter.add(Predicates.not(new TappedPredicate())); + } + + public ZadasCommando(UUID ownerId) { + super(ownerId, 120, "Zada's Commando", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{R}"); + this.expansionSetCode = "OGW"; + this.subtype.add("Goblin"); + this.subtype.add("Archer"); + this.subtype.add("Ally"); + this.power = new MageInt(2); + this.toughness = new MageInt(1); + + // First Strike + this.addAbility(FirstStrikeAbility.getInstance()); + + // Cohort — {T}, Tap an untapped Ally you control: Zada's Commando deals 1 damage to target opponent. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost()); + ability.addCost(new TapTargetCost(new TargetControlledPermanent(filter))); + ability.addTarget(new TargetOpponent()); + ability.setAbilityWord(AbilityWord.COHORT); + this.addAbility(ability); + } + + public ZadasCommando(final ZadasCommando card) { + super(card); + } + + @Override + public ZadasCommando copy() { + return new ZadasCommando(this); + } +} diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 42d2eafe5c9..e6eac09fadb 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -28337,7 +28337,7 @@ Untamed Hunger|Oath of the Gatewatch|91|C|{2}{B}|Enchantment - Aura|||Enchant cr Vampire Envoy|Oath of the Gatewatch|92|C|{2}{B}|Creature - Vampire Cleric Ally|1|4|Flying$Whenever Vampire Envoy becomes tapped, you gain 1 life.| Zulaport Chainmage|Oath of the Gatewatch|93|C|{3}{B}|Creature - Human Shaman Ally|4|2|Cohort — {T}, Tap an untapped Ally you control: Target opponent loses 2 life.| Consuming Sinkhole|Oath of the Gatewatch|94|C|{3}{R}|Instant|||Devoid (This card has no color.)$Choose one — Exile target land creature. Consuming Sinkhole deals 4 damage to target player.| -Eldrazi Aggressor|Oath of the Gatewatch|95|C|{2}{R}|Creature - Eldrazi Drone|2|3|Devoid(This card has no color.)$Eldrazi Aggressor has haste as long as you control another colorless creature.| +Eldrazi Aggressor|Oath of the Gatewatch|95|C|{2}{R}|Creature - Eldrazi Drone|2|3|Devoid (This card has no color.)$Eldrazi Aggressor has haste as long as you control another colorless creature.| Eldrazi Obligator|Oath of the Gatewatch|96|R|{2}{R}|Creature - Eldrazi Drone|3|1|Devoid (This card has no color.)$Haste$When you cast Eldrazi Obligator, you may pay {1}{C}. If you do, gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn.| Immobilizer Eldrazi|Oath of the Gatewatch|97|U|{1}{R}|Creature - Eldrazi Drone|2|1|Devoid (This card has no color.)${2}{C}: Each creature with toughness greater than its power can't block this turn.| Kozilek's Return|Oath of the Gatewatch|98|M|{2}{R}|Instant|||Devoid (This card has no color.)$Kozilek's Return deals 2 damage to each creature.$Whenever you cast an Eldrazi creature spell with converted mana cost 7 or greater, you may exile Kozilek's Return from your graveyard. If you do, Kozilek's Return deals 5 damage to each creature.| @@ -28348,7 +28348,7 @@ Boulder Salvo|Oath of the Gatewatch|102|C|{4}{R}|Sorcery|||Surge {1}{R} (You Brute Strength|Oath of the Gatewatch|103|C|{1}{R}|Instant|||Target creature gets +3/+1 and gain trample until end of turn.| Chandra, Flamecaller|Oath of the Gatewatch|104|M|{4}{R}{R}|Planeswalker - Chandra|||+1: Put two 3/1 red Elemental creature tokens with haste onto the battlefield. Exile them at the beginning of the next end step.$0: Discard all the cards in your hand, then draw that many cards plus one.$-X: Chandra, Flamecaller deals X damage to each creature.| Cinder Hellion|Oath of the Gatewatch|105|C|{4}{R}|Creature - Hellion|4|4|Trample$When Cinder Hellion enters the battlefield, it deals 2 damage to target opponent.| -Devour in Flames|Oath of the Gatewatch|106|U|{2}{R}|SOrcery|||As an additional cost to cast Devour in Flames, return a land you control to its owner's hand.$Devour in Flames deals 5 damage to target creature or planeswalker.| +Devour in Flames|Oath of the Gatewatch|106|U|{2}{R}|Sorcery|||As an additional cost to cast Devour in Flames, return a land you control to its owner's hand.$Devour in Flames deals 5 damage to target creature or planeswalker.| Embodiment of Fury|Oath of the Gatewatch|107|U|{3}{R}|Creature - Elemental|4|3|Trample$Land creatures you control have trample.$Landfall - Whenever a land enters the battlefield under your control, you may have target land you control become a 3/3 Elemental creature with haste until end of turn. It's still a land.| Expedite|Oath of the Gatewatch|108|C|{R}|Instant|||Target creature gains haste until end of turn.$Draw a card.| Fall of the Titans|Oath of the Gatewatch|109|R|{X}{X}{R}|Instant|||Surge {X}{R} (You may cast this spell for its surge cost if you or a teammate has cast another spell this turn.)$Fall of the Titans deals X damage to each of up to two target creatures and/or players.|