diff --git a/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java new file mode 100644 index 00000000000..285c2c44a58 --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.costs.AlternativeCostImpl; +import mage.abilities.costs.CompositeCost; +import mage.abilities.costs.Cost; +import mage.abilities.costs.common.ReturnToHandTargetCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.mana.BlueManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; +import mage.filter.Filter; +import mage.filter.common.FilterControlledPermanent; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author Loki + */ +public class FieldmistBorderpost extends CardImpl { + private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + + private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; + private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Fieldmist Borderpost's mana cost"; + + static { + filter.getSupertype().add("Basic"); + filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.getCardType().add(CardType.LAND); + filter.setScopeCardType(Filter.ComparisonScope.Any); + } + + public FieldmistBorderpost (UUID ownerId) { + super(ownerId, 5, "Fieldmist Borderpost", Rarity.COMMON, new CardType[]{CardType.ARTIFACT}, "{1}{W}{U}"); + this.expansionSetCode = "ARB"; + this.color.setWhite(true); + this.color.setBlue(true); + Cost cost = new CompositeCost(new GenericManaCost(1), new ReturnToHandTargetCost(new TargetControlledPermanent(filter)), COST_DESCRIPTION); + this.getSpellAbility().addAlternativeCost(new AlternativeCostImpl(ALTERNATIVE_COST_DESCRIPTION, cost)); + this.addAbility(new EntersBattlefieldTappedAbility()); + this.addAbility(new WhiteManaAbility()); + this.addAbility(new BlueManaAbility()); + } + + public FieldmistBorderpost (final FieldmistBorderpost card) { + super(card); + } + + @Override + public FieldmistBorderpost copy() { + return new FieldmistBorderpost(this); + } +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java new file mode 100644 index 00000000000..384bc4169e1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.costs.AlternativeCostImpl; +import mage.abilities.costs.CompositeCost; +import mage.abilities.costs.Cost; +import mage.abilities.costs.common.ReturnToHandTargetCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.mana.GreenManaAbility; +import mage.abilities.mana.RedManaAbility; +import mage.cards.CardImpl; +import mage.filter.Filter; +import mage.filter.common.FilterControlledPermanent; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author Loki + */ +public class FirewildBorderpost extends CardImpl { + private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + + private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; + private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Firewild Borderpost's mana cost"; + + static { + filter.getSupertype().add("Basic"); + filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.getCardType().add(CardType.LAND); + filter.setScopeCardType(Filter.ComparisonScope.Any); + } + + public FirewildBorderpost (UUID ownerId) { + super(ownerId, 54, "Firewild Borderpost", Rarity.COMMON, new CardType[]{CardType.ARTIFACT}, "{1}{R}{G}"); + this.expansionSetCode = "ARB"; + this.color.setRed(true); + this.color.setGreen(true); + Cost cost = new CompositeCost(new GenericManaCost(1), new ReturnToHandTargetCost(new TargetControlledPermanent(filter)), COST_DESCRIPTION); + this.getSpellAbility().addAlternativeCost(new AlternativeCostImpl(ALTERNATIVE_COST_DESCRIPTION, cost)); + this.addAbility(new EntersBattlefieldTappedAbility()); + this.addAbility(new RedManaAbility()); + this.addAbility(new GreenManaAbility()); + } + + public FirewildBorderpost (final FirewildBorderpost card) { + super(card); + } + + @Override + public FirewildBorderpost copy() { + return new FirewildBorderpost(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/GloryofWarfare.java b/Mage.Sets/src/mage/sets/alarareborn/GloryofWarfare.java new file mode 100644 index 00000000000..94c9827fbd4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/GloryofWarfare.java @@ -0,0 +1,72 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.alarareborn; + +import java.util.UUID; + +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.common.MyTurn; +import mage.abilities.condition.common.NotMyTurn; +import mage.abilities.decorator.ConditionalEffect; +import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.effects.common.BoostControlledEffect; +import mage.cards.CardImpl; +import mage.game.Game; + +/** + * + * @author Loki + */ +public class GloryofWarfare extends CardImpl { + + public GloryofWarfare (UUID ownerId) { + super(ownerId, 98, "Glory of Warfare", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{W}"); + this.expansionSetCode = "ARB"; + this.subtype.add("Enchantment"); + this.color.setRed(true); + this.color.setWhite(true); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalEffect(new BoostControlledEffect(2, 0, Duration.EndOfTurn), MyTurn.getInstance(), "As long as it's your turn, creatures you control get +2/+0"))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalEffect(new BoostControlledEffect(0, 2, Duration.EndOfTurn), NotMyTurn.getInstance(), "As long as it's not your turn, creatures you control get +0/+2"))); + } + + public GloryofWarfare (final GloryofWarfare card) { + super(card); + } + + @Override + public GloryofWarfare copy() { + return new GloryofWarfare(this); + } +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/GloryscaleViashino.java b/Mage.Sets/src/mage/sets/alarareborn/GloryscaleViashino.java new file mode 100644 index 00000000000..54e1da1847e --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/GloryscaleViashino.java @@ -0,0 +1,104 @@ +/* + * 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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.TriggeredAbility; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.BoostSourceEffect; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.stack.Spell; + +/** + * + * @author Loki + */ +public class GloryscaleViashino extends CardImpl { + + public GloryscaleViashino (UUID ownerId) { + super(ownerId, 120, "Gloryscale Viashino", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{R}{G}{W}"); + this.expansionSetCode = "ARB"; + this.subtype.add("Viashino"); + this.subtype.add("Soldier"); + this.color.setRed(true); + this.color.setGreen(true); + this.color.setWhite(true); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + this.addAbility(new GloryscaleViashinoAbility()); + } + + public GloryscaleViashino (final GloryscaleViashino card) { + super(card); + } + + @Override + public GloryscaleViashino copy() { + return new GloryscaleViashino(this); + } + +} + +class GloryscaleViashinoAbility extends TriggeredAbilityImpl { + public GloryscaleViashinoAbility() { + super(Zone.BATTLEFIELD, new BoostSourceEffect(3, 3, Duration.EndOfTurn)); + } + + public GloryscaleViashinoAbility(final GloryscaleViashinoAbility ability) { + super(ability); + } + + @Override + public GloryscaleViashinoAbility copy() { + return new GloryscaleViashinoAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getType() == GameEvent.EventType.SPELL_CAST) { + Spell spell = game.getStack().getSpell(event.getTargetId()); + if (spell != null && spell.getColor().isMulticolored() && event.getPlayerId().equals(getControllerId())) { + return true; + } + } + return false; + } + + @Override + public String getRule() { + return "Whenever you cast a multicolored spell, Gloryscale Viashino gets +3/+3 until end of turn."; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/alarareborn/LorescaleCoatl.java b/Mage.Sets/src/mage/sets/alarareborn/LorescaleCoatl.java new file mode 100644 index 00000000000..59cd036ae08 --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/LorescaleCoatl.java @@ -0,0 +1,96 @@ +/* + * 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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.AddPlusOneCountersSourceEffect; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; + +/** + * + * @author Loki + */ +public class LorescaleCoatl extends CardImpl { + + public LorescaleCoatl (UUID ownerId) { + super(ownerId, 101, "Lorescale Coatl", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{G}{U}"); + this.expansionSetCode = "ARB"; + this.subtype.add("Snake"); + this.color.setGreen(true); + this.color.setBlue(true); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + this.addAbility(new LorescaleCoatlAbility()); + } + + public LorescaleCoatl (final LorescaleCoatl card) { + super(card); + } + + @Override + public LorescaleCoatl copy() { + return new LorescaleCoatl(this); + } +} + +class LorescaleCoatlAbility extends TriggeredAbilityImpl { + public LorescaleCoatlAbility() { + super(Zone.BATTLEFIELD, new AddPlusOneCountersSourceEffect(1), true); + } + + public LorescaleCoatlAbility(final LorescaleCoatlAbility ability) { + super(ability); + } + + @Override + public LorescaleCoatlAbility copy() { + return new LorescaleCoatlAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getType() == GameEvent.EventType.DREW_CARD && event.getPlayerId().equals(controllerId)) { + return true; + } + return false; + } + + @Override + public String getRule() { + return "Whenever you draw a card, you may put a +1/+1 counter on Lorescale Coatl."; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/alarareborn/MadrushCyclops.java b/Mage.Sets/src/mage/sets/alarareborn/MadrushCyclops.java new file mode 100644 index 00000000000..57437a5864b --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/MadrushCyclops.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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.GainAbilityControlledEffect; +import mage.abilities.keyword.HasteAbility; +import mage.cards.CardImpl; +import mage.filter.common.FilterControlledCreaturePermanent; + +/** + * + * @author Loki + */ +public class MadrushCyclops extends CardImpl { + + public MadrushCyclops (UUID ownerId) { + super(ownerId, 119, "Madrush Cyclops", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{B}{R}{G}"); + this.expansionSetCode = "ARB"; + this.subtype.add("Cyclops"); + this.subtype.add("Warrior"); + this.color.setBlack(true); + this.color.setRed(true); + this.color.setGreen(true); + this.power = new MageInt(3); + this.toughness = new MageInt(4); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent()))); + } + + public MadrushCyclops (final MadrushCyclops card) { + super(card); + } + + @Override + public MadrushCyclops copy() { + return new MadrushCyclops(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java new file mode 100644 index 00000000000..f56566e5270 --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java @@ -0,0 +1,88 @@ +/* + * 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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.costs.AlternativeCostImpl; +import mage.abilities.costs.CompositeCost; +import mage.abilities.costs.Cost; +import mage.abilities.costs.common.ReturnToHandTargetCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.mana.BlackManaAbility; +import mage.abilities.mana.BlueManaAbility; +import mage.cards.CardImpl; +import mage.filter.Filter; +import mage.filter.common.FilterControlledPermanent; +import mage.sets.magic2011.BlackKnight; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author Loki + */ +public class MistveinBorderpost extends CardImpl { + private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + + private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; + private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Mistvein Borderpos's mana cost"; + + static { + filter.getSupertype().add("Basic"); + filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.getCardType().add(CardType.LAND); + filter.setScopeCardType(Filter.ComparisonScope.Any); + } + + public MistveinBorderpost (UUID ownerId) { + super(ownerId, 27, "Mistvein Borderpost", Rarity.COMMON, new CardType[]{CardType.ARTIFACT}, "{1}{U}{B}"); + this.expansionSetCode = "ARB"; + this.color.setBlue(true); + this.color.setBlack(true); + Cost cost = new CompositeCost(new GenericManaCost(1), new ReturnToHandTargetCost(new TargetControlledPermanent(filter)), COST_DESCRIPTION); + this.getSpellAbility().addAlternativeCost(new AlternativeCostImpl(ALTERNATIVE_COST_DESCRIPTION, cost)); + this.addAbility(new EntersBattlefieldTappedAbility()); + this.addAbility(new BlueManaAbility()); + this.addAbility(new BlackManaAbility()); + } + + public MistveinBorderpost (final MistveinBorderpost card) { + super(card); + } + + @Override + public MistveinBorderpost copy() { + return new MistveinBorderpost(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/NulltreadGargantuan.java b/Mage.Sets/src/mage/sets/alarareborn/NulltreadGargantuan.java new file mode 100644 index 00000000000..8b170ad7aac --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/NulltreadGargantuan.java @@ -0,0 +1,72 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.PutOnLibraryTargetEffect; +import mage.abilities.effects.common.ReturnToHandTargetEffect; +import mage.cards.CardImpl; +import mage.target.common.TargetControlledCreaturePermanent; + +/** + * + * @author Loki + */ +public class NulltreadGargantuan extends CardImpl { + + public NulltreadGargantuan (UUID ownerId) { + super(ownerId, 102, "Nulltread Gargantuan", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{G}{U}"); + this.expansionSetCode = "ARB"; + this.subtype.add("Beast"); + this.color.setGreen(true); + this.color.setBlue(true); + this.power = new MageInt(5); + this.toughness = new MageInt(6); + Ability ability = new EntersBattlefieldTriggeredAbility(new PutOnLibraryTargetEffect(true), false); + ability.addTarget(new TargetControlledCreaturePermanent()); + this.addAbility(ability); + } + + public NulltreadGargantuan (final NulltreadGargantuan card) { + super(card); + } + + @Override + public NulltreadGargantuan copy() { + return new NulltreadGargantuan(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/SphinxoftheSteelWind.java b/Mage.Sets/src/mage/sets/alarareborn/SphinxoftheSteelWind.java new file mode 100644 index 00000000000..3983210979d --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/SphinxoftheSteelWind.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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.keyword.*; +import mage.cards.CardImpl; +import mage.filter.Filter; +import mage.filter.FilterCard; + +/** + * + * @author Loki + */ +public class SphinxoftheSteelWind extends CardImpl { + private static FilterCard filter = new FilterCard("red and from green"); + + static { + filter.setUseColor(true); + filter.getColor().setRed(true); + filter.getColor().setGreen(true); + filter.setScopeColor(Filter.ComparisonScope.Any); + } + + public SphinxoftheSteelWind (UUID ownerId) { + super(ownerId, 110, "Sphinx of the Steel Wind", Rarity.MYTHIC, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}{W}{U}{B}"); + this.expansionSetCode = "ARB"; + this.subtype.add("Sphinx"); + this.color.setWhite(true); + this.color.setBlue(true); + this.color.setBlack(true); + this.power = new MageInt(6); + this.toughness = new MageInt(6); + this.addAbility(FlyingAbility.getInstance()); + this.addAbility(FirstStrikeAbility.getInstance()); + this.addAbility(VigilanceAbility.getInstance()); + this.addAbility(LifelinkAbility.getInstance()); + this.addAbility(new ProtectionAbility(filter)); + } + + public SphinxoftheSteelWind (final SphinxoftheSteelWind card) { + super(card); + } + + @Override + public SphinxoftheSteelWind copy() { + return new SphinxoftheSteelWind(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/StunSniper.java b/Mage.Sets/src/mage/sets/alarareborn/StunSniper.java new file mode 100644 index 00000000000..296920e7a9e --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/StunSniper.java @@ -0,0 +1,76 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.effects.common.TapTargetEffect; +import mage.cards.CardImpl; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author Loki + */ +public class StunSniper extends CardImpl { + + public StunSniper (UUID ownerId) { + super(ownerId, 100, "Stun Sniper", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{R}{W}"); + this.expansionSetCode = "ARB"; + this.subtype.add("Human"); + this.subtype.add("Archer"); + this.color.setRed(true); + this.color.setWhite(true); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new GenericManaCost(1)); + ability.addCost(new TapSourceCost()); + ability.addEffect(new TapTargetEffect()); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + } + + public StunSniper (final StunSniper card) { + super(card); + } + + @Override + public StunSniper copy() { + return new StunSniper(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java new file mode 100644 index 00000000000..cb154a27f08 --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.costs.AlternativeCostImpl; +import mage.abilities.costs.CompositeCost; +import mage.abilities.costs.Cost; +import mage.abilities.costs.common.ReturnToHandTargetCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.mana.BlackManaAbility; +import mage.abilities.mana.RedManaAbility; +import mage.cards.CardImpl; +import mage.filter.Filter; +import mage.filter.common.FilterControlledPermanent; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author Loki + */ +public class VeinfireBorderpost extends CardImpl { + private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + + private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; + private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Veinfire Borderpost's mana cost"; + + static { + filter.getSupertype().add("Basic"); + filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.getCardType().add(CardType.LAND); + filter.setScopeCardType(Filter.ComparisonScope.Any); + } + + public VeinfireBorderpost (UUID ownerId) { + super(ownerId, 48, "Veinfire Borderpost", Rarity.COMMON, new CardType[]{CardType.ARTIFACT}, "{1}{B}{R}"); + this.expansionSetCode = "ARB"; + this.color.setBlack(true); + this.color.setRed(true); + Cost cost = new CompositeCost(new GenericManaCost(1), new ReturnToHandTargetCost(new TargetControlledPermanent(filter)), COST_DESCRIPTION); + this.getSpellAbility().addAlternativeCost(new AlternativeCostImpl(ALTERNATIVE_COST_DESCRIPTION, cost)); + this.addAbility(new EntersBattlefieldTappedAbility()); + this.addAbility(new BlackManaAbility()); + this.addAbility(new RedManaAbility()); + } + + public VeinfireBorderpost (final VeinfireBorderpost card) { + super(card); + } + + @Override + public VeinfireBorderpost copy() { + return new VeinfireBorderpost(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java new file mode 100644 index 00000000000..bffe82a7bbc --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.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.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.costs.AlternativeCostImpl; +import mage.abilities.costs.CompositeCost; +import mage.abilities.costs.Cost; +import mage.abilities.costs.common.ReturnToHandTargetCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.mana.GreenManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; +import mage.filter.Filter; +import mage.filter.common.FilterControlledPermanent; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author Loki + */ +public class WildfieldBorderpost extends CardImpl { + private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + + private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; + private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Wildfield Borderpost's mana cost"; + + static { + filter.getSupertype().add("Basic"); + filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.getCardType().add(CardType.LAND); + filter.setScopeCardType(Filter.ComparisonScope.Any); + } + + public WildfieldBorderpost (UUID ownerId) { + super(ownerId, 80, "Wildfield Borderpost", Rarity.COMMON, new CardType[]{CardType.ARTIFACT}, "{1}{G}{W}"); + this.expansionSetCode = "ARB"; + this.color.setGreen(true); + this.color.setWhite(true); + Cost cost = new CompositeCost(new GenericManaCost(1), new ReturnToHandTargetCost(new TargetControlledPermanent(filter)), COST_DESCRIPTION); + this.getSpellAbility().addAlternativeCost(new AlternativeCostImpl(ALTERNATIVE_COST_DESCRIPTION, cost)); + this.addAbility(new EntersBattlefieldTappedAbility()); + this.addAbility(new GreenManaAbility()); + this.addAbility(new WhiteManaAbility()); + } + + public WildfieldBorderpost (final WildfieldBorderpost card) { + super(card); + } + + @Override + public WildfieldBorderpost copy() { + return new WildfieldBorderpost(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/alarareborn/WingedCoatl.java b/Mage.Sets/src/mage/sets/alarareborn/WingedCoatl.java new file mode 100644 index 00000000000..333304739c2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/alarareborn/WingedCoatl.java @@ -0,0 +1,68 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +package mage.sets.alarareborn; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.keyword.DeathtouchAbility; +import mage.abilities.keyword.FlashAbility; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; + +/** + * + * @author Loki + */ +public class WingedCoatl extends CardImpl { + + public WingedCoatl (UUID ownerId) { + super(ownerId, 105, "Winged Coatl", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{G}{U}"); + this.expansionSetCode = "ARB"; + this.subtype.add("Snake"); + this.color.setGreen(true); + this.color.setBlue(true); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + this.addAbility(FlashAbility.getInstance()); + this.addAbility(FlyingAbility.getInstance()); + this.addAbility(DeathtouchAbility.getInstance()); + } + + public WingedCoatl (final WingedCoatl card) { + super(card); + } + + @Override + public WingedCoatl copy() { + return new WingedCoatl(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/planechase/GloryofWarfare.java b/Mage.Sets/src/mage/sets/planechase/GloryofWarfare.java new file mode 100644 index 00000000000..de15a3df92a --- /dev/null +++ b/Mage.Sets/src/mage/sets/planechase/GloryofWarfare.java @@ -0,0 +1,59 @@ +/* + * 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.planechase; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.cards.CardImpl; + +/** + * + * @author Loki + */ +public class GloryofWarfare extends mage.sets.alarareborn.GloryofWarfare { + + public GloryofWarfare (UUID ownerId) { + super(ownerId); + this.expansionSetCode = "HOP"; + this.cardNumber = 88; + } + + public GloryofWarfare (final GloryofWarfare card) { + super(card); + } + + @Override + public GloryofWarfare copy() { + return new GloryofWarfare(this); + } + +} diff --git a/Mage/src/mage/abilities/condition/common/MyTurn.java b/Mage/src/mage/abilities/condition/common/MyTurn.java new file mode 100644 index 00000000000..212863eb50c --- /dev/null +++ b/Mage/src/mage/abilities/condition/common/MyTurn.java @@ -0,0 +1,18 @@ +package mage.abilities.condition.common; + +import mage.abilities.Ability; +import mage.abilities.condition.Condition; +import mage.game.Game; + +public class MyTurn implements Condition { + private static MyTurn fInstance = new MyTurn(); + + public static Condition getInstance() { + return fInstance; + } + + @Override + public boolean apply(Game game, Ability source) { + return game.getActivePlayerId().equals(source.getControllerId()); + } +} diff --git a/Mage/src/mage/abilities/condition/common/NotMyTurn.java b/Mage/src/mage/abilities/condition/common/NotMyTurn.java new file mode 100644 index 00000000000..fbb7f823866 --- /dev/null +++ b/Mage/src/mage/abilities/condition/common/NotMyTurn.java @@ -0,0 +1,18 @@ +package mage.abilities.condition.common; + +import mage.abilities.Ability; +import mage.abilities.condition.Condition; +import mage.game.Game; + +public class NotMyTurn implements Condition { + private static NotMyTurn fInstance = new NotMyTurn(); + + public static Condition getInstance() { + return fInstance; + } + + @Override + public boolean apply(Game game, Ability source) { + return !game.getActivePlayerId().equals(source.getControllerId()); + } +} diff --git a/Mage/src/mage/abilities/costs/AlternativeCostImpl.java b/Mage/src/mage/abilities/costs/AlternativeCostImpl.java new file mode 100644 index 00000000000..f678558b0e8 --- /dev/null +++ b/Mage/src/mage/abilities/costs/AlternativeCostImpl.java @@ -0,0 +1,18 @@ +package mage.abilities.costs; + +public class AlternativeCostImpl extends AlternativeCost { + + public AlternativeCostImpl(String name, Cost cost) { + super(name); + this.add(cost); + } + + public AlternativeCostImpl(final AlternativeCostImpl cost) { + super(cost); + } + + @Override + public AlternativeCostImpl copy() { + return new AlternativeCostImpl(this); + } +} diff --git a/Mage/src/mage/abilities/costs/CompositeCost.java b/Mage/src/mage/abilities/costs/CompositeCost.java new file mode 100644 index 00000000000..3bba19212c8 --- /dev/null +++ b/Mage/src/mage/abilities/costs/CompositeCost.java @@ -0,0 +1,69 @@ +package mage.abilities.costs; + +import mage.game.Game; +import mage.target.Targets; + +import java.util.UUID; + +public class CompositeCost implements Cost { + private Cost firstCost; + private Cost secondCost; + private String description; + + public CompositeCost(Cost firstCost, Cost secondCost, String description) { + this.firstCost = firstCost; + this.secondCost = secondCost; + this.description = description; + } + + public CompositeCost(final CompositeCost cost) { + this.firstCost = cost.firstCost.copy(); + this.secondCost = cost.secondCost.copy(); + this.description = cost.description; + } + + @Override + public String getText() { + return description; + } + + @Override + public boolean canPay(UUID sourceId, UUID controllerId, Game game) { + return firstCost.canPay(sourceId, controllerId, game) && secondCost.canPay(sourceId, controllerId, game); + } + + @Override + public boolean pay(Game game, UUID sourceId, UUID controllerId, boolean noMana) { + return firstCost.pay(game, sourceId, controllerId, noMana) && secondCost.pay(game, sourceId, controllerId, noMana); + } + + @Override + public boolean isPaid() { + return firstCost.isPaid() && secondCost.isPaid(); + } + + @Override + public void clearPaid() { + firstCost.clearPaid(); + secondCost.clearPaid(); + } + + @Override + public void setPaid() { + firstCost.setPaid(); + secondCost.setPaid(); + } + + @Override + public Targets getTargets() { + Targets result = new Targets(); + result.addAll(firstCost.getTargets()); + result.addAll(secondCost.getTargets()); + return result; + } + + @Override + public Cost copy() { + return new CompositeCost(this); + } +}