Fix for Temporal Extortion

This commit is contained in:
tool4EvEr
2021-05-19 00:09:55 +02:00
parent e56b8545c7
commit ce3bab8a33
2 changed files with 7 additions and 6 deletions

View File

@@ -1551,8 +1551,7 @@ public class AbilityUtils {
boolean alreadyPaid = false; boolean alreadyPaid = false;
for (Player payer : allPayers) { for (Player payer : allPayers) {
if (unlessCost.equals("LifeTotalHalfUp")) { if (unlessCost.equals("LifeTotalHalfUp")) {
String halfup = Integer.toString((int) Math.ceil(payer.getLife() / 2.0)); cost = new Cost("PayLife<Count$YourLifeTotal/HalfUp>", true);
cost = new Cost("PayLife<" + halfup + ">", true);
} }
alreadyPaid |= payer.getController().payCostToPreventEffect(cost, sa, alreadyPaid, allPayers); alreadyPaid |= payer.getController().payCostToPreventEffect(cost, sa, alreadyPaid, allPayers);
} }

View File

@@ -198,8 +198,6 @@ public class HumanPlay {
req.playAbility(!useOldTargets, false, true); req.playAbility(!useOldTargets, false, true);
} }
// ------------------------------------------------------------------------
private static int getAmountFromPart(CostPart part, Card source, SpellAbility sourceAbility) { private static int getAmountFromPart(CostPart part, Card source, SpellAbility sourceAbility) {
String amountString = part.getAmount(); String amountString = part.getAmount();
return StringUtils.isNumeric(amountString) ? Integer.parseInt(amountString) : AbilityUtils.calculateAmount(source, amountString, sourceAbility); return StringUtils.isNumeric(amountString) ? Integer.parseInt(amountString) : AbilityUtils.calculateAmount(source, amountString, sourceAbility);
@@ -267,11 +265,15 @@ public class HumanPlay {
boolean mayRemovePart = true; boolean mayRemovePart = true;
if (part instanceof CostPayLife) { if (part instanceof CostPayLife) {
final int amount = getAmountFromPart(part, source, sourceAbility); if (!part.canPay(sourceAbility, p)) {
if (!p.canPayLife(amount)) {
return false; 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)) { if (!p.getController().confirmPayment(part, Localizer.getInstance().getMessage("lblDoYouWantPayNLife", String.valueOf(amount)) + orString, sourceAbility)) {
return false; return false;
} }