From 8dfd3bfc9d19dbf05bbc92f0780d1556b966cc6b Mon Sep 17 00:00:00 2001 From: Loki Date: Thu, 15 Sep 2011 23:01:57 +0300 Subject: [PATCH] more work at Kicker - now we shall use special KickerManaCost for it --- .../mage/sets/apocalypse/DesolationAngel.java | 11 +++---- .../mage/sets/zendikar/VinesOfVastwood.java | 15 ++------- Mage/src/mage/abilities/AbilityImpl.java | 3 +- .../condition/common/KickedCondition.java | 8 ++--- .../abilities/costs/mana/KickerManaCost.java | 32 +++++++++++++++++++ Mage/src/mage/game/stack/Spell.java | 1 + 6 files changed, 43 insertions(+), 27 deletions(-) create mode 100644 Mage/src/mage/abilities/costs/mana/KickerManaCost.java diff --git a/Mage.Sets/src/mage/sets/apocalypse/DesolationAngel.java b/Mage.Sets/src/mage/sets/apocalypse/DesolationAngel.java index 8a5dff109d9..1ff8aaba01c 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/DesolationAngel.java +++ b/Mage.Sets/src/mage/sets/apocalypse/DesolationAngel.java @@ -28,7 +28,6 @@ package mage.sets.apocalypse; -import java.util.ArrayList; import java.util.UUID; import mage.Constants; @@ -37,11 +36,9 @@ import mage.Constants.Rarity; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.costs.Cost; -import mage.abilities.costs.mana.ManaCost; +import mage.abilities.costs.mana.KickerManaCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; -import mage.abilities.keyword.KickerAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.game.Game; @@ -59,7 +56,7 @@ public class DesolationAngel extends CardImpl { this.color.setBlack(true); this.power = new MageInt(5); this.toughness = new MageInt(4); - this.getSpellAbility().addOptionalCost(new ManaCostsImpl("{W}{W}")); + this.getSpellAbility().addOptionalCost(new KickerManaCost("{W}{W}")); this.addAbility(new EntersBattlefieldTriggeredAbility(new DesolationAngelEntersBattlefieldEffect())); } @@ -90,8 +87,8 @@ class DesolationAngelEntersBattlefieldEffect extends OneShotEffect { this.getSpellAbility().addTarget(target); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(new HexproofAbility(), Duration.EndOfTurn)); - this.getSpellAbility().addOptionalCost(new ManaCostsImpl("{G}")); + this.getSpellAbility().addOptionalCost(new KickerManaCost("{G}")); this.getSpellAbility().addEffect(new ConditionalContinousEffect(new BoostTargetEffect(4, 4, Duration.EndOfTurn), KickedCondition.getInstance(), staticText)); } diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index 43281d9f2e6..1fba9b68cbc 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -40,6 +40,7 @@ import mage.abilities.costs.AlternativeCost; import mage.abilities.costs.Cost; import mage.abilities.costs.Costs; import mage.abilities.costs.CostsImpl; +import mage.abilities.costs.mana.KickerManaCost; import mage.abilities.costs.mana.ManaCost; import mage.abilities.costs.mana.ManaCosts; import mage.abilities.costs.mana.ManaCostsImpl; @@ -56,8 +57,6 @@ import mage.target.Targets; import org.apache.log4j.Logger; -import javax.management.openmbean.ArrayType; - /** * * @author BetaSteward_at_googlemail.com diff --git a/Mage/src/mage/abilities/condition/common/KickedCondition.java b/Mage/src/mage/abilities/condition/common/KickedCondition.java index 8c9dea49190..1031d09817c 100644 --- a/Mage/src/mage/abilities/condition/common/KickedCondition.java +++ b/Mage/src/mage/abilities/condition/common/KickedCondition.java @@ -1,11 +1,9 @@ package mage.abilities.condition.common; -import mage.Constants; import mage.abilities.Ability; import mage.abilities.condition.Condition; -import mage.abilities.costs.mana.ManaCost; +import mage.abilities.costs.mana.KickerManaCost; import mage.cards.Card; -import mage.filter.FilterPermanent; import mage.game.Game; /** @@ -28,8 +26,8 @@ public class KickedCondition implements Condition { boolean kicked = false; if (p != null) { for (Object cost : p.getSpellAbility().getOptionalCosts()) { - if (cost instanceof ManaCost) { - if (((ManaCost) cost).isPaid()) { + if (cost instanceof KickerManaCost) { + if (((KickerManaCost) cost).isPaid()) { kicked = true; } } diff --git a/Mage/src/mage/abilities/costs/mana/KickerManaCost.java b/Mage/src/mage/abilities/costs/mana/KickerManaCost.java new file mode 100644 index 00000000000..280fcdde74d --- /dev/null +++ b/Mage/src/mage/abilities/costs/mana/KickerManaCost.java @@ -0,0 +1,32 @@ +package mage.abilities.costs.mana; + +import mage.abilities.Ability; +import mage.abilities.costs.Cost; +import mage.abilities.costs.CostImpl; +import mage.game.Game; + +import java.util.UUID; + +/** + * This cost must be used only as optional mana cost in cards with Kicker + * @author Loki + */ +public class KickerManaCost extends ManaCostsImpl { + public KickerManaCost(String manaString) { + super(manaString); + } + + public KickerManaCost(final KickerManaCost cost) { + super(cost); + } + + @Override + public KickerManaCost copy() { + return new KickerManaCost(this); + } + + @Override + public String getText() { + return "Kicker - " + super.getText(); + } +} diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index a4a2138ae45..b78c0d07288 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -39,6 +39,7 @@ import mage.abilities.Abilities; import mage.abilities.Ability; import mage.abilities.SpellAbility; import mage.abilities.costs.Cost; +import mage.abilities.costs.mana.KickerManaCost; import mage.abilities.costs.mana.ManaCost; import mage.abilities.costs.mana.ManaCosts; import mage.abilities.effects.Effect;