From d195e6a749e54c3d0a33a12be3c00ce02b2fd547 Mon Sep 17 00:00:00 2001 From: North Date: Wed, 29 Jun 2011 22:11:06 +0300 Subject: [PATCH] AddManaOfAnyColorEffect - removed amount (can only add one) Refactored cards to use AddManaOfAnyColorEffect Added ManaCylix card. --- .../src/mage/sets/conflux/ManaCylix.java | 65 +++++++++++++++++++ .../src/mage/sets/conflux/RuptureSpire.java | 18 ++--- .../mirrodinbesieged/SphereOfTheSuns.java | 27 +++----- .../src/mage/sets/newphyrexia/AlloyMyr.java | 18 +++-- .../sets/riseoftheeldrazi/PropheticPrism.java | 29 +++------ .../mage/sets/scarsofmirrodin/MoxOpal.java | 27 +++----- .../src/mage/sets/tenth/BirdsOfParadise.java | 20 +++--- .../src/mage/sets/zendikar/LotusCobra.java | 3 +- .../costs/common/MetalcraftCost.java | 2 +- .../common/AddManaOfAnyColorEffect.java | 11 +--- 10 files changed, 123 insertions(+), 97 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/conflux/ManaCylix.java diff --git a/Mage.Sets/src/mage/sets/conflux/ManaCylix.java b/Mage.Sets/src/mage/sets/conflux/ManaCylix.java new file mode 100644 index 00000000000..6de9e550633 --- /dev/null +++ b/Mage.Sets/src/mage/sets/conflux/ManaCylix.java @@ -0,0 +1,65 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.conflux; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.AddManaOfAnyColorEffect; +import mage.cards.CardImpl; +import mage.choices.ChoiceColor; + +/** + * + * @author North + */ +public class ManaCylix extends CardImpl { + + public ManaCylix(UUID ownerId) { + super(ownerId, 138, "Mana Cylix", Rarity.COMMON, new CardType[]{CardType.ARTIFACT}, "{1}"); + this.expansionSetCode = "CON"; + + SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(), new GenericManaCost(1)); + ability.addChoice(new ChoiceColor()); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + } + + public ManaCylix(final ManaCylix card) { + super(card); + } + + @Override + public ManaCylix copy() { + return new ManaCylix(this); + } +} diff --git a/Mage.Sets/src/mage/sets/conflux/RuptureSpire.java b/Mage.Sets/src/mage/sets/conflux/RuptureSpire.java index 87ebf0ca034..976e449cd07 100644 --- a/Mage.Sets/src/mage/sets/conflux/RuptureSpire.java +++ b/Mage.Sets/src/mage/sets/conflux/RuptureSpire.java @@ -30,33 +30,33 @@ package mage.sets.conflux; import java.util.UUID; import mage.Constants.CardType; -import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Constants.Zone; -import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.AddManaOfAnyColorEffect; import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect; -import mage.abilities.mana.*; import mage.cards.CardImpl; +import mage.choices.ChoiceColor; /** * - * @author Loki + * @author Loki, North */ public class RuptureSpire extends CardImpl { public RuptureSpire (UUID ownerId) { super(ownerId, 144, "Rupture Spire", Rarity.COMMON, new CardType[]{CardType.LAND}, null); this.expansionSetCode = "CON"; + this.addAbility(new EntersBattlefieldTappedAbility()); this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new ManaCostsImpl("{1}")), false)); - this.addAbility(new BlackManaAbility()); - this.addAbility(new BlueManaAbility()); - this.addAbility(new GreenManaAbility()); - this.addAbility(new RedManaAbility()); - this.addAbility(new WhiteManaAbility()); + SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(), new TapSourceCost()); + ability.addChoice(new ChoiceColor()); + this.addAbility(ability); } public RuptureSpire (final RuptureSpire card) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/SphereOfTheSuns.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/SphereOfTheSuns.java index 771f59a40e1..c38218809f8 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/SphereOfTheSuns.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/SphereOfTheSuns.java @@ -30,17 +30,17 @@ package mage.sets.mirrodinbesieged; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.Constants.Zone; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.RemoveCountersSourceCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.AddManaOfAnyColorEffect; import mage.abilities.effects.common.TapSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; -import mage.abilities.mana.BlackManaAbility; -import mage.abilities.mana.BlueManaAbility; -import mage.abilities.mana.GreenManaAbility; -import mage.abilities.mana.RedManaAbility; -import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; +import mage.choices.ChoiceColor; import mage.counters.CounterType; /** @@ -52,26 +52,15 @@ public class SphereOfTheSuns extends CardImpl { public SphereOfTheSuns(UUID ownerId) { super(ownerId, 134, "Sphere of the Suns", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{2}"); this.expansionSetCode = "MBS"; - + Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(3)), "Sphere of the Suns enters the battlefield tapped and with three charge counters on it."); ability.addEffect(new TapSourceEffect()); this.addAbility(ability); RemoveCountersSourceCost removeCounterCost = new RemoveCountersSourceCost(CounterType.CHARGE.getName(), 1); - ability = new BlackManaAbility(); - ability.addCost(removeCounterCost); - this.addAbility(ability); - ability = new BlueManaAbility(); - ability.addCost(removeCounterCost); - this.addAbility(ability); - ability = new RedManaAbility(); - ability.addCost(removeCounterCost); - this.addAbility(ability); - ability = new GreenManaAbility(); - ability.addCost(removeCounterCost); - this.addAbility(ability); - ability = new WhiteManaAbility(); + ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(), new TapSourceCost()); + ability.addChoice(new ChoiceColor()); ability.addCost(removeCounterCost); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/AlloyMyr.java b/Mage.Sets/src/mage/sets/newphyrexia/AlloyMyr.java index 154b6a1eeba..8583d6f8c42 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/AlloyMyr.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/AlloyMyr.java @@ -30,13 +30,13 @@ package mage.sets.newphyrexia; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.Constants.Zone; import mage.MageInt; -import mage.abilities.mana.BlackManaAbility; -import mage.abilities.mana.BlueManaAbility; -import mage.abilities.mana.GreenManaAbility; -import mage.abilities.mana.RedManaAbility; -import mage.abilities.mana.WhiteManaAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.AddManaOfAnyColorEffect; import mage.cards.CardImpl; +import mage.choices.ChoiceColor; /** * @@ -52,11 +52,9 @@ public class AlloyMyr extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new BlackManaAbility()); - this.addAbility(new BlueManaAbility()); - this.addAbility(new GreenManaAbility()); - this.addAbility(new RedManaAbility()); - this.addAbility(new WhiteManaAbility()); + SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(), new TapSourceCost()); + ability.addChoice(new ChoiceColor()); + this.addAbility(ability); } public AlloyMyr(final AlloyMyr card) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/PropheticPrism.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/PropheticPrism.java index ffcb73b86b4..00151b21841 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/PropheticPrism.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/PropheticPrism.java @@ -30,16 +30,15 @@ package mage.sets.riseoftheeldrazi; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; -import mage.abilities.Ability; +import mage.Constants.Zone; import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.AddManaOfAnyColorEffect; import mage.abilities.effects.common.DrawCardControllerEffect; -import mage.abilities.mana.BlackManaAbility; -import mage.abilities.mana.BlueManaAbility; -import mage.abilities.mana.GreenManaAbility; -import mage.abilities.mana.RedManaAbility; -import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; +import mage.choices.ChoiceColor; /** * @@ -52,22 +51,10 @@ public class PropheticPrism extends CardImpl { this.expansionSetCode = "ROE"; this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardControllerEffect(1))); - Ability ability = new BlackManaAbility(); - ability.addCost(new GenericManaCost(1)); + SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(), new GenericManaCost(1)); + ability.addChoice(new ChoiceColor()); + ability.addCost(new TapSourceCost()); this.addAbility(ability); - ability = new RedManaAbility(); - ability.addCost(new GenericManaCost(1)); - this.addAbility(ability); - ability = new BlueManaAbility(); - ability.addCost(new GenericManaCost(1)); - this.addAbility(ability); - ability = new GreenManaAbility(); - ability.addCost(new GenericManaCost(1)); - this.addAbility(ability); - ability = new WhiteManaAbility(); - ability.addCost(new GenericManaCost(1)); - this.addAbility(ability); - } public PropheticPrism(final PropheticPrism card) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/MoxOpal.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/MoxOpal.java index a4e7456d580..3d20db33e78 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/MoxOpal.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/MoxOpal.java @@ -30,12 +30,15 @@ package mage.sets.scarsofmirrodin; import mage.Constants.CardType; import mage.Constants.Rarity; -import mage.abilities.Ability; import mage.abilities.costs.common.MetalcraftCost; -import mage.abilities.mana.*; import mage.cards.CardImpl; import java.util.UUID; +import mage.Constants.Zone; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.AddManaOfAnyColorEffect; +import mage.choices.ChoiceColor; /** * @@ -47,21 +50,11 @@ public class MoxOpal extends CardImpl { super(ownerId, 179, "Mox Opal", Rarity.MYTHIC, new CardType[]{CardType.ARTIFACT}, "{0}"); this.supertype.add("Legendary"); this.expansionSetCode = "SOM"; - Ability ability1 = new WhiteManaAbility(); - ability1.addCost(new MetalcraftCost()); - this.addAbility(ability1); - Ability ability2 = new RedManaAbility(); - ability2.addCost(new MetalcraftCost()); - this.addAbility(ability2); - Ability ability3 = new BlueManaAbility(); - ability3.addCost(new MetalcraftCost()); - this.addAbility(ability3); - Ability ability4 = new BlackManaAbility(); - ability4.addCost(new MetalcraftCost()); - this.addAbility(ability4); - Ability ability5 = new GreenManaAbility(); - ability5.addCost(new MetalcraftCost()); - this.addAbility(ability5); + + SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(), new TapSourceCost()); + ability.addChoice(new ChoiceColor()); + ability.addCost(new MetalcraftCost()); + this.addAbility(ability); } public MoxOpal(final MoxOpal card) { diff --git a/Mage.Sets/src/mage/sets/tenth/BirdsOfParadise.java b/Mage.Sets/src/mage/sets/tenth/BirdsOfParadise.java index dcc0bd1a56e..8ac5f80e0e9 100644 --- a/Mage.Sets/src/mage/sets/tenth/BirdsOfParadise.java +++ b/Mage.Sets/src/mage/sets/tenth/BirdsOfParadise.java @@ -31,14 +31,14 @@ package mage.sets.tenth; import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.Constants.Zone; import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.AddManaOfAnyColorEffect; import mage.abilities.keyword.FlyingAbility; -import mage.abilities.mana.BlackManaAbility; -import mage.abilities.mana.BlueManaAbility; -import mage.abilities.mana.GreenManaAbility; -import mage.abilities.mana.RedManaAbility; -import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; +import mage.choices.ChoiceColor; /** * @@ -50,15 +50,15 @@ public class BirdsOfParadise extends CardImpl { super(ownerId, 252, "Birds of Paradise", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{G}"); this.expansionSetCode = "10E"; this.subtype.add("Bird"); + this.color.setGreen(true); this.power = new MageInt(0); this.toughness = new MageInt(1); + this.addAbility(FlyingAbility.getInstance()); - this.addAbility(new BlackManaAbility()); - this.addAbility(new BlueManaAbility()); - this.addAbility(new GreenManaAbility()); - this.addAbility(new RedManaAbility()); - this.addAbility(new WhiteManaAbility()); + SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(), new TapSourceCost()); + ability.addChoice(new ChoiceColor()); + this.addAbility(ability); } public BirdsOfParadise(final BirdsOfParadise card) { diff --git a/Mage.Sets/src/mage/sets/zendikar/LotusCobra.java b/Mage.Sets/src/mage/sets/zendikar/LotusCobra.java index b05421e2654..f9a536e9ba5 100644 --- a/Mage.Sets/src/mage/sets/zendikar/LotusCobra.java +++ b/Mage.Sets/src/mage/sets/zendikar/LotusCobra.java @@ -47,11 +47,12 @@ public class LotusCobra extends CardImpl { super(ownerId, 168, "Lotus Cobra", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{1}{G}"); this.expansionSetCode = "ZEN"; this.subtype.add("Snake"); + this.color.setGreen(true); this.power = new MageInt(2); this.toughness = new MageInt(1); - LandfallAbility ability = new LandfallAbility(new AddManaOfAnyColorEffect(1), false); + LandfallAbility ability = new LandfallAbility(new AddManaOfAnyColorEffect(), false); ability.addChoice(new ChoiceColor()); this.addAbility(ability); } diff --git a/Mage/src/mage/abilities/costs/common/MetalcraftCost.java b/Mage/src/mage/abilities/costs/common/MetalcraftCost.java index a9a6687c5e1..b43b0fff4e1 100644 --- a/Mage/src/mage/abilities/costs/common/MetalcraftCost.java +++ b/Mage/src/mage/abilities/costs/common/MetalcraftCost.java @@ -40,7 +40,7 @@ import mage.game.Game; */ public class MetalcraftCost extends CostImpl { - private static FilterPermanent filter = new FilterPermanent("artifact"); + private static final FilterPermanent filter = new FilterPermanent("artifact"); static { filter.getCardType().add(CardType.ARTIFACT); diff --git a/Mage/src/mage/abilities/effects/common/AddManaOfAnyColorEffect.java b/Mage/src/mage/abilities/effects/common/AddManaOfAnyColorEffect.java index 6ac19b67d7a..f6d42f50bc3 100644 --- a/Mage/src/mage/abilities/effects/common/AddManaOfAnyColorEffect.java +++ b/Mage/src/mage/abilities/effects/common/AddManaOfAnyColorEffect.java @@ -42,16 +42,12 @@ import mage.players.Player; */ public class AddManaOfAnyColorEffect extends OneShotEffect { - int amount; - - public AddManaOfAnyColorEffect(int amount) { + public AddManaOfAnyColorEffect() { super(Outcome.PutManaInPool); - this.amount = amount; } public AddManaOfAnyColorEffect(final AddManaOfAnyColorEffect effect) { super(effect); - this.amount = effect.amount; } @Override @@ -88,10 +84,7 @@ public class AddManaOfAnyColorEffect extends OneShotEffect 1) - return "add " + Integer.toString(amount) + " mana of any color to your mana pool"; - else - return "add one mana of any color to your mana pool"; + return "add one mana of any color to your mana pool"; }