diff --git a/Mage.Sets/src/mage/sets/conflux/MartialCoup.java b/Mage.Sets/src/mage/sets/conflux/MartialCoup.java index 88516265eb4..540bb96df01 100644 --- a/Mage.Sets/src/mage/sets/conflux/MartialCoup.java +++ b/Mage.Sets/src/mage/sets/conflux/MartialCoup.java @@ -84,11 +84,7 @@ class MartialCoupEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - int amount = 0; - if (source.getManaCostsToPay().getVariableCosts().size() > 0) { - amount = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); - } - + int amount = source.getManaCostsToPay().getX(); if (amount > 4) { for (Permanent permanent: game.getBattlefield().getActivePermanents(FilterCreaturePermanent.getDefault(), source.getControllerId(), game)) { permanent.destroy(source.getSourceId(), game, false); diff --git a/Mage.Sets/src/mage/sets/magic2010/ConsumeSpirit.java b/Mage.Sets/src/mage/sets/magic2010/ConsumeSpirit.java index ba9ab6d221c..be55c050ee0 100644 --- a/Mage.Sets/src/mage/sets/magic2010/ConsumeSpirit.java +++ b/Mage.Sets/src/mage/sets/magic2010/ConsumeSpirit.java @@ -88,7 +88,7 @@ class ConsumeSpiritEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - int damage = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int damage = source.getManaCostsToPay().getX(); if (damage > 0) { Permanent permanent = game.getPermanent(getTargetPointer().getFirst(source)); if (permanent != null) { diff --git a/Mage.Sets/src/mage/sets/magic2010/Earthquake.java b/Mage.Sets/src/mage/sets/magic2010/Earthquake.java index 2cf19670e63..9e826d489b5 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Earthquake.java +++ b/Mage.Sets/src/mage/sets/magic2010/Earthquake.java @@ -89,8 +89,7 @@ class EarthquakeEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - int amount = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); - + int amount = source.getManaCostsToPay().getX(); for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { permanent.damage(amount, source.getId(), game, true, false); } diff --git a/Mage.Sets/src/mage/sets/magic2010/Fireball.java b/Mage.Sets/src/mage/sets/magic2010/Fireball.java index a864abb2d66..463031b058a 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Fireball.java +++ b/Mage.Sets/src/mage/sets/magic2010/Fireball.java @@ -87,7 +87,7 @@ class FireballEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { int numTargets = source.getTargets().get(0).getTargets().size(); - int damage = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int damage = source.getManaCostsToPay().getX(); if (numTargets > 0) { int damagePer = damage/numTargets; if (damagePer > 0) { diff --git a/Mage.Sets/src/mage/sets/magic2010/MindSpring.java b/Mage.Sets/src/mage/sets/magic2010/MindSpring.java index 69e1bbb433c..eabb45db1e8 100644 --- a/Mage.Sets/src/mage/sets/magic2010/MindSpring.java +++ b/Mage.Sets/src/mage/sets/magic2010/MindSpring.java @@ -80,7 +80,7 @@ class MindSpringEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - int amount = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int amount = source.getManaCostsToPay().getX(); Player player = game.getPlayer(source.getControllerId()); if (player != null) { player.drawCards(amount, game); diff --git a/Mage.Sets/src/mage/sets/magic2010/ProteanHydra.java b/Mage.Sets/src/mage/sets/magic2010/ProteanHydra.java index 4f7b98ef448..c92165bb441 100644 --- a/Mage.Sets/src/mage/sets/magic2010/ProteanHydra.java +++ b/Mage.Sets/src/mage/sets/magic2010/ProteanHydra.java @@ -93,8 +93,8 @@ public class ProteanHydra extends CardImpl { @Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); - if (permanent != null && source.getManaCostsToPay().getVariableCosts().size() > 0) { - int amount = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int amount = source.getManaCostsToPay().getX(); + if (permanent != null && amount > 0) { permanent.addCounters(CounterType.P1P1.createInstance(amount), game); } return true; diff --git a/Mage.Sets/src/mage/sets/magic2011/VengefulArchon.java b/Mage.Sets/src/mage/sets/magic2011/VengefulArchon.java index feb0400d418..9a17e626739 100644 --- a/Mage.Sets/src/mage/sets/magic2011/VengefulArchon.java +++ b/Mage.Sets/src/mage/sets/magic2011/VengefulArchon.java @@ -98,8 +98,7 @@ class VengefulArchonEffect extends PreventionEffectImpl { @Override public void init(Ability source, Game game) { super.init(source, game); - if (source.getManaCostsToPay().getVariableCosts().size() > 0) - amount = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + amount = source.getManaCostsToPay().getX(); } @Override diff --git a/Mage.Sets/src/mage/sets/magic2012/PrimordialHydra.java b/Mage.Sets/src/mage/sets/magic2012/PrimordialHydra.java index 6045b8e1c5c..6cae91ad1cf 100644 --- a/Mage.Sets/src/mage/sets/magic2012/PrimordialHydra.java +++ b/Mage.Sets/src/mage/sets/magic2012/PrimordialHydra.java @@ -38,11 +38,8 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldAbility; -import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.HasCounterCondition; -import mage.abilities.decorator.ConditionalContinousEffect; import mage.abilities.decorator.ConditionalStaticAbility; -import mage.abilities.dynamicvalue.common.CountersCount; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.TrampleAbility; @@ -96,7 +93,7 @@ class PrimordialHydraEntersEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - int amount = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int amount = source.getManaCostsToPay().getX(); for (Permanent permanent : game.getBattlefield().getAllActivePermanents()) { if (permanent != null && permanent.getCardType().contains(CardType.CREATURE)) { permanent.addCounters(CounterType.M1M1.createInstance(amount), game); diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java index 203997ce5af..44441565143 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/GreenSunsZenith.java @@ -87,7 +87,7 @@ class GreenSunsZenithSearchEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - int amount = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int amount = source.getManaCostsToPay().getX(); Permanent p = game.getPermanent(source.getSourceId()); if (p != null) { p.addCounters(CounterType.CHARGE.createInstance(amount), game); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/Exsanguinate.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/Exsanguinate.java index 88c697ef70a..03b59a2d296 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/Exsanguinate.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/Exsanguinate.java @@ -77,7 +77,7 @@ class ExsanguinateEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { int loseLife = 0; - int damage = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int damage = source.getManaCostsToPay().getX(); for (UUID opponentId : game.getOpponents(source.getControllerId())) { loseLife += game.getPlayer(opponentId).loseLife(damage, game); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GenesisWave.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GenesisWave.java index e8ea1341823..bff5cfe76e5 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GenesisWave.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GenesisWave.java @@ -83,7 +83,7 @@ class GenesisWaveEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); Cards cards = new CardsImpl(Zone.PICK); - int count = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int count = source.getManaCostsToPay().getX(); for (int i = 0; i < count; i++) { Card card = player.getLibrary().removeFromTop(game); cards.add(card); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrBattlesphere.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrBattlesphere.java index cf0c59b5bd1..8ccd629431a 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrBattlesphere.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/MyrBattlesphere.java @@ -143,7 +143,7 @@ class MyrBattlesphereEffect extends OneShotEffect { UUID defenderId = game.getCombat().getDefendingPlayer(source.getSourceId()); Player defender = game.getPlayer(defenderId); if (defender != null) { - defender.damage(source.getManaCostsToPay().getVariableCosts().get(0).getAmount(), source.getSourceId(), game, false, false); + defender.damage(source.getManaCostsToPay().getX(), source.getSourceId(), game, false, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/SteelHellkite.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/SteelHellkite.java index 242efd3005c..19dd4a51abb 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/SteelHellkite.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/SteelHellkite.java @@ -101,7 +101,7 @@ class SteelHellkiteDestroyEffect extends OneShotEffect { SteelHellkiteWatcher watcher = (SteelHellkiteWatcher) game.getState().getWatchers().get(source.getControllerId(), "SteelHellkiteWatcher"); if (watcher != null && watcher.damagedPlayers.containsKey(source.getSourceId())) { Set players = watcher.damagedPlayers.get(source.getSourceId()); - int xValue = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int xValue = source.getManaCostsToPay().getX(); for (UUID uuid : players) { for (Permanent permanent: game.getBattlefield().getAllActivePermanents()) { if (permanent.getControllerId().equals(uuid) && permanent.getManaCost().convertedManaCost() == xValue) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/FlameblastDragon.java b/Mage.Sets/src/mage/sets/shardsofalara/FlameblastDragon.java index c258a2ccedd..d29e32f63c7 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/FlameblastDragon.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/FlameblastDragon.java @@ -93,7 +93,7 @@ class FlameblastDragonEffect extends OneShotEffect { if (player.chooseUse(Constants.Outcome.Damage, "Pay " + cost.getText() + "? If you do, Flameblast Dragon deals X damage to target creature or player", game)) { cost.clearPaid(); if (cost.pay(source, game, source.getId(), source.getControllerId(), false)) { - int costX = ((VariableCost) cost.getVariableCosts().get(0)).getAmount(); + int costX = cost.getX(); Permanent permanent = game.getPermanent(source.getFirstTarget()); if (permanent != null) { permanent.damage(costX, source.getId(), game, true, false); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/SigilOfDistinction.java b/Mage.Sets/src/mage/sets/shardsofalara/SigilOfDistinction.java index a256f68adcc..708b4e99e12 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/SigilOfDistinction.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/SigilOfDistinction.java @@ -84,7 +84,7 @@ class SigilOfDistinctionEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - int amount = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int amount = source.getManaCostsToPay().getX(); Permanent p = game.getPermanent(source.getSourceId()); if (p != null) { p.addCounters(CounterType.CHARGE.createInstance(amount), game); diff --git a/Mage/src/mage/abilities/costs/mana/ManaCosts.java b/Mage/src/mage/abilities/costs/mana/ManaCosts.java index d25190b74ed..2f36ee4eaef 100644 --- a/Mage/src/mage/abilities/costs/mana/ManaCosts.java +++ b/Mage/src/mage/abilities/costs/mana/ManaCosts.java @@ -40,8 +40,12 @@ public interface ManaCosts extends List, ManaCost { public ManaCosts getUnpaidVariableCosts(); public List getVariableCosts(); + public int getX(); public void load(String mana); public List getSymbols(); + + + @Override public Mana getMana(); @Override diff --git a/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java b/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java index 0a062658aad..a8a091d89c8 100644 --- a/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java +++ b/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java @@ -146,6 +146,8 @@ public class ManaCostsImpl extends ArrayList implements M return unpaid; } + + @Override public List getVariableCosts() { List variableCosts = new ArrayList(); @@ -153,13 +155,22 @@ public class ManaCostsImpl extends ArrayList implements M if (cost instanceof VariableCost) variableCosts.add((VariableCost) cost); } - if (variableCosts.size() == 0) { - // add empty cost (#Issue 210) - variableCosts.add(new VariableManaCost()); - } +// if (variableCosts.size() == 0) { +// // add empty cost (#Issue 210) +// variableCosts.add(new VariableManaCost()); +// } return variableCosts; } + @Override + public int getX() { + int amount = 0; + List variableCosts = getVariableCosts(); + if (!variableCosts.isEmpty()) + amount = variableCosts.get(0).getAmount(); + return amount; + } + @Override public void setPayment(Mana mana) { } diff --git a/Mage/src/mage/abilities/dynamicvalue/common/ManacostVariableValue.java b/Mage/src/mage/abilities/dynamicvalue/common/ManacostVariableValue.java index 96c728473ab..bb4fa60d143 100644 --- a/Mage/src/mage/abilities/dynamicvalue/common/ManacostVariableValue.java +++ b/Mage/src/mage/abilities/dynamicvalue/common/ManacostVariableValue.java @@ -7,7 +7,7 @@ import mage.game.Game; public class ManacostVariableValue implements DynamicValue { @Override public int calculate(Game game, Ability sourceAbility) { - return sourceAbility.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + return sourceAbility.getManaCostsToPay().getX(); } @Override diff --git a/Mage/src/mage/abilities/effects/common/DamageXTargetEffect.java b/Mage/src/mage/abilities/effects/common/DamageXTargetEffect.java index 9b56fd3d4c4..73fff3effb1 100644 --- a/Mage/src/mage/abilities/effects/common/DamageXTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/DamageXTargetEffect.java @@ -57,7 +57,7 @@ public class DamageXTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - int amount = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); + int amount = source.getManaCostsToPay().getX(); Permanent permanent = game.getPermanent(source.getFirstTarget()); if (permanent != null) { permanent.damage(amount, source.getId(), game, true, false); diff --git a/Mage/src/mage/abilities/effects/common/continious/BoostPowerToughnessXTargetEffect.java b/Mage/src/mage/abilities/effects/common/continious/BoostPowerToughnessXTargetEffect.java index 8af5be5f6b3..ec22a15ec24 100644 --- a/Mage/src/mage/abilities/effects/common/continious/BoostPowerToughnessXTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/BoostPowerToughnessXTargetEffect.java @@ -61,14 +61,14 @@ public class BoostPowerToughnessXTargetEffect extends ContinuousEffectImpl 0) { - int amountX = source.getManaCostsToPay().getVariableCosts().get(0).getAmount(); - if (amountX == 0) { - return false; - } - Permanent target = (Permanent) game.getPermanent(source.getSourceId()); - if (target != null) { - target.addPower(amountX); - return true; - } - } + int amountX = source.getManaCostsToPay().getX(); + if (amountX == 0) { + return false; + } + Permanent target = (Permanent) game.getPermanent(source.getSourceId()); + if (target != null) { + target.addPower(amountX); + return true; + } return false; }