diff --git a/Mage/src/mage/MageObject.java b/Mage/src/mage/MageObject.java index 1738f40be30..e93a1877f8a 100644 --- a/Mage/src/mage/MageObject.java +++ b/Mage/src/mage/MageObject.java @@ -28,6 +28,7 @@ public interface MageObject extends MageItem, Serializable { public MageInt getToughness(); public void adjustCosts(Ability ability, Game game); + public void adjustTargets(Ability ability, Game game); public MageObject copy(); diff --git a/Mage/src/mage/MageObjectImpl.java b/Mage/src/mage/MageObjectImpl.java index 1ca2bcadc58..834af39bcfe 100644 --- a/Mage/src/mage/MageObjectImpl.java +++ b/Mage/src/mage/MageObjectImpl.java @@ -146,6 +146,9 @@ public abstract class MageObjectImpl> implements Mag @Override public void adjustCosts(Ability ability, Game game) {} + @Override + public void adjustTargets(Ability ability, Game game) {} + @Override public boolean hasSubtype(String value) { if (value == null) { diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index ef71333bd7f..0834f352e40 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -162,6 +162,10 @@ public abstract class AbilityImpl> implements Ability { logger.debug("activate failed - choice"); return false; } + Card card = game.getCard(sourceId); + if (card != null) { + card.adjustTargets(this, game); + } //20100716 - 601.2b if (getTargets().size() > 0 && getTargets().chooseTargets(getEffects().get(0).getOutcome(), this.controllerId, this, game) == false) { logger.debug("activate failed - target"); @@ -182,7 +186,6 @@ public abstract class AbilityImpl> implements Ability { } } //20100716 - 601.2e - Card card = game.getCard(sourceId); if (card != null) { card.adjustCosts(this, game); for (Ability ability : card.getAbilities()) { diff --git a/Mage/src/mage/abilities/costs/common/DiscardCardCost.java b/Mage/src/mage/abilities/costs/common/DiscardCardCost.java new file mode 100644 index 00000000000..1917d47143e --- /dev/null +++ b/Mage/src/mage/abilities/costs/common/DiscardCardCost.java @@ -0,0 +1,51 @@ +/* + * 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.abilities.costs.common; + +import mage.target.common.TargetCardInHand; + +/** + * + * @author magenoxx_at_googlemail.com + */ +public class DiscardCardCost extends DiscardTargetCost { + + public DiscardCardCost() { + super(new TargetCardInHand()); + } + + public DiscardCardCost(DiscardCardCost cost) { + super(cost); + } + + @Override + public DiscardCardCost copy() { + return new DiscardCardCost(this); + } + +} diff --git a/Mage/src/mage/abilities/keyword/FlashbackAbility.java b/Mage/src/mage/abilities/keyword/FlashbackAbility.java index 63a0e07e899..c99cc76464f 100644 --- a/Mage/src/mage/abilities/keyword/FlashbackAbility.java +++ b/Mage/src/mage/abilities/keyword/FlashbackAbility.java @@ -42,6 +42,7 @@ import mage.game.events.ZoneChangeEvent; import mage.players.Player; /** + * * @author nantuko */ public class FlashbackAbility extends ActivatedAbilityImpl { @@ -53,16 +54,6 @@ public class FlashbackAbility extends ActivatedAbilityImpl { this.addEffect(new CreateDelayedTriggeredAbilityEffect(new FlashbackTriggeredAbility())); } -// @Override -// public boolean activate(Game game, boolean noMana) { -// Card card = game.getCard(sourceId); -// if (card != null) { -// getEffects().get(0).setTargetPointer(new FixedTarget(card.getId())); -// return super.activate(game, noMana); -// } -// return false; -// } - public FlashbackAbility(final FlashbackAbility ability) { super(ability); } @@ -75,11 +66,13 @@ public class FlashbackAbility extends ActivatedAbilityImpl { @Override public String getRule() { StringBuilder sbRule = new StringBuilder("Flashback "); + boolean first = true; if (manaCosts.size() > 0) { sbRule.append(manaCosts.getText()); + first = false; } if (costs.size() > 0) { - if (sbRule.length() > 0) { + if (first) { sbRule.append(","); } sbRule.append(costs.getText()); diff --git a/Mage/src/mage/game/command/Emblem.java b/Mage/src/mage/game/command/Emblem.java index 8d8b80ab16e..112edf722bf 100644 --- a/Mage/src/mage/game/command/Emblem.java +++ b/Mage/src/mage/game/command/Emblem.java @@ -148,6 +148,9 @@ public class Emblem implements CommandObject { @Override public void adjustCosts(Ability ability, Game game) {} + @Override + public void adjustTargets(Ability ability, Game game) {} + @Override public UUID getId() { return this.id; diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index 60f6f4cfa8e..78b73c6ae70 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -379,6 +379,9 @@ public class Spell> implements StackObject, Card { @Override public void adjustCosts(Ability ability, Game game) {} + @Override + public void adjustTargets(Ability ability, Game game) {} + @Override public boolean moveToZone(Zone zone, UUID sourceId, Game game, boolean flag) { throw new UnsupportedOperationException("Unsupported operation"); @@ -474,4 +477,3 @@ public class Spell> implements StackObject, Card { @Override public void build() {} } - diff --git a/Mage/src/mage/game/stack/StackAbility.java b/Mage/src/mage/game/stack/StackAbility.java index 267e19fab67..b4350114153 100644 --- a/Mage/src/mage/game/stack/StackAbility.java +++ b/Mage/src/mage/game/stack/StackAbility.java @@ -295,6 +295,9 @@ public class StackAbility implements StackObject, Ability { @Override public void adjustCosts(Ability ability, Game game) {} + @Override + public void adjustTargets(Ability ability, Game game) {} + @Override public Costs getOptionalCosts() { throw new UnsupportedOperationException("Not supported yet.");