From e56b8545c7ddf6bce363c4751c50858a09638f67 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Tue, 18 May 2021 23:36:56 +0200 Subject: [PATCH] Fix paying negative life --- forge-game/src/main/java/forge/game/cost/CostPayLife.java | 6 +++++- forge-game/src/main/java/forge/game/player/Player.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/cost/CostPayLife.java b/forge-game/src/main/java/forge/game/cost/CostPayLife.java index 117fba983c3..7953ec78f7e 100644 --- a/forge-game/src/main/java/forge/game/cost/CostPayLife.java +++ b/forge-game/src/main/java/forge/game/cost/CostPayLife.java @@ -76,9 +76,13 @@ public class CostPayLife extends CostPart { Integer amount = this.convertAmount(); if (amount == null) { // try to calculate when it's defined. amount = AbilityUtils.calculateAmount(ability.getHostCard(), getAmount(), ability); + // CR 107.1b + if (getAmount().contains("/Half")) { + amount = Math.max(amount, 0); + } } - if ((amount != null) && !payer.canPayLife(amount)) { + if (amount != null && !payer.canPayLife(amount)) { return false; } diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index b6043d78bbf..454026f3c6c 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -589,7 +589,7 @@ public class Player extends GameEntity implements Comparable { } public final boolean canPayLife(final int lifePayment) { - if (life < lifePayment) { + if (lifePayment > 0 && life < lifePayment) { return false; } return (lifePayment <= 0) || !hasKeyword("Your life total can't change.");