diff --git a/src/main/java/forge/card/cost/Cost.java b/src/main/java/forge/card/cost/Cost.java index 3de526c46ef..d0deb3e6f0b 100644 --- a/src/main/java/forge/card/cost/Cost.java +++ b/src/main/java/forge/card/cost/Cost.java @@ -83,6 +83,9 @@ public class Cost { * @return a boolean. */ public final boolean hasNoManaCost() { + if (this.getTotalMana().equals("")) { + return true; + } // This is only used for AI Mana Abilities, since none of these have optional costs // It's not as necessary for this functional for (final CostPart part : this.costParts) { diff --git a/src/main/java/forge/game/player/ComputerUtil.java b/src/main/java/forge/game/player/ComputerUtil.java index 65f8f92965d..9610d970f00 100644 --- a/src/main/java/forge/game/player/ComputerUtil.java +++ b/src/main/java/forge/game/player/ComputerUtil.java @@ -965,42 +965,6 @@ public class ComputerUtil { return cost; } - /** - *

- * getProduceableColors. - *

- * - * @param m - * a {@link forge.card.spellability.AbilityMana} object. - * @param player - * a {@link forge.Player} object. - * @return a {@link java.util.ArrayList} object. - * @since 1.0.15 - */ - /* - * public static ArrayList getProduceableColors(final AbilityMana m, - * final Player player) { final ArrayList colors = new - * ArrayList(); - * - * // if the mana ability is not avaiable move to the next one - * m.setActivatingPlayer(player); if (!m.canPlay()) { return colors; } - * - * if (!colors.contains(Constant.Color.BLACK) && m.isBasic() && - * m.mana().equals("B")) { colors.add(Constant.Color.BLACK); } if - * (!colors.contains(Constant.Color.WHITE) && m.isBasic() && - * m.mana().equals("W")) { colors.add(Constant.Color.WHITE); } if - * (!colors.contains(Constant.Color.GREEN) && m.isBasic() && - * m.mana().equals("G")) { colors.add(Constant.Color.GREEN); } if - * (!colors.contains(Constant.Color.RED) && m.isBasic() && - * m.mana().equals("R")) { colors.add(Constant.Color.RED); } if - * (!colors.contains(Constant.Color.BLUE) && m.isBasic() && - * m.mana().equals("U")) { colors.add(Constant.Color.BLUE); } if - * (!colors.contains(Constant.Color.COLORLESS) && m.isBasic() && - * m.mana().equals("1")) { colors.add(Constant.Color.COLORLESS); } - * - * return colors; } - */ - /** *

* getAvailableMana. @@ -1094,7 +1058,7 @@ public class ComputerUtil { } // don't use abilities with dangerous drawbacks - if (m.getSubAbility() != null) { + if (m.getSubAbility() != null && !card.getName().equals("Pristine Talisman")) { if (!m.getSubAbility().chkAIDrawback()) { continue; } @@ -1132,64 +1096,13 @@ public class ComputerUtil { sortedManaSources.addAll(fourManaSources); sortedManaSources.addAll(fiveManaSources); sortedManaSources.addAll(anyColorManaSources); + //use better creatures later + CardListUtil.sortByEvaluateCreature(otherManaSources); + otherManaSources.reverse(); sortedManaSources.addAll(otherManaSources); - return sortedManaSources; } // getAvailableMana() - // sorts the most needed mana abilities to come first - /** - *

- * sortForNeeded. - *

- * - * @param cost - * a {@link forge.card.mana.ManaCost} object. - * @param manaAbilities - * a {@link java.util.ArrayList} object. - * @param player - * a {@link forge.Player} object. - * @return a {@link java.util.ArrayList} object. - * @since 1.0.15 - */ - /* - * public static ArrayList sortForNeeded(final ManaCost cost, - * final ArrayList manaAbilities, final Player player) { - * - * ArrayList colors; - * - * final ArrayList colorsNeededToAvoidNegativeEffect = - * cost.getManaNeededToAvoidNegativeEffect(); - * - * final ArrayList res = new ArrayList(); - * - * final ManaCost onlyColored = new ManaCost(cost.toString()); - * - * onlyColored.removeColorlessMana(); - * - * for (final AbilityMana am : manaAbilities) { colors = - * ComputerUtil.getProduceableColors(am, player); for (int j = 0; j < - * colors.size(); j++) { if (onlyColored.isNeeded(colors.get(j))) { - * res.add(am); break; } for (final String col : - * colorsNeededToAvoidNegativeEffect) { if - * (col.equalsIgnoreCase(colors.get(j)) || - * CardUtil.getShortColor(col).equalsIgnoreCase(colors.get(j))) { - * res.add(am); } } } } - * - * for (final AbilityMana am : manaAbilities) { - * - * if (res.contains(am)) { break; } - * - * colors = ComputerUtil.getProduceableColors(am, player); for (int j = 0; j - * < colors.size(); j++) { if (cost.isNeeded(colors.get(j))) { res.add(am); - * break; } for (final String col : colorsNeededToAvoidNegativeEffect) { if - * (col.equalsIgnoreCase(colors.get(j)) || - * CardUtil.getShortColor(col).equalsIgnoreCase(colors.get(j))) { - * res.add(am); } } } } - * - * return res; } - */ - /** *

* mapManaSources.