diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java index 3e6935f311..f977862b4f 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulatedPlayer2.java @@ -227,7 +227,7 @@ public class SimulatedPlayer2 extends ComputerPlayer<SimulatedPlayer2> { // Start with X = {1} for (int i = 1; i < numAvailable; i++) { Ability newAbility = ability.copy(); - newAbility.addManaCost(new GenericManaCost(i)); + newAbility.getManaCostsToPay().add(new GenericManaCost(i)); allActions.add(newAbility); } } diff --git a/Mage.Sets/src/mage/sets/innistrad/HarvestPyre.java b/Mage.Sets/src/mage/sets/innistrad/HarvestPyre.java index be5d255b5a..46c79c43dc 100644 --- a/Mage.Sets/src/mage/sets/innistrad/HarvestPyre.java +++ b/Mage.Sets/src/mage/sets/innistrad/HarvestPyre.java @@ -128,5 +128,10 @@ class HarvestPyreCost extends CostImpl<HarvestPyreCost> implements VariableCost public HarvestPyreCost copy() { return new HarvestPyreCost(this); } + + @Override + public void setAmount(int amount) { + amountPaid = amount; + } } diff --git a/Mage/src/mage/abilities/costs/VariableCost.java b/Mage/src/mage/abilities/costs/VariableCost.java index 755ec593bd..bf1a5d14df 100644 --- a/Mage/src/mage/abilities/costs/VariableCost.java +++ b/Mage/src/mage/abilities/costs/VariableCost.java @@ -37,5 +37,6 @@ import mage.filter.FilterMana; public interface VariableCost { public int getAmount(); + public void setAmount(int amount); public void setFilter(FilterMana filter); } diff --git a/Mage/src/mage/abilities/costs/common/PayVariableLoyaltyCost.java b/Mage/src/mage/abilities/costs/common/PayVariableLoyaltyCost.java index 6f8d31ecb4..8816685aa5 100644 --- a/Mage/src/mage/abilities/costs/common/PayVariableLoyaltyCost.java +++ b/Mage/src/mage/abilities/costs/common/PayVariableLoyaltyCost.java @@ -88,7 +88,12 @@ public class PayVariableLoyaltyCost extends CostImpl<PayVariableLoyaltyCost> imp return amountPaid; } - @Override + @Override + public void setAmount(int amount) { + amountPaid = amount; + } + + @Override public void setFilter(FilterMana filter) { } diff --git a/Mage/src/mage/abilities/costs/common/TapVariableTargetCost.java b/Mage/src/mage/abilities/costs/common/TapVariableTargetCost.java index 1b76e38327..0452cd4516 100644 --- a/Mage/src/mage/abilities/costs/common/TapVariableTargetCost.java +++ b/Mage/src/mage/abilities/costs/common/TapVariableTargetCost.java @@ -93,7 +93,12 @@ public class TapVariableTargetCost extends CostImpl<TapVariableTargetCost> imple return amountPaid; } - @Override + @Override + public void setAmount(int amount) { + amountPaid = amount; + } + + @Override public void setFilter(FilterMana filter) { } diff --git a/Mage/src/mage/abilities/costs/mana/ManaCosts.java b/Mage/src/mage/abilities/costs/mana/ManaCosts.java index 2f36ee4eae..24ef875e36 100644 --- a/Mage/src/mage/abilities/costs/mana/ManaCosts.java +++ b/Mage/src/mage/abilities/costs/mana/ManaCosts.java @@ -41,6 +41,7 @@ public interface ManaCosts<T extends ManaCost> extends List<T>, ManaCost { public ManaCosts<T> getUnpaidVariableCosts(); public List<VariableCost> getVariableCosts(); public int getX(); + public void setX(int x); public void load(String mana); public List<String> getSymbols(); diff --git a/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java b/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java index fb23bc0b14..ea7129b1ca 100644 --- a/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java +++ b/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java @@ -28,6 +28,7 @@ package mage.abilities.costs.mana; +import java.util.*; import mage.Constants.ColoredManaSymbol; import mage.Mana; import mage.abilities.Ability; @@ -39,8 +40,6 @@ import mage.players.ManaPool; import mage.players.Player; import mage.target.Targets; -import java.util.*; - /** * @author BetaSteward_at_googlemail.com */ @@ -195,6 +194,13 @@ public class ManaCostsImpl<T extends ManaCost> extends ArrayList<T> implements M return amount; } + @Override + public void setX(int x) { + List<VariableCost> variableCosts = getVariableCosts(); + if (!variableCosts.isEmpty()) + variableCosts.get(0).setAmount(x); + } + @Override public void setPayment(Mana mana) { } diff --git a/Mage/src/mage/abilities/costs/mana/VariableManaCost.java b/Mage/src/mage/abilities/costs/mana/VariableManaCost.java index 873b46f0bc..0296169831 100644 --- a/Mage/src/mage/abilities/costs/mana/VariableManaCost.java +++ b/Mage/src/mage/abilities/costs/mana/VariableManaCost.java @@ -96,7 +96,12 @@ public class VariableManaCost extends ManaCostImpl<VariableManaCost> implements return payment.count() / multiplier; } - @Override + @Override + public void setAmount(int amount) { + payment.setColorless(amount); + } + + @Override public boolean testPay(Mana testMana) { return true; } diff --git a/Mage/src/mage/abilities/keyword/FlashbackAbility.java b/Mage/src/mage/abilities/keyword/FlashbackAbility.java index 7f5f537203..719d934ac2 100644 --- a/Mage/src/mage/abilities/keyword/FlashbackAbility.java +++ b/Mage/src/mage/abilities/keyword/FlashbackAbility.java @@ -32,8 +32,6 @@ import mage.abilities.Ability; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.costs.Cost; -import mage.abilities.costs.mana.ManaCost; -import mage.abilities.costs.mana.ManaCosts; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.ExileSourceEffect; @@ -42,29 +40,28 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.players.Player; -import mage.target.targetpointer.FixedTarget; /** * @author nantuko */ public class FlashbackAbility extends ActivatedAbilityImpl<FlashbackAbility> { - public FlashbackAbility(ManaCosts costs, Constants.TimingRule timingRule) { - super(Constants.Zone.GRAVEYARD, new FlashbackEffect(), costs); + public FlashbackAbility(Cost cost, Constants.TimingRule timingRule) { + super(Constants.Zone.GRAVEYARD, new FlashbackEffect(), cost); this.timing = timingRule; this.usesStack = false; 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; - } +// @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); @@ -109,15 +106,13 @@ class FlashbackEffect extends OneShotEffect<FlashbackEffect> { @Override public boolean apply(Game game, Ability source) { - Card target = (Card) game.getObject(targetPointer.getFirst(source)); - if (target != null) { - Player controller = game.getPlayer(target.getOwnerId()); + Card card = (Card) game.getObject(source.getSourceId()); + if (card != null) { + Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - target.getSpellAbility().getManaCostsToPay().clear(); - for (Cost cost: source.getManaCostsToPay()) { - target.getSpellAbility().getManaCostsToPay().add((ManaCost) cost.copy()); - } - return controller.cast(target.getSpellAbility(), game, true); + int amount = source.getManaCostsToPay().getX(); + card.getSpellAbility().getManaCostsToPay().setX(amount); + return controller.cast(card.getSpellAbility(), game, true); } } return false;