diff --git a/Mage.Sets/src/mage/sets/innistrad/FalkenrathNoble.java b/Mage.Sets/src/mage/sets/innistrad/FalkenrathNoble.java index 727ace7536..ddf4153861 100644 --- a/Mage.Sets/src/mage/sets/innistrad/FalkenrathNoble.java +++ b/Mage.Sets/src/mage/sets/innistrad/FalkenrathNoble.java @@ -1,117 +1,117 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ -package mage.sets.innistrad; - -import java.util.UUID; -import mage.Constants.CardType; -import mage.Constants.Rarity; -import mage.Constants.Zone; -import mage.MageInt; -import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.effects.common.GainLifeEffect; -import mage.abilities.effects.common.LoseLifeTargetEffect; -import mage.abilities.keyword.FlyingAbility; -import mage.cards.CardImpl; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.ZoneChangeEvent; -import mage.game.permanent.Permanent; -import mage.target.TargetPlayer; - -/** - * - * @author North - */ -public class FalkenrathNoble extends CardImpl { - - public FalkenrathNoble(UUID ownerId) { - super(ownerId, 100, "Falkenrath Noble", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{B}"); - this.expansionSetCode = "ISD"; - this.subtype.add("Vampire"); - - this.color.setBlack(true); - this.power = new MageInt(2); - this.toughness = new MageInt(2); - - this.addAbility(FlyingAbility.getInstance()); - // Whenever Falkenrath Noble or another creature dies, target player loses 1 life and you gain 1 life. - this.addAbility(new FalkenrathNobleTriggeredAbility()); - } - - public FalkenrathNoble(final FalkenrathNoble card) { - super(card); - } - - @Override - public FalkenrathNoble copy() { - return new FalkenrathNoble(this); - } -} - -class FalkenrathNobleTriggeredAbility extends TriggeredAbilityImpl { - - public FalkenrathNobleTriggeredAbility() { - super(Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), false); - this.addEffect(new GainLifeEffect(1)); - this.addTarget(new TargetPlayer()); - } - - public FalkenrathNobleTriggeredAbility(final FalkenrathNobleTriggeredAbility ability) { - super(ability); - } - - @Override - public FalkenrathNobleTriggeredAbility copy() { - return new FalkenrathNobleTriggeredAbility(this); - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { - ZoneChangeEvent zEvent = (ZoneChangeEvent) event; - if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) { - Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD); - if (permanent != null) { - if (permanent.getId().equals(this.getSourceId())) { - return true; - } else { - if (permanent.getCardType().contains(CardType.CREATURE)) { - return true; - } - } - } - } - } - return false; - } - - @Override - public String getRule() { - return "Whenever {this} or another creature dies, target player loses 1 life and you gain 1 life."; - } -} +/* + * 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.innistrad; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.effects.common.LoseLifeTargetEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.ZoneChangeEvent; +import mage.game.permanent.Permanent; +import mage.target.TargetPlayer; + +/** + * + * @author North + */ +public class FalkenrathNoble extends CardImpl { + + public FalkenrathNoble(UUID ownerId) { + super(ownerId, 100, "Falkenrath Noble", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{B}"); + this.expansionSetCode = "ISD"; + this.subtype.add("Vampire"); + + this.color.setBlack(true); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + this.addAbility(FlyingAbility.getInstance()); + // Whenever Falkenrath Noble or another creature dies, target player loses 1 life and you gain 1 life. + this.addAbility(new FalkenrathNobleTriggeredAbility()); + } + + public FalkenrathNoble(final FalkenrathNoble card) { + super(card); + } + + @Override + public FalkenrathNoble copy() { + return new FalkenrathNoble(this); + } +} + +class FalkenrathNobleTriggeredAbility extends TriggeredAbilityImpl { + + public FalkenrathNobleTriggeredAbility() { + super(Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), false); + this.addEffect(new GainLifeEffect(1)); + this.addTarget(new TargetPlayer(true)); + } + + public FalkenrathNobleTriggeredAbility(final FalkenrathNobleTriggeredAbility ability) { + super(ability); + } + + @Override + public FalkenrathNobleTriggeredAbility copy() { + return new FalkenrathNobleTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { + ZoneChangeEvent zEvent = (ZoneChangeEvent) event; + if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) { + Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD); + if (permanent != null) { + if (permanent.getId().equals(this.getSourceId())) { + return true; + } else { + if (permanent.getCardType().contains(CardType.CREATURE)) { + return true; + } + } + } + } + } + return false; + } + + @Override + public String getRule() { + return "Whenever {this} or another creature dies, target player loses 1 life and you gain 1 life."; + } +} diff --git a/Mage.Sets/src/mage/sets/innistrad/WitchbaneOrb.java b/Mage.Sets/src/mage/sets/innistrad/WitchbaneOrb.java index dbccd21567..3e2bf7d6ba 100644 --- a/Mage.Sets/src/mage/sets/innistrad/WitchbaneOrb.java +++ b/Mage.Sets/src/mage/sets/innistrad/WitchbaneOrb.java @@ -1,104 +1,105 @@ -/* - * 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.innistrad; - -import java.util.UUID; -import mage.Constants.CardType; -import mage.Constants.Outcome; -import mage.Constants.Rarity; -import mage.Constants.Zone; -import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.continious.GainAbilityControllerEffect; -import mage.abilities.keyword.HexproofAbility; -import mage.cards.CardImpl; -import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.players.Player; - -/** - * - * @author BetaSteward - */ -public class WitchbaneOrb extends CardImpl { - - public WitchbaneOrb(UUID ownerId) { - super(ownerId, 236, "Witchbane Orb", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{4}"); - this.expansionSetCode = "ISD"; - - // When Witchbane Orb enters the battlefield, destroy all Curses attached to you. - this.addAbility(new EntersBattlefieldTriggeredAbility(new WitchbaneOrbEffect())); - - // You have hexproof. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControllerEffect(HexproofAbility.getInstance()))); - - } - - public WitchbaneOrb(final WitchbaneOrb card) { - super(card); - } - - @Override - public WitchbaneOrb copy() { - return new WitchbaneOrb(this); - } -} - -class WitchbaneOrbEffect extends OneShotEffect { - - public WitchbaneOrbEffect() { - super(Outcome.Protect); - } - - public WitchbaneOrbEffect(final WitchbaneOrbEffect effect) { - super(effect); - } - - @Override - public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(source.getControllerId()); - if (player != null) { - for (UUID attachmentId: player.getAttachments()) { - Permanent attachment = game.getPermanent(attachmentId); - if (attachment != null && attachment.getSubtype().contains("Curse")) { - attachment.destroy(source.getSourceId(), game, false); - } - } - return true; - } - return false; - } - - @Override - public WitchbaneOrbEffect copy() { - return new WitchbaneOrbEffect(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.innistrad; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.continious.GainAbilityControllerEffect; +import mage.abilities.keyword.HexproofAbility; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; + +/** + * + * @author BetaSteward + */ +public class WitchbaneOrb extends CardImpl { + + public WitchbaneOrb(UUID ownerId) { + super(ownerId, 236, "Witchbane Orb", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{4}"); + this.expansionSetCode = "ISD"; + + // When Witchbane Orb enters the battlefield, destroy all Curses attached to you. + this.addAbility(new EntersBattlefieldTriggeredAbility(new WitchbaneOrbEffect())); + + // You have hexproof. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControllerEffect(HexproofAbility.getInstance()))); + + } + + public WitchbaneOrb(final WitchbaneOrb card) { + super(card); + } + + @Override + public WitchbaneOrb copy() { + return new WitchbaneOrb(this); + } +} + +class WitchbaneOrbEffect extends OneShotEffect { + + public WitchbaneOrbEffect() { + super(Outcome.Protect); + staticText = "destroy all Curses attached to you"; + } + + public WitchbaneOrbEffect(final WitchbaneOrbEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player != null) { + for (UUID attachmentId: player.getAttachments()) { + Permanent attachment = game.getPermanent(attachmentId); + if (attachment != null && attachment.getSubtype().contains("Curse")) { + attachment.destroy(source.getSourceId(), game, false); + } + } + return true; + } + return false; + } + + @Override + public WitchbaneOrbEffect copy() { + return new WitchbaneOrbEffect(this); + } + } \ No newline at end of file