diff --git a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeTargetEffect.java index 40f54779ca..f46fa4dc76 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeTargetEffect.java @@ -39,13 +39,15 @@ public class LoseLifeTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { + boolean applied = false; for (UUID playerId : targetPointer.getTargets(game, source)) { Player player = game.getPlayer(playerId); - if (player != null) { - player.loseLife(amount.calculate(game, source, this), game, false); + if (player != null + && player.loseLife(amount.calculate(game, source, this), game, false) > 0) { + applied = true; } } - return true; + return applied; } @Override diff --git a/Mage/src/main/java/mage/abilities/effects/common/SacrificeEffect.java b/Mage/src/main/java/mage/abilities/effects/common/SacrificeEffect.java index 9dabc05d3d..cf5006a114 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/SacrificeEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/SacrificeEffect.java @@ -46,6 +46,7 @@ public class SacrificeEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { + boolean applied = false; for (UUID playerId : targetPointer.getTargets(game, source)) { Player player = game.getPlayer(playerId); if (player != null) { @@ -56,19 +57,22 @@ public class SacrificeEffect extends OneShotEffect { amount = Math.min(amount, realCount); Target target = new TargetPermanent(amount, amount, newFilter, true); if (amount > 0 && target.canChoose(source.getSourceId(), player.getId(), game)) { - while (!target.isChosen() && target.canChoose(player.getId(), game) && player.canRespond()) { + while (!target.isChosen() + && target.canChoose(player.getId(), game) + && player.canRespond()) { player.chooseTarget(Outcome.Sacrifice, target, source, game); } for (int idx = 0; idx < target.getTargets().size(); idx++) { Permanent permanent = game.getPermanent(target.getTargets().get(idx)); - if (permanent != null) { - permanent.sacrifice(source.getSourceId(), game); + if (permanent != null + && permanent.sacrifice(source.getSourceId(), game)) { + applied = true; } } } } } - return true; + return applied; } public void setAmount(DynamicValue amount) {