diff --git a/src/main/java/forge/card/spellability/SpellAbility.java b/src/main/java/forge/card/spellability/SpellAbility.java index f55fcc2384f..534f596d20f 100644 --- a/src/main/java/forge/card/spellability/SpellAbility.java +++ b/src/main/java/forge/card/spellability/SpellAbility.java @@ -92,7 +92,7 @@ public abstract class SpellAbility implements ISpellAbility { private final ArrayList payingMana = new ArrayList(); private final List paidAbilities = new ArrayList(); - private ArrayList optionalAdditionalCosts = new ArrayList(); + private List optionalAdditionalCosts = new ArrayList(); private HashMap> paidLists = new HashMap>(); @@ -671,14 +671,14 @@ public abstract class SpellAbility implements ISpellAbility { /** * @return the optionalAdditionalCosts */ - public ArrayList getOptionalAdditionalCosts() { + public List getOptionalAdditionalCosts() { return optionalAdditionalCosts; } /** * @param costs the optionalAdditionalCosts to set */ - public final void setOptionalAdditionalCosts(ArrayList costs) { + public final void setOptionalAdditionalCosts(List costs) { this.optionalAdditionalCosts = costs; } diff --git a/src/main/java/forge/game/GameActionUtil.java b/src/main/java/forge/game/GameActionUtil.java index e98794ae328..65616b9d0a6 100644 --- a/src/main/java/forge/game/GameActionUtil.java +++ b/src/main/java/forge/game/GameActionUtil.java @@ -1287,9 +1287,9 @@ public final class GameActionUtil { * the original sa * @return an ArrayList. */ - public static ArrayList getOptionalAdditionalCosts(final SpellAbility original) { - final ArrayList abilities = new ArrayList(); - final ArrayList newAbilities = new ArrayList(); + public static List getOptionalAdditionalCosts(final SpellAbility original) { + final List abilities = new ArrayList(); + final List newAbilities = new ArrayList(); final Card source = original.getSourceCard(); abilities.add(original); if (!original.isSpell()) { @@ -1304,12 +1304,12 @@ public final class GameActionUtil { newSA.setBasicSpell(false); newSA.setPayCosts(new Cost(keyword.substring(8), false).add(newSA.getPayCosts())); newSA.setDescription(sa.getDescription() + " (with Buyback)"); - ArrayList newoacs = new ArrayList(); - newoacs.addAll(sa.getOptionalAdditionalCosts()); + + ArrayList newoacs = new ArrayList(sa.getOptionalAdditionalCosts()); + newoacs.add(keyword); newSA.setOptionalAdditionalCosts(newoacs); - newSA.addOptionalAdditionalCosts(keyword); if (newSA.canPlay()) { - newAbilities.add(newAbilities.size(), newSA); + newAbilities.add(newSA); } } abilities.addAll(0, newAbilities); @@ -1321,12 +1321,12 @@ public final class GameActionUtil { final Cost cost = new Cost(keyword.substring(7), false); newSA.setDescription(sa.getDescription() + " (Kicker " + cost.toSimpleString() + ")"); newSA.setPayCosts(cost.add(newSA.getPayCosts())); - ArrayList newoacs = new ArrayList(); - newoacs.addAll(sa.getOptionalAdditionalCosts()); + + ArrayList newoacs = new ArrayList(sa.getOptionalAdditionalCosts()); + newoacs.add(keyword); newSA.setOptionalAdditionalCosts(newoacs); - newSA.addOptionalAdditionalCosts(keyword); if (newSA.canPlay()) { - newAbilities.add(newAbilities.size(), newSA); + newAbilities.add(newSA); } } abilities.addAll(0, newAbilities); @@ -1337,24 +1337,23 @@ public final class GameActionUtil { for (SpellAbility sa : abilities) { final SpellAbility newSA = sa.copy(); newSA.setBasicSpell(false); - newSA.setPayCosts(new Cost(costString1, false).add(newSA.getPayCosts())); + final Cost cost1 = new Cost(costString1, false); newSA.setDescription(sa.getDescription() + " (Additional cost " + cost1.toSimpleString() + ")"); - ArrayList newoacs = new ArrayList(); - newoacs.addAll(sa.getOptionalAdditionalCosts()); - newSA.setOptionalAdditionalCosts(newoacs); + newSA.setPayCosts(cost1.add(sa.getPayCosts())); + newSA.setOptionalAdditionalCosts(new ArrayList(sa.getOptionalAdditionalCosts())); if (newSA.canPlay()) { - newAbilities.add(newAbilities.size(), newSA); + newAbilities.add(newSA); } + //second option final SpellAbility newSA2 = sa.copy(); newSA2.setBasicSpell(false); - newSA.setPayCosts(new Cost(costString2, false).add(newSA.getPayCosts())); + final Cost cost2 = new Cost(costString2, false); newSA2.setDescription(sa.getDescription() + " (Additional cost " + cost2.toSimpleString() + ")"); - ArrayList newoacs2 = new ArrayList(); - newoacs.addAll(sa.getOptionalAdditionalCosts()); - newSA2.setOptionalAdditionalCosts(newoacs2); + newSA2.setPayCosts(cost2.add(sa.getPayCosts())); + newSA2.setOptionalAdditionalCosts(new ArrayList(sa.getOptionalAdditionalCosts())); if (newSA2.canPlay()) { newAbilities.add(newAbilities.size(), newSA2); } @@ -1370,10 +1369,10 @@ public final class GameActionUtil { + " that shares a color with " + source.getName() + ">"; newSA.setPayCosts(new Cost(conspireCost, false).add(newSA.getPayCosts())); newSA.setDescription(sa.getDescription() + " (Conspire)"); - ArrayList newoacs = new ArrayList(); - newoacs.addAll(sa.getOptionalAdditionalCosts()); + + ArrayList newoacs = new ArrayList(sa.getOptionalAdditionalCosts()); + newoacs.add(keyword); newSA.setOptionalAdditionalCosts(newoacs); - newSA.addOptionalAdditionalCosts(keyword); if (newSA.canPlay()) { newAbilities.add(newAbilities.size(), newSA); } diff --git a/src/main/java/forge/game/player/HumanPlayer.java b/src/main/java/forge/game/player/HumanPlayer.java index dfa4fc0f1bb..764b73cd12d 100644 --- a/src/main/java/forge/game/player/HumanPlayer.java +++ b/src/main/java/forge/game/player/HumanPlayer.java @@ -17,7 +17,6 @@ */ package forge.game.player; -import java.util.ArrayList; import java.util.List; import forge.Card; @@ -218,7 +217,7 @@ public class HumanPlayer extends Player { */ public SpellAbility chooseOptionalAdditionalCosts(final SpellAbility original) { //final HashMap map = new HashMap(); - final ArrayList abilities = GameActionUtil.getOptionalAdditionalCosts(original); + final List abilities = GameActionUtil.getOptionalAdditionalCosts(original); if (!original.isSpell()) { return original;