From ce3bab8a33c2ae04e6941e74987ee54c85b4d09d Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Wed, 19 May 2021 00:09:55 +0200 Subject: [PATCH] Fix for Temporal Extortion --- .../src/main/java/forge/game/ability/AbilityUtils.java | 3 +-- forge-gui/src/main/java/forge/player/HumanPlay.java | 10 ++++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index d358d55f990..e032ec7137a 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -1551,8 +1551,7 @@ public class AbilityUtils { boolean alreadyPaid = false; for (Player payer : allPayers) { if (unlessCost.equals("LifeTotalHalfUp")) { - String halfup = Integer.toString((int) Math.ceil(payer.getLife() / 2.0)); - cost = new Cost("PayLife<" + halfup + ">", true); + cost = new Cost("PayLife", true); } alreadyPaid |= payer.getController().payCostToPreventEffect(cost, sa, alreadyPaid, allPayers); } diff --git a/forge-gui/src/main/java/forge/player/HumanPlay.java b/forge-gui/src/main/java/forge/player/HumanPlay.java index 8a76b21a2f3..2436caba15d 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlay.java +++ b/forge-gui/src/main/java/forge/player/HumanPlay.java @@ -198,8 +198,6 @@ public class HumanPlay { req.playAbility(!useOldTargets, false, true); } - // ------------------------------------------------------------------------ - private static int getAmountFromPart(CostPart part, Card source, SpellAbility sourceAbility) { String amountString = part.getAmount(); return StringUtils.isNumeric(amountString) ? Integer.parseInt(amountString) : AbilityUtils.calculateAmount(source, amountString, sourceAbility); @@ -267,11 +265,15 @@ public class HumanPlay { boolean mayRemovePart = true; if (part instanceof CostPayLife) { - final int amount = getAmountFromPart(part, source, sourceAbility); - if (!p.canPayLife(amount)) { + if (!part.canPay(sourceAbility, p)) { return false; } + int amount = getAmountFromPart(part, source, sourceAbility); + if (part.getAmount().contains("/Half")) { + amount = Math.max(amount, 0); + } + if (!p.getController().confirmPayment(part, Localizer.getInstance().getMessage("lblDoYouWantPayNLife", String.valueOf(amount)) + orString, sourceAbility)) { return false; }