diff --git a/forge-game/src/main/java/forge/game/card/CardLists.java b/forge-game/src/main/java/forge/game/card/CardLists.java index 8820974382b..bbaa95b1bfc 100644 --- a/forge-game/src/main/java/forge/game/card/CardLists.java +++ b/forge-game/src/main/java/forge/game/card/CardLists.java @@ -350,11 +350,14 @@ public class CardLists { /** * Given a list of cards, return their combined power + * + * @param cardList the list of creature cards for which to sum the power + * @param ignoreNegativePower if true, treats negative power as 0 */ - public static int getTotalPower(Iterable cardList) { + public static int getTotalPower(Iterable cardList, boolean ignoreNegativePower) { int total = 0; for (final Card crd : cardList) { - total += crd.getNetPower(); + total += ignoreNegativePower ? Math.max(0, crd.getNetPower()) : crd.getNetPower(); } return total; } diff --git a/forge-game/src/main/java/forge/game/cost/CostTapType.java b/forge-game/src/main/java/forge/game/cost/CostTapType.java index 782452b9522..638a05b2022 100644 --- a/forge-game/src/main/java/forge/game/cost/CostTapType.java +++ b/forge-game/src/main/java/forge/game/cost/CostTapType.java @@ -148,7 +148,7 @@ public class CostTapType extends CostPartWithList { if (totalPower) { final int i = Integer.parseInt(totalP); - return CardLists.getTotalPower(typeList) >= i; + return CardLists.getTotalPower(typeList, true) >= i; } final Integer amount = this.convertAmount(); diff --git a/forge-gui/src/main/java/forge/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/player/HumanCostDecision.java index 34c3e62f2b3..5612617ab32 100644 --- a/forge-gui/src/main/java/forge/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/player/HumanCostDecision.java @@ -1169,7 +1169,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { inp.setCancelAllowed(true); inp.showAndWait(); - if (inp.hasCancelled() || CardLists.getTotalPower(inp.getSelected()) < i) { + if (inp.hasCancelled() || CardLists.getTotalPower(inp.getSelected(), true) < i) { return null; } return PaymentDecision.card(inp.getSelected());