From 160504ef42fa9fba823bc95e522260e0f1fa87b4 Mon Sep 17 00:00:00 2001 From: Loki Date: Sat, 5 May 2012 17:58:55 +0400 Subject: [PATCH] Support for multi X in variable cost --- .../abilities/costs/mana/ManaCostsImpl.java | 18 +++++++++++++++--- .../abilities/costs/mana/VariableManaCost.java | 4 ++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java b/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java index ea7129b1ca8..a860c1bff5a 100644 --- a/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java +++ b/Mage/src/mage/abilities/costs/mana/ManaCostsImpl.java @@ -28,7 +28,6 @@ package mage.abilities.costs.mana; -import java.util.*; import mage.Constants.ColoredManaSymbol; import mage.Mana; import mage.abilities.Ability; @@ -40,6 +39,8 @@ import mage.players.ManaPool; import mage.players.Player; import mage.target.Targets; +import java.util.*; + /** * @author BetaSteward_at_googlemail.com */ @@ -252,6 +253,7 @@ public class ManaCostsImpl extends ArrayList implements M if (mana == null || mana.length() == 0) return; String[] symbols = mana.split("^\\{|\\}\\{|\\}$"); + int modifierForX = 0; for (String symbol : symbols) { if (symbol.length() > 0) { if (symbol.length() == 1 || isNumeric(symbol)) { @@ -260,8 +262,18 @@ public class ManaCostsImpl extends ArrayList implements M } else { if (!symbol.equals("X")) this.add((T) new ColoredManaCost(ColoredManaSymbol.lookup(symbol.charAt(0)))); - else - this.add((T) new VariableManaCost()); + else { + // check X wasn't added before + if (modifierForX == 0) { + // count X occurence + for (String s : symbols) { + if (s.equals("X")) { + modifierForX++; + } + } + this.add((T) new VariableManaCost(modifierForX)); + } + } //TODO: handle multiple {X} and/or {Y} symbols } } else { diff --git a/Mage/src/mage/abilities/costs/mana/VariableManaCost.java b/Mage/src/mage/abilities/costs/mana/VariableManaCost.java index 0296169831c..cf82980bf90 100644 --- a/Mage/src/mage/abilities/costs/mana/VariableManaCost.java +++ b/Mage/src/mage/abilities/costs/mana/VariableManaCost.java @@ -46,12 +46,12 @@ public class VariableManaCost extends ManaCostImpl implements public VariableManaCost() { this(1); - this.cost = new Mana(); - options.add(new Mana()); } public VariableManaCost(int multiplier) { this.multiplier = multiplier; + this.cost = new Mana(); + options.add(new Mana()); } public VariableManaCost(VariableManaCost manaCost) {