From bbe2bbd9658c4b9b6e592f51930b24bbde40f559 Mon Sep 17 00:00:00 2001 From: LevelX <ludwig.hirth@gmail> Date: Mon, 26 Dec 2011 14:58:38 +0100 Subject: [PATCH] Fixes [CHK] Earthshaker - fixed ability to damage all w/o flying, [CHK] Zuberas - fixed text string, [CON] Scepter of Fugue - fixed Target, some minor text/comment fixes --- .../sets/championsofkamigawa/Earthshaker.java | 159 ++++++----- .../FloatingDreamZubera.java | 270 +++++++++--------- .../championsofkamigawa/Frostwielder.java | 3 +- .../SachiDaughterOfSeshiro.java | 168 +++++------ .../SilentChantZubera.java | 194 ++++++------- .../src/mage/sets/conflux/ScepterOfFugue.java | 143 +++++----- .../sets/zendikar/ObNixilisTheFallen.java | 147 +++++----- 7 files changed, 541 insertions(+), 543 deletions(-) diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/Earthshaker.java b/Mage.Sets/src/mage/sets/championsofkamigawa/Earthshaker.java index f088e95fcc..440bfd1b70 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/Earthshaker.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/Earthshaker.java @@ -1,78 +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.championsofkamigawa; - -import java.util.UUID; - -import mage.Constants.CardType; -import mage.Constants.Rarity; -import mage.MageInt; -import mage.abilities.Ability; -import mage.abilities.common.SpellCastTriggeredAbility; -import mage.abilities.effects.common.DamageTargetEffect; -import mage.cards.CardImpl; -import mage.filter.Filter; -import mage.filter.FilterCard; -import mage.target.common.TargetCreatureOrPlayer; - -/** - * @author Loki - */ -public class Earthshaker extends CardImpl<Earthshaker> { - - private final static FilterCard filter = new FilterCard("a Spirit or Arcane spell"); - - static { - filter.getSubtype().add("Spirit"); - filter.getSubtype().add("Arcane"); - filter.setScopeSubtype(Filter.ComparisonScope.Any); - } - - public Earthshaker(UUID ownerId) { - super(ownerId, 165, "Earthshaker", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{4}{R}{R}"); - this.expansionSetCode = "CHK"; - this.subtype.add("Spirit"); - this.color.setRed(true); - this.power = new MageInt(4); - this.toughness = new MageInt(5); - Ability ability = new SpellCastTriggeredAbility(new DamageTargetEffect(2), filter, false); - ability.addTarget(new TargetCreatureOrPlayer()); - this.addAbility(ability); - } - - public Earthshaker(final Earthshaker card) { - super(card); - } - - @Override - public Earthshaker copy() { - return new Earthshaker(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.championsofkamigawa; + +import java.util.UUID; + +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SpellCastTriggeredAbility; +import mage.abilities.dynamicvalue.common.StaticValue; +import mage.abilities.effects.common.DamageAllEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.filter.Filter; +import mage.filter.FilterCard; +import mage.filter.common.FilterCreaturePermanent; + +/** + * @author Loki + */ +public class Earthshaker extends CardImpl<Earthshaker> { + + private final static FilterCard spellFilter = new FilterCard("a Spirit or Arcane spell"); + private final static FilterCreaturePermanent creatureFilter = new FilterCreaturePermanent("creature without flying"); + + static { + spellFilter.getSubtype().add("Spirit"); + spellFilter.getSubtype().add("Arcane"); + spellFilter.setScopeSubtype(Filter.ComparisonScope.Any); + creatureFilter.getAbilities().add((Ability) FlyingAbility.getInstance()); + creatureFilter.setNotAbilities(true); + } + + public Earthshaker(UUID ownerId) { + super(ownerId, 165, "Earthshaker", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{4}{R}{R}"); + this.expansionSetCode = "CHK"; + this.subtype.add("Spirit"); + this.color.setRed(true); + this.power = new MageInt(4); + this.toughness = new MageInt(5); + this.addAbility(new SpellCastTriggeredAbility(new DamageAllEffect(new StaticValue(2) , creatureFilter), spellFilter, false)); + } + + public Earthshaker(final Earthshaker card) { + super(card); + } + + @Override + public Earthshaker copy() { + return new Earthshaker(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/FloatingDreamZubera.java b/Mage.Sets/src/mage/sets/championsofkamigawa/FloatingDreamZubera.java index 23b93b5576..70f9bf5e62 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/FloatingDreamZubera.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/FloatingDreamZubera.java @@ -1,136 +1,136 @@ -/* - * 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.championsofkamigawa; - -import java.util.UUID; - -import mage.Constants; -import mage.Constants.CardType; -import mage.Constants.Rarity; -import mage.Constants.WatcherScope; -import mage.MageInt; -import mage.abilities.Ability; -import mage.abilities.common.DiesTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.effects.common.DrawCardControllerEffect; -import mage.cards.Card; -import mage.cards.CardImpl; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.ZoneChangeEvent; -import mage.watchers.WatcherImpl; - -/** - * @author Loki - */ -public class FloatingDreamZubera extends CardImpl<FloatingDreamZubera> { - - public FloatingDreamZubera(UUID ownerId) { - super(ownerId, 61, "Floating-Dream Zubera", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{U}"); - this.expansionSetCode = "CHK"; - this.subtype.add("Zubera"); - this.subtype.add("Spirit"); - this.color.setBlue(true); - this.power = new MageInt(1); - this.toughness = new MageInt(2); - this.addAbility(new DiesTriggeredAbility(new DrawCardControllerEffect(new ZuberasDiedDynamicValue()))); - this.addWatcher(new ZuberasDiedWatcher()); - } - - public FloatingDreamZubera(final FloatingDreamZubera card) { - super(card); - } - - @Override - public FloatingDreamZubera copy() { - return new FloatingDreamZubera(this); - } - -} - - -class ZuberasDiedWatcher extends WatcherImpl<ZuberasDiedWatcher> { - - public int zuberasDiedThisTurn = 0; - - public ZuberasDiedWatcher() { - super("ZuberasDied", WatcherScope.GAME); - } - - public ZuberasDiedWatcher(final ZuberasDiedWatcher watcher) { - super(watcher); - this.zuberasDiedThisTurn = watcher.zuberasDiedThisTurn; - } - - @Override - public ZuberasDiedWatcher copy() { - return new ZuberasDiedWatcher(this); - } - - @Override - public void watch(GameEvent event, Game game) { - if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent) event).isDiesEvent()) { - Card card = game.getLastKnownInformation(event.getTargetId(), Constants.Zone.BATTLEFIELD); - if (card != null && card.hasSubtype("Zubera")) { - zuberasDiedThisTurn++; - } - } - } - - @Override - public void reset() { - super.reset(); - zuberasDiedThisTurn = 0; - } - -} - -class ZuberasDiedDynamicValue implements DynamicValue { - - @Override - public int calculate(Game game, Ability sourceAbility) { - ZuberasDiedWatcher watcher = (ZuberasDiedWatcher) game.getState().getWatchers().get("ZuberasDied"); - return watcher.zuberasDiedThisTurn; - } - - @Override - public ZuberasDiedDynamicValue clone() { - return new ZuberasDiedDynamicValue(); - } - - @Override - public String toString() { - return "1"; - } - - @Override - public String getMessage() { - return "for each Zubera that died this turn"; - } +/* + * 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.championsofkamigawa; + +import java.util.UUID; + +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.WatcherScope; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DiesTriggeredAbility; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.common.DrawCardControllerEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.ZoneChangeEvent; +import mage.watchers.WatcherImpl; + +/** + * @author Loki + */ +public class FloatingDreamZubera extends CardImpl<FloatingDreamZubera> { + + public FloatingDreamZubera(UUID ownerId) { + super(ownerId, 61, "Floating-Dream Zubera", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{U}"); + this.expansionSetCode = "CHK"; + this.subtype.add("Zubera"); + this.subtype.add("Spirit"); + this.color.setBlue(true); + this.power = new MageInt(1); + this.toughness = new MageInt(2); + this.addAbility(new DiesTriggeredAbility(new DrawCardControllerEffect(new ZuberasDiedDynamicValue()))); + this.addWatcher(new ZuberasDiedWatcher()); + } + + public FloatingDreamZubera(final FloatingDreamZubera card) { + super(card); + } + + @Override + public FloatingDreamZubera copy() { + return new FloatingDreamZubera(this); + } + +} + + +class ZuberasDiedWatcher extends WatcherImpl<ZuberasDiedWatcher> { + + public int zuberasDiedThisTurn = 0; + + public ZuberasDiedWatcher() { + super("ZuberasDied", WatcherScope.GAME); + } + + public ZuberasDiedWatcher(final ZuberasDiedWatcher watcher) { + super(watcher); + this.zuberasDiedThisTurn = watcher.zuberasDiedThisTurn; + } + + @Override + public ZuberasDiedWatcher copy() { + return new ZuberasDiedWatcher(this); + } + + @Override + public void watch(GameEvent event, Game game) { + if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent) event).isDiesEvent()) { + Card card = game.getLastKnownInformation(event.getTargetId(), Constants.Zone.BATTLEFIELD); + if (card != null && card.hasSubtype("Zubera")) { + zuberasDiedThisTurn++; + } + } + } + + @Override + public void reset() { + super.reset(); + zuberasDiedThisTurn = 0; + } + +} + +class ZuberasDiedDynamicValue implements DynamicValue { + + @Override + public int calculate(Game game, Ability sourceAbility) { + ZuberasDiedWatcher watcher = (ZuberasDiedWatcher) game.getState().getWatchers().get("ZuberasDied"); + return watcher.zuberasDiedThisTurn; + } + + @Override + public ZuberasDiedDynamicValue clone() { + return new ZuberasDiedDynamicValue(); + } + + @Override + public String toString() { + return "1"; + } + + @Override + public String getMessage() { + return "Zubera that died this turn"; + } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/Frostwielder.java b/Mage.Sets/src/mage/sets/championsofkamigawa/Frostwielder.java index 0dc2a1abe9..4b7311ccaa 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/Frostwielder.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/Frostwielder.java @@ -76,9 +76,8 @@ public class Frostwielder extends CardImpl<Frostwielder> { // {T}: Frostwielder deals 1 damage to target creature or player. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost()); - - // If a creature dealt damage by Frostwielder this turn would die, exile it instead. ability.addTarget(new TargetCreatureOrPlayer()); + // If a creature dealt damage by Frostwielder this turn would die, exile it instead. this.addAbility(ability); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new FrostwielderEffect())); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SachiDaughterOfSeshiro.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SachiDaughterOfSeshiro.java index 39b66cf712..353bda2e05 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SachiDaughterOfSeshiro.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SachiDaughterOfSeshiro.java @@ -1,83 +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.championsofkamigawa; - -import java.util.UUID; - -import mage.Constants; -import mage.Constants.CardType; -import mage.Constants.Rarity; -import mage.MageInt; -import mage.Mana; -import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.effects.common.BasicManaEffect; -import mage.abilities.effects.common.continious.BoostControlledEffect; -import mage.abilities.effects.common.continious.GainAbilityControlledEffect; -import mage.cards.CardImpl; -import mage.filter.common.FilterCreaturePermanent; - -/** - * @author Loki - */ -public class SachiDaughterOfSeshiro extends CardImpl<SachiDaughterOfSeshiro> { - - - private final static FilterCreaturePermanent snakeFilter = new FilterCreaturePermanent("Snakes"); - private final static FilterCreaturePermanent shamanFilter = new FilterCreaturePermanent("Smahans"); - - static { - snakeFilter.getSubtype().add("Snake"); - shamanFilter.getSubtype().add("Shaman"); - } - - public SachiDaughterOfSeshiro(UUID ownerId) { - super(ownerId, 238, "Sachi, Daughter of Seshiro", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); - this.expansionSetCode = "CHK"; - this.supertype.add("Legendary"); - this.subtype.add("Snake"); - this.subtype.add("Shaman"); - this.color.setGreen(true); - this.power = new MageInt(1); - this.toughness = new MageInt(3); - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new BoostControlledEffect(0, 1, Constants.Duration.WhileOnBattlefield, snakeFilter, true))); - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new GainAbilityControlledEffect(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new BasicManaEffect(new Mana(0, 2, 0, 0, 0, 0, 0)), new TapSourceCost()), Constants.Duration.WhileOnBattlefield, shamanFilter, false))); - } - - public SachiDaughterOfSeshiro(final SachiDaughterOfSeshiro card) { - super(card); - } - - @Override - public SachiDaughterOfSeshiro copy() { - return new SachiDaughterOfSeshiro(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.championsofkamigawa; + +import java.util.UUID; + +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.Mana; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.BasicManaEffect; +import mage.abilities.effects.common.continious.BoostControlledEffect; +import mage.abilities.effects.common.continious.GainAbilityControlledEffect; +import mage.cards.CardImpl; +import mage.filter.common.FilterCreaturePermanent; + +/** + * @author Loki + */ +public class SachiDaughterOfSeshiro extends CardImpl<SachiDaughterOfSeshiro> { + + + private final static FilterCreaturePermanent snakeFilter = new FilterCreaturePermanent("Snakes"); + private final static FilterCreaturePermanent shamanFilter = new FilterCreaturePermanent("Shamans"); + + static { + snakeFilter.getSubtype().add("Snake"); + shamanFilter.getSubtype().add("Shaman"); + } + + public SachiDaughterOfSeshiro(UUID ownerId) { + super(ownerId, 238, "Sachi, Daughter of Seshiro", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); + this.expansionSetCode = "CHK"; + this.supertype.add("Legendary"); + this.subtype.add("Snake"); + this.subtype.add("Shaman"); + this.color.setGreen(true); + this.power = new MageInt(1); + this.toughness = new MageInt(3); + // Other Snake creatures you control get +0/+1. + this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new BoostControlledEffect(0, 1, Constants.Duration.WhileOnBattlefield, snakeFilter, true))); + // Shamans you control have "{T}: Add {G}{G} to your mana pool." + this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new GainAbilityControlledEffect(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new BasicManaEffect(new Mana(0, 2, 0, 0, 0, 0, 0)), new TapSourceCost()), Constants.Duration.WhileOnBattlefield, shamanFilter, false))); + } + + public SachiDaughterOfSeshiro(final SachiDaughterOfSeshiro card) { + super(card); + } + + @Override + public SachiDaughterOfSeshiro copy() { + return new SachiDaughterOfSeshiro(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SilentChantZubera.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SilentChantZubera.java index a360f7f659..fe8ac06c84 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SilentChantZubera.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SilentChantZubera.java @@ -1,101 +1,95 @@ -/* - * 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.championsofkamigawa; - -import java.util.UUID; - -import mage.Constants; -import mage.Constants.CardType; -import mage.Constants.Rarity; -import mage.MageInt; -import mage.abilities.Ability; -import mage.abilities.common.DiesTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.effects.common.GainLifeEffect; -import mage.cards.Card; -import mage.cards.CardImpl; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.ZoneChangeEvent; -import mage.watchers.Watcher; -import mage.watchers.WatcherImpl; - -/** - * - * @author Loki - */ -public class SilentChantZubera extends CardImpl<SilentChantZubera> { - - public SilentChantZubera (UUID ownerId) { - super(ownerId, 45, "Silent-Chant Zubera", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}"); - this.expansionSetCode = "CHK"; - this.subtype.add("Zubera"); - this.subtype.add("Spirit"); - this.color.setWhite(true); - this.power = new MageInt(1); - this.toughness = new MageInt(2); - Ability ability = new DiesTriggeredAbility(new GainLifeEffect(new SilentChantZuberaDynamicValue())); - this.addAbility(ability); - this.addWatcher(new ZuberasDiedWatcher()); - } - - public SilentChantZubera (final SilentChantZubera card) { - super(card); - } - - @Override - public SilentChantZubera copy() { - return new SilentChantZubera(this); - } - -} - -class SilentChantZuberaDynamicValue implements DynamicValue { - - @Override - public int calculate(Game game, Ability sourceAbility) { - ZuberasDiedWatcher watcher = (ZuberasDiedWatcher) game.getState().getWatchers().get("ZuberasDied"); - return watcher.zuberasDiedThisTurn * 2; - } - - @Override - public SilentChantZuberaDynamicValue clone() { - return new SilentChantZuberaDynamicValue(); - } - - @Override - public String toString() { - return "2"; - } - - @Override - public String getMessage() { - return "for each Zubera that died this turn"; - } +/* + * 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.championsofkamigawa; + +import java.util.UUID; + +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DiesTriggeredAbility; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.common.GainLifeEffect; +import mage.cards.CardImpl; +import mage.game.Game; + +/** + * + * @author Loki + */ +public class SilentChantZubera extends CardImpl<SilentChantZubera> { + + public SilentChantZubera (UUID ownerId) { + super(ownerId, 45, "Silent-Chant Zubera", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}"); + this.expansionSetCode = "CHK"; + this.subtype.add("Zubera"); + this.subtype.add("Spirit"); + this.color.setWhite(true); + this.power = new MageInt(1); + this.toughness = new MageInt(2); + Ability ability = new DiesTriggeredAbility(new GainLifeEffect(new SilentChantZuberaDynamicValue())); + this.addAbility(ability); + this.addWatcher(new ZuberasDiedWatcher()); + } + + public SilentChantZubera (final SilentChantZubera card) { + super(card); + } + + @Override + public SilentChantZubera copy() { + return new SilentChantZubera(this); + } + +} + +class SilentChantZuberaDynamicValue implements DynamicValue { + + @Override + public int calculate(Game game, Ability sourceAbility) { + ZuberasDiedWatcher watcher = (ZuberasDiedWatcher) game.getState().getWatchers().get("ZuberasDied"); + return watcher.zuberasDiedThisTurn * 2; + } + + @Override + public SilentChantZuberaDynamicValue clone() { + return new SilentChantZuberaDynamicValue(); + } + + @Override + public String toString() { + return "2"; + } + + @Override + public String getMessage() { + return "Zubera that died this turn"; + } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/conflux/ScepterOfFugue.java b/Mage.Sets/src/mage/sets/conflux/ScepterOfFugue.java index b9fa67e25a..9a3406870e 100644 --- a/Mage.Sets/src/mage/sets/conflux/ScepterOfFugue.java +++ b/Mage.Sets/src/mage/sets/conflux/ScepterOfFugue.java @@ -1,71 +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.conflux; - -import java.util.UUID; - -import mage.Constants; -import mage.Constants.CardType; -import mage.Constants.Rarity; -import mage.abilities.Ability; -import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.costs.common.DiscardTargetCost; -import mage.abilities.costs.common.OnlyDuringYourTurnCost; -import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.DiscardTargetEffect; -import mage.cards.CardImpl; - -/** - * - * @author Loki - */ -public class ScepterOfFugue extends CardImpl<ScepterOfFugue> { - - public ScepterOfFugue(UUID ownerId) { - super(ownerId, 53, "Scepter of Fugue", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{B}{B}"); - this.expansionSetCode = "CON"; - - this.color.setBlack(true); - - // {1}{B}, {tap}: Target player discards a card. Activate this ability only during your turn. - Ability ability = new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new DiscardTargetEffect(1), new ManaCostsImpl("{1}{B}")); - ability.addCost(new TapSourceCost()); - ability.addCost(new OnlyDuringYourTurnCost()); - this.addAbility(ability); - } - - public ScepterOfFugue(final ScepterOfFugue card) { - super(card); - } - - @Override - public ScepterOfFugue copy() { - return new ScepterOfFugue(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.conflux; + +import java.util.UUID; + +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.OnlyDuringYourTurnCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.DiscardTargetEffect; +import mage.cards.CardImpl; +import mage.target.TargetPlayer; + +/** + * + * @author Loki + */ +public class ScepterOfFugue extends CardImpl<ScepterOfFugue> { + + public ScepterOfFugue(UUID ownerId) { + super(ownerId, 53, "Scepter of Fugue", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{B}{B}"); + this.expansionSetCode = "CON"; + + this.color.setBlack(true); + + // {1}{B}, {tap}: Target player discards a card. Activate this ability only during your turn. + Ability ability = new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new DiscardTargetEffect(1), new ManaCostsImpl("{1}{B}")); + ability.addCost(new TapSourceCost()); + ability.addCost(new OnlyDuringYourTurnCost()); + ability.addTarget(new TargetPlayer()); + this.addAbility(ability); + } + + public ScepterOfFugue(final ScepterOfFugue card) { + super(card); + } + + @Override + public ScepterOfFugue copy() { + return new ScepterOfFugue(this); + } +} diff --git a/Mage.Sets/src/mage/sets/zendikar/ObNixilisTheFallen.java b/Mage.Sets/src/mage/sets/zendikar/ObNixilisTheFallen.java index 8f1c22a9d0..f28f762115 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ObNixilisTheFallen.java +++ b/Mage.Sets/src/mage/sets/zendikar/ObNixilisTheFallen.java @@ -1,74 +1,73 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ - -package mage.sets.zendikar; - -import mage.Constants.CardType; -import mage.Constants.Rarity; -import mage.MageInt; -import mage.abilities.Ability; -import mage.abilities.common.LandfallAbility; -import mage.abilities.effects.common.LoseLifeTargetEffect; -import mage.abilities.effects.common.counter.AddCountersSourceEffect; -import mage.cards.CardImpl; -import mage.counters.CounterType; -import mage.target.TargetPlayer; - -import java.util.UUID; - -/** - * - * @author Loki - */ -public class ObNixilisTheFallen extends CardImpl<ObNixilisTheFallen> { - - public ObNixilisTheFallen (UUID ownerId) { - super(ownerId, 107, "Ob Nixilis, the Fallen", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{3}{B}{B}"); - this.expansionSetCode = "ZEN"; - this.supertype.add("Legendary"); - this.subtype.add("Demon"); - this.color.setBlack(true); - this.power = new MageInt(3); - this.toughness = new MageInt(3); - - // Landfall - Whenever a land enters the battlefield under your control, you may have target player lose 3 life. If you do, put three +1/+1 counters on Ob Nixilis, the Fallen. - Ability ability = new LandfallAbility(new LoseLifeTargetEffect(3), true); - ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3))); - ability.addTarget(new TargetPlayer()); - this.addAbility(ability); - } - - public ObNixilisTheFallen (final ObNixilisTheFallen card) { - super(card); - } - - @Override - public ObNixilisTheFallen copy() { - return new ObNixilisTheFallen(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.zendikar; + +import java.util.UUID; + +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.LandfallAbility; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.common.LoseLifeTargetEffect; +import mage.cards.CardImpl; +import mage.counters.CounterType; +import mage.target.TargetPlayer; + +/** + * + * @author Loki + */ +public class ObNixilisTheFallen extends CardImpl<ObNixilisTheFallen> { + + public ObNixilisTheFallen (UUID ownerId) { + super(ownerId, 107, "Ob Nixilis, the Fallen", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{3}{B}{B}"); + this.expansionSetCode = "ZEN"; + this.supertype.add("Legendary"); + this.subtype.add("Demon"); + this.color.setBlack(true); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + Ability ability = new LandfallAbility(new LoseLifeTargetEffect(3), true); + ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3))); + ability.addTarget(new TargetPlayer()); + this.addAbility(ability); + } + + public ObNixilisTheFallen (final ObNixilisTheFallen card) { + super(card); + } + + @Override + public ObNixilisTheFallen copy() { + return new ObNixilisTheFallen(this); + } +}