diff --git a/Mage.Sets/src/mage/sets/alarareborn/SingeMindOgre.java b/Mage.Sets/src/mage/sets/alarareborn/SingeMindOgre.java index f54c93d52b8..f186f6bb052 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/SingeMindOgre.java +++ b/Mage.Sets/src/mage/sets/alarareborn/SingeMindOgre.java @@ -99,7 +99,7 @@ class SingeMindOgreEffect extends OneShotEffect { Card card = targetPlayer.getHand().getRandom(game); revealed.add(card); targetPlayer.revealCards("Singe-Mind Ogre", revealed, game); - targetPlayer.loseLife(card.getConvertedManaCost(), game); + targetPlayer.loseLife(card.getConvertedManaCost(), game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/apocalypse/LifeDeath.java b/Mage.Sets/src/mage/sets/apocalypse/LifeDeath.java index d14bb1ad56e..ee338e53137 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/LifeDeath.java +++ b/Mage.Sets/src/mage/sets/apocalypse/LifeDeath.java @@ -116,7 +116,7 @@ class DeathEffect extends OneShotEffect { if (game.getState().getZone(creatureCard.getId()).equals(Zone.GRAVEYARD)) { controller.moveCards(creatureCard, Zone.BATTLEFIELD, source, game); } - controller.loseLife(creatureCard.getConvertedManaCost(), game); + controller.loseLife(creatureCard.getConvertedManaCost(), game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/avacynrestored/EssenceHarvest.java b/Mage.Sets/src/mage/sets/avacynrestored/EssenceHarvest.java index f65f2c8f4cc..5f45c980177 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/EssenceHarvest.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/EssenceHarvest.java @@ -98,7 +98,7 @@ class EssenceHarvestEffect extends OneShotEffect { } if (amount > 0) { - targetPlayer.loseLife(amount, game); + targetPlayer.loseLife(amount, game, false); player.gainLife(amount, game); } return true; diff --git a/Mage.Sets/src/mage/sets/avacynrestored/KillingWave.java b/Mage.Sets/src/mage/sets/avacynrestored/KillingWave.java index 07c12d39bd3..85dc17d50d2 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/KillingWave.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/KillingWave.java @@ -122,7 +122,7 @@ class KillingWaveEffect extends OneShotEffect { if (lifePaid > 0) { Player player = game.getPlayer(playerId); if (player != null) { - player.loseLife(lifePaid, game); + player.loseLife(lifePaid, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/ScourgeOfNumai.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/ScourgeOfNumai.java index 0b3846df142..d3567664d84 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/ScourgeOfNumai.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/ScourgeOfNumai.java @@ -91,7 +91,7 @@ class ScourgeOfNumaiEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { if (game.getBattlefield().countAll(new FilterCreaturePermanent("Ogre", "Ogre"), source.getControllerId(), game) < 1) { - controller.loseLife(2, game); + controller.loseLife(2, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/TakenumaBleeder.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/TakenumaBleeder.java index 86c25947fca..c0571c4a711 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/TakenumaBleeder.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/TakenumaBleeder.java @@ -91,7 +91,7 @@ class TakenumaBleederEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { if (game.getBattlefield().countAll(new FilterCreaturePermanent("Demon", "Demon"), source.getControllerId(), game) < 1) { - controller.loseLife(1, game); + controller.loseLife(1, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/bornofthegods/PainSeer.java b/Mage.Sets/src/mage/sets/bornofthegods/PainSeer.java index 06feebb6fd4..8234acf8a60 100644 --- a/Mage.Sets/src/mage/sets/bornofthegods/PainSeer.java +++ b/Mage.Sets/src/mage/sets/bornofthegods/PainSeer.java @@ -103,7 +103,7 @@ class PainSeerEffect extends OneShotEffect { if (card != null && card.moveToZone(Zone.HAND, source.getSourceId(), game, false)) { - player.loseLife(card.getConvertedManaCost(), game); + player.loseLife(card.getConvertedManaCost(), game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/bornofthegods/ServantOfTymaret.java b/Mage.Sets/src/mage/sets/bornofthegods/ServantOfTymaret.java index b0ed08ede1b..2bb656fd890 100644 --- a/Mage.Sets/src/mage/sets/bornofthegods/ServantOfTymaret.java +++ b/Mage.Sets/src/mage/sets/bornofthegods/ServantOfTymaret.java @@ -88,7 +88,7 @@ class ServantOfTymaretEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { int lostAmount = 0; for (UUID opponentId: game.getOpponents(source.getControllerId())) { - lostAmount += game.getPlayer(opponentId).loseLife(1, game); + lostAmount += game.getPlayer(opponentId).loseLife(1, game, false); } game.getPlayer(source.getControllerId()).gainLife(lostAmount, game); return true; diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/DevouringGreed.java b/Mage.Sets/src/mage/sets/championsofkamigawa/DevouringGreed.java index 0d0f715f66f..6e08a16c527 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/DevouringGreed.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/DevouringGreed.java @@ -108,7 +108,7 @@ class DevouringGreedEffect extends OneShotEffect { Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); Player sourcePlayer = game.getPlayer(source.getControllerId()); if (targetPlayer != null && sourcePlayer != null) { - targetPlayer.loseLife(amount, game); + targetPlayer.loseLife(amount, game, false); sourcePlayer.gainLife(amount, game); return true; } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KokushoTheEveningStar.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KokushoTheEveningStar.java index ff26c48570e..1f8d2c523b8 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KokushoTheEveningStar.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KokushoTheEveningStar.java @@ -84,7 +84,7 @@ class KokushoTheEveningStarEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { int loseLife = 0; for (UUID opponentId : game.getOpponents(source.getControllerId())) { - loseLife += game.getPlayer(opponentId).loseLife(5, game); + loseLife += game.getPlayer(opponentId).loseLife(5, game, false); } if (loseLife > 0) game.getPlayer(source.getControllerId()).gainLife(loseLife, game); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/NezumiShortfang.java b/Mage.Sets/src/mage/sets/championsofkamigawa/NezumiShortfang.java index bd919aec3a5..c25af028c06 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/NezumiShortfang.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/NezumiShortfang.java @@ -128,7 +128,7 @@ class StabwhiskerLoseLifeEffect extends OneShotEffect { if (opponent != null) { int lifeLose = 3 - opponent.getHand().size(); if (lifeLose > 0 ) { - opponent.loseLife(lifeLose, game); + opponent.loseLife(lifeLose, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/commander2013/LimDulsVault.java b/Mage.Sets/src/mage/sets/commander2013/LimDulsVault.java index 676110c765d..fad47a9d536 100644 --- a/Mage.Sets/src/mage/sets/commander2013/LimDulsVault.java +++ b/Mage.Sets/src/mage/sets/commander2013/LimDulsVault.java @@ -106,7 +106,7 @@ class LimDulsVaultEffect extends OneShotEffect { player.lookAtCards("Lim-Dul's Vault", cards, game); doAgain = player.chooseUse(outcome, "Pay 1 life and look at the next 5 cards?", source, game); if (doAgain) { - player.loseLife(1, game); + player.loseLife(1, game, false); } else { player.shuffleLibrary(source, game); } diff --git a/Mage.Sets/src/mage/sets/commander2014/ObNixilisOfTheBlackOath.java b/Mage.Sets/src/mage/sets/commander2014/ObNixilisOfTheBlackOath.java index 2bfe322e0cf..29f2999f9f4 100644 --- a/Mage.Sets/src/mage/sets/commander2014/ObNixilisOfTheBlackOath.java +++ b/Mage.Sets/src/mage/sets/commander2014/ObNixilisOfTheBlackOath.java @@ -112,7 +112,7 @@ class ObNixilisOfTheBlackOathEffect1 extends OneShotEffect { for (UUID opponentId : game.getOpponents(source.getControllerId())) { Player opponent = game.getPlayer(opponentId); if (opponent != null) { - loseLife += opponent.loseLife(1, game); + loseLife += opponent.loseLife(1, game, false); } } controller.gainLife(loseLife, game); diff --git a/Mage.Sets/src/mage/sets/commander2014/RavingDead.java b/Mage.Sets/src/mage/sets/commander2014/RavingDead.java index b4bcb686eb8..4d770dc60e7 100644 --- a/Mage.Sets/src/mage/sets/commander2014/RavingDead.java +++ b/Mage.Sets/src/mage/sets/commander2014/RavingDead.java @@ -139,7 +139,7 @@ class RavingDeadDamageEffect extends OneShotEffect { if (player != null) { Integer amount = (int) Math.ceil(player.getLife() / 2f); if (amount > 0) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/commander2015/DeadlyTempest.java b/Mage.Sets/src/mage/sets/commander2015/DeadlyTempest.java index f9c53c64dde..63913f1db6e 100644 --- a/Mage.Sets/src/mage/sets/commander2015/DeadlyTempest.java +++ b/Mage.Sets/src/mage/sets/commander2015/DeadlyTempest.java @@ -96,7 +96,7 @@ class DeadlyTempestEffect extends OneShotEffect { if (count > 0) { Player player = game.getPlayer(playerId); if (player != null) { - player.loseLife(count, game); + player.loseLife(count, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/commander2015/Scytheclaw.java b/Mage.Sets/src/mage/sets/commander2015/Scytheclaw.java index 33aff6d7103..2331557ecd2 100644 --- a/Mage.Sets/src/mage/sets/commander2015/Scytheclaw.java +++ b/Mage.Sets/src/mage/sets/commander2015/Scytheclaw.java @@ -145,7 +145,7 @@ class ScytheclawEffect extends OneShotEffect { if (player != null) { Integer amount = (int) Math.ceil(player.getLife() / 2f); if (amount > 0) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/conflux/BloodTyrant.java b/Mage.Sets/src/mage/sets/conflux/BloodTyrant.java index 599932bc497..5e10f35e162 100644 --- a/Mage.Sets/src/mage/sets/conflux/BloodTyrant.java +++ b/Mage.Sets/src/mage/sets/conflux/BloodTyrant.java @@ -142,7 +142,7 @@ class BloodTyrantEffect extends OneShotEffect { for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { - if (player.loseLife(1, game) > 0) { + if (player.loseLife(1, game, false) > 0) { counters++; } } diff --git a/Mage.Sets/src/mage/sets/conflux/InfectiousHorror.java b/Mage.Sets/src/mage/sets/conflux/InfectiousHorror.java index ba0b3ee8593..a3bec6a7926 100644 --- a/Mage.Sets/src/mage/sets/conflux/InfectiousHorror.java +++ b/Mage.Sets/src/mage/sets/conflux/InfectiousHorror.java @@ -84,7 +84,7 @@ class InfectiousHorrorEffect extends OneShotEffect { for (UUID opponentId : game.getOpponents(source.getControllerId())) { Player opponent = game.getPlayer(opponentId); if (opponent != null) { - opponent.loseLife(2, game); + opponent.loseLife(2, game, false); } } return true; diff --git a/Mage.Sets/src/mage/sets/conflux/SludgeStrider.java b/Mage.Sets/src/mage/sets/conflux/SludgeStrider.java index 1f19850be61..4b23c74df7f 100644 --- a/Mage.Sets/src/mage/sets/conflux/SludgeStrider.java +++ b/Mage.Sets/src/mage/sets/conflux/SludgeStrider.java @@ -155,7 +155,7 @@ class SludgeStriderEffect extends OneShotEffect { Player targetPlayer = game.getPlayer(source.getFirstTarget()); Player you = game.getPlayer(source.getControllerId()); if (targetPlayer != null) { - targetPlayer.loseLife(1, game); + targetPlayer.loseLife(1, game, false); } if (you != null) { you.gainLife(1, game); diff --git a/Mage.Sets/src/mage/sets/conspiracy/StrongholdDiscipline.java b/Mage.Sets/src/mage/sets/conspiracy/StrongholdDiscipline.java index 19482607b39..20b2d360417 100644 --- a/Mage.Sets/src/mage/sets/conspiracy/StrongholdDiscipline.java +++ b/Mage.Sets/src/mage/sets/conspiracy/StrongholdDiscipline.java @@ -87,7 +87,7 @@ class StrongholdDisciplineEffect extends OneShotEffect { if (count > 0) { Player player = game.getPlayer(playerId); if (player != null) { - player.loseLife(count, game); + player.loseLife(count, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/conspiracy/TyrantsChoice.java b/Mage.Sets/src/mage/sets/conspiracy/TyrantsChoice.java index 9cd9d26e3a6..bf44b88a222 100644 --- a/Mage.Sets/src/mage/sets/conspiracy/TyrantsChoice.java +++ b/Mage.Sets/src/mage/sets/conspiracy/TyrantsChoice.java @@ -122,7 +122,7 @@ class TyrantsChoiceLoseLifeEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { for (UUID opponentId : game.getOpponents(source.getControllerId())) { - game.getPlayer(opponentId).loseLife(4, game); + game.getPlayer(opponentId).loseLife(4, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/conspiracytakethecrown/KayaGhostAssassin.java b/Mage.Sets/src/mage/sets/conspiracytakethecrown/KayaGhostAssassin.java index f8993d9c67c..0fbe0855649 100644 --- a/Mage.Sets/src/mage/sets/conspiracytakethecrown/KayaGhostAssassin.java +++ b/Mage.Sets/src/mage/sets/conspiracytakethecrown/KayaGhostAssassin.java @@ -142,7 +142,7 @@ class KayaGhostAssassinEffect extends OneShotEffect { game.addDelayedTriggeredAbility(delayedAbility, source); } } - controller.loseLife(2, game); + controller.loseLife(2, game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/dissension/RainOfGore.java b/Mage.Sets/src/mage/sets/dissension/RainOfGore.java index 67dfc8b0ec3..d2089d9324a 100644 --- a/Mage.Sets/src/mage/sets/dissension/RainOfGore.java +++ b/Mage.Sets/src/mage/sets/dissension/RainOfGore.java @@ -89,7 +89,7 @@ class RainOfGoreEffect extends ReplacementEffectImpl { public boolean replaceEvent(GameEvent event, Ability source, Game game) { Player player = game.getPlayer(event.getPlayerId()); if (player != null) { - player.loseLife(event.getAmount(), game); + player.loseLife(event.getAmount(), game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/BloodScrivener.java b/Mage.Sets/src/mage/sets/dragonsmaze/BloodScrivener.java index b9884870f55..d07805083a3 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/BloodScrivener.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/BloodScrivener.java @@ -102,7 +102,7 @@ class BloodScrivenerReplacementEffect extends ReplacementEffectImpl { Player player = game.getPlayer(event.getPlayerId()); if (player != null) { player.drawCards(2, game, event.getAppliedEffects()); - player.loseLife(1, game); + player.loseLife(1, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/DamnablePact.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/DamnablePact.java index 3c6299d4ce2..1fc2dd7a60b 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/DamnablePact.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/DamnablePact.java @@ -80,7 +80,7 @@ class DamnablePactEffect extends OneShotEffect { Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); if (targetPlayer != null) { targetPlayer.drawCards(source.getManaCostsToPay().getX(), game); - targetPlayer.loseLife(source.getManaCostsToPay().getX(), game); + targetPlayer.loseLife(source.getManaCostsToPay().getX(), game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/FoulTongueShriek.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/FoulTongueShriek.java index 55583ed9062..d9d9b6929f7 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/FoulTongueShriek.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/FoulTongueShriek.java @@ -96,7 +96,7 @@ class FoulTongueShriekEffect extends OneShotEffect { if (controller != null && targetOpponent != null) { int amount = new AttackingFilterCreatureCount(filter).calculate(game, source, this); if (amount > 0) { - targetOpponent.loseLife(amount, game); + targetOpponent.loseLife(amount, game, false); controller.gainLife(amount, game); } return true; diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java index d1810df81af..9e157541d11 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java @@ -107,7 +107,7 @@ class SelfInflictedWoundEffect extends OneShotEffect { Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null) { if (permanent.sacrifice(source.getSourceId(), game)) { - targetOpponent.loseLife(2, game); + targetOpponent.loseLife(2, game, false); } } diff --git a/Mage.Sets/src/mage/sets/eighthedition/MurderousBetrayal.java b/Mage.Sets/src/mage/sets/eighthedition/MurderousBetrayal.java index 5cc70e8b89b..08f8dcaf223 100644 --- a/Mage.Sets/src/mage/sets/eighthedition/MurderousBetrayal.java +++ b/Mage.Sets/src/mage/sets/eighthedition/MurderousBetrayal.java @@ -106,7 +106,7 @@ class MurderousBetrayalCost extends CostImpl { if (lifeToPay < 0) { this.paid = true; } else { - this.paid = (controller.loseLife(lifeToPay, game) == lifeToPay); + this.paid = (controller.loseLife(lifeToPay, game, false) == lifeToPay); } return this.paid; } diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/CertainDeath.java b/Mage.Sets/src/mage/sets/eldritchmoon/CertainDeath.java index 639640636f0..8c7d77f03d4 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/CertainDeath.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/CertainDeath.java @@ -88,7 +88,7 @@ class CertainDeathEffect extends OneShotEffect { permanent.destroy(source.getSourceId(), game, false); Player permController = game.getPlayer(permanent.getControllerId()); if (permController != null) { - permController.loseLife(2, game); + permController.loseLife(2, game, false); you.gainLife(2, game); return true; } diff --git a/Mage.Sets/src/mage/sets/eventide/BatwingBrume.java b/Mage.Sets/src/mage/sets/eventide/BatwingBrume.java index f19dc2b45ae..b4ea3b2910e 100644 --- a/Mage.Sets/src/mage/sets/eventide/BatwingBrume.java +++ b/Mage.Sets/src/mage/sets/eventide/BatwingBrume.java @@ -102,7 +102,7 @@ class BatwingBrumeEffect extends OneShotEffect { if (amount > 0) { Player player = game.getPlayer(playerId); if (player != null) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/eventide/SaplingOfColfenor.java b/Mage.Sets/src/mage/sets/eventide/SaplingOfColfenor.java index 672c14c919f..e05d9f42030 100644 --- a/Mage.Sets/src/mage/sets/eventide/SaplingOfColfenor.java +++ b/Mage.Sets/src/mage/sets/eventide/SaplingOfColfenor.java @@ -107,7 +107,7 @@ class SaplingOfColfenorEffect extends OneShotEffect { controller.revealCards(sourceObject.getIdName(), cards, game); if (card.getCardType().contains(CardType.CREATURE)) { controller.gainLife(card.getToughness().getValue(), game); - controller.loseLife(card.getPower().getValue(), game); + controller.loseLife(card.getPower().getValue(), game, false); return controller.moveCards(cards.getCards(game), Zone.HAND, source, game); } } diff --git a/Mage.Sets/src/mage/sets/eventide/SootImp.java b/Mage.Sets/src/mage/sets/eventide/SootImp.java index cf2eca42950..19863170994 100644 --- a/Mage.Sets/src/mage/sets/eventide/SootImp.java +++ b/Mage.Sets/src/mage/sets/eventide/SootImp.java @@ -103,7 +103,7 @@ class SootImpEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player caster = game.getPlayer(targetPointer.getFirst(game, source)); if (caster != null) { - caster.loseLife(1, game); + caster.loseLife(1, game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/eventide/SoulReap.java b/Mage.Sets/src/mage/sets/eventide/SoulReap.java index f2fda13742f..11b00c0a384 100644 --- a/Mage.Sets/src/mage/sets/eventide/SoulReap.java +++ b/Mage.Sets/src/mage/sets/eventide/SoulReap.java @@ -168,7 +168,7 @@ class SoulReapEffect extends OneShotEffect { if (creature != null) { Player controller = game.getPlayer(creature.getControllerId()); if (controller != null) { - controller.loseLife(3, game); + controller.loseLife(3, game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/fifthdawn/DevourInShadow.java b/Mage.Sets/src/mage/sets/fifthdawn/DevourInShadow.java index 9adc25d11d4..f1281790492 100644 --- a/Mage.Sets/src/mage/sets/fifthdawn/DevourInShadow.java +++ b/Mage.Sets/src/mage/sets/fifthdawn/DevourInShadow.java @@ -90,7 +90,7 @@ class DevourInShadowEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); Permanent target = game.getPermanentOrLKIBattlefield(this.getTargetPointer().getFirst(game, source)); if (player != null && target != null) { - player.loseLife(target.getToughness().getValue(), game); + player.loseLife(target.getToughness().getValue(), game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/fifthedition/Pox.java b/Mage.Sets/src/mage/sets/fifthedition/Pox.java index e5fb118606d..ad9b6e9f811 100644 --- a/Mage.Sets/src/mage/sets/fifthedition/Pox.java +++ b/Mage.Sets/src/mage/sets/fifthedition/Pox.java @@ -93,7 +93,7 @@ class PoxEffect extends OneShotEffect { Player player = game.getPlayer(playerId); if (player != null) { int lifeToLose = (int) Math.ceil(player.getLife() / 3.0); - player.loseLife(lifeToLose, game); + player.loseLife(lifeToLose, game, false); } } // then discards a third of the cards in his or her hand, diff --git a/Mage.Sets/src/mage/sets/fifthedition/SylvanLibrary.java b/Mage.Sets/src/mage/sets/fifthedition/SylvanLibrary.java index f479557f9e6..7dc23bd07e8 100644 --- a/Mage.Sets/src/mage/sets/fifthedition/SylvanLibrary.java +++ b/Mage.Sets/src/mage/sets/fifthedition/SylvanLibrary.java @@ -126,7 +126,7 @@ class SylvanLibraryEffect extends OneShotEffect { if (controller.canPayLifeCost() && controller.getLife() >= 4 && controller.chooseUse(outcome, "Pay 4 life for " + card.getLogName() + "? (Otherwise it's put on top of your library)", source, game)) { - controller.loseLife(4, game); + controller.loseLife(4, game, false); game.informPlayers(controller.getLogName() + " pays 4 life to keep a card on hand"); } else { cardsPutBack.add(card); diff --git a/Mage.Sets/src/mage/sets/futuresight/MinionsMurmurs.java b/Mage.Sets/src/mage/sets/futuresight/MinionsMurmurs.java index cc280927c3a..ffb449841a5 100644 --- a/Mage.Sets/src/mage/sets/futuresight/MinionsMurmurs.java +++ b/Mage.Sets/src/mage/sets/futuresight/MinionsMurmurs.java @@ -83,7 +83,7 @@ public class MinionsMurmurs extends CardImpl { if (controller != null) { int creaturesControlled = game.getBattlefield().countAll(new FilterCreaturePermanent(), controller.getId(), game); controller.drawCards(creaturesControlled, game); - controller.loseLife(creaturesControlled, game); + controller.loseLife(creaturesControlled, game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/gatecrash/DuskmantleSeer.java b/Mage.Sets/src/mage/sets/gatecrash/DuskmantleSeer.java index 59fd04e198e..e21629a5c82 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/DuskmantleSeer.java +++ b/Mage.Sets/src/mage/sets/gatecrash/DuskmantleSeer.java @@ -107,7 +107,7 @@ class DuskmantleSeerEffect extends OneShotEffect { Cards cards = new CardsImpl(); cards.add(card); player.revealCards(sourceCard.getName() + ": Revealed by " + player.getName(), cards, game); - player.loseLife(card.getConvertedManaCost(), game); + player.loseLife(card.getConvertedManaCost(), game, false); card.moveToZone(Zone.HAND, source.getSourceId(), game, true); } } diff --git a/Mage.Sets/src/mage/sets/gatecrash/OrzhovCharm.java b/Mage.Sets/src/mage/sets/gatecrash/OrzhovCharm.java index c28725d324b..f02786c647d 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/OrzhovCharm.java +++ b/Mage.Sets/src/mage/sets/gatecrash/OrzhovCharm.java @@ -156,7 +156,7 @@ class OrzhovCharmDestroyAndLoseLifeEffect extends OneShotEffect { int toughness = target.getToughness().getValue(); target.destroy(source.getSourceId(), game, false); if (toughness > 0) { - controller.loseLife(toughness, game); + controller.loseLife(toughness, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/gatecrash/VizkopaConfessor.java b/Mage.Sets/src/mage/sets/gatecrash/VizkopaConfessor.java index 0504c3f7018..a12faaca5c3 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/VizkopaConfessor.java +++ b/Mage.Sets/src/mage/sets/gatecrash/VizkopaConfessor.java @@ -107,7 +107,7 @@ class VizkopaConfessorEffect extends OneShotEffect { if (controller != null && targetPlayer != null && sourceCard != null) { int payLife = controller.getAmount(0, controller.getLife(),"Pay how many life?", game); if (payLife > 0) { - controller.loseLife(payLife, game); + controller.loseLife(payLife, game, false); game.informPlayers(new StringBuilder(sourceCard.getName()).append(": ").append(controller.getLogName()).append(" pays ").append(payLife).append(" life").toString()); Cards cardsInHand = new CardsImpl(); diff --git a/Mage.Sets/src/mage/sets/gatecrash/VizkopaGuildmage.java b/Mage.Sets/src/mage/sets/gatecrash/VizkopaGuildmage.java index 936a2557b7b..5223172a7e0 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/VizkopaGuildmage.java +++ b/Mage.Sets/src/mage/sets/gatecrash/VizkopaGuildmage.java @@ -154,7 +154,7 @@ class OpponentsLoseLifeEffect extends OneShotEffect { for (UUID opponentId: game.getOpponents(source.getControllerId())) { Player opponent = game.getPlayer(opponentId); if (opponent != null) { - opponent.loseLife(amountLifeGained, game); + opponent.loseLife(amountLifeGained, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/guildpact/AgentOfMasks.java b/Mage.Sets/src/mage/sets/guildpact/AgentOfMasks.java index 043c337af63..c54e7b98a15 100644 --- a/Mage.Sets/src/mage/sets/guildpact/AgentOfMasks.java +++ b/Mage.Sets/src/mage/sets/guildpact/AgentOfMasks.java @@ -82,7 +82,7 @@ class AgentOfMasksEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { int loseLife = 0; for (UUID opponentId : game.getOpponents(source.getControllerId())) { - loseLife += game.getPlayer(opponentId).loseLife(1, game); + loseLife += game.getPlayer(opponentId).loseLife(1, game, false); } if (loseLife > 0) game.getPlayer(source.getControllerId()).gainLife(loseLife, game); diff --git a/Mage.Sets/src/mage/sets/guildpact/GhostCouncilOfOrzhova.java b/Mage.Sets/src/mage/sets/guildpact/GhostCouncilOfOrzhova.java index 7e521f65272..93757090799 100644 --- a/Mage.Sets/src/mage/sets/guildpact/GhostCouncilOfOrzhova.java +++ b/Mage.Sets/src/mage/sets/guildpact/GhostCouncilOfOrzhova.java @@ -99,7 +99,7 @@ class GhostCouncilOfOrzhovaEffect extends OneShotEffect { Player targetPlayer = game.getPlayer(source.getFirstTarget()); Player controllerPlayer = game.getPlayer(source.getControllerId()); if (targetPlayer != null && controllerPlayer != null) { - targetPlayer.loseLife(1, game); + targetPlayer.loseLife(1, game, false); controllerPlayer.gainLife(1, game); } return false; diff --git a/Mage.Sets/src/mage/sets/guildpact/SoulsOfTheFaultless.java b/Mage.Sets/src/mage/sets/guildpact/SoulsOfTheFaultless.java index 698f08914d5..de23aa7d7ac 100644 --- a/Mage.Sets/src/mage/sets/guildpact/SoulsOfTheFaultless.java +++ b/Mage.Sets/src/mage/sets/guildpact/SoulsOfTheFaultless.java @@ -148,7 +148,7 @@ class SoulsOfTheFaultlessEffect extends OneShotEffect { UUID attackerId = (UUID) this.getValue("attackerId"); Player attacker = game.getPlayer(attackerId); if (attacker != null) { - attacker.loseLife(amount, game); + attacker.loseLife(amount, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/iceage/GameOfChaos.java b/Mage.Sets/src/mage/sets/iceage/GameOfChaos.java index 55abf17a1b2..45420d89d80 100644 --- a/Mage.Sets/src/mage/sets/iceage/GameOfChaos.java +++ b/Mage.Sets/src/mage/sets/iceage/GameOfChaos.java @@ -97,13 +97,13 @@ class GameOfChaosEffect extends OneShotEffect { if (youWinFlip) { // flipper of coin wins, flipper gain 1 and non-flipper loses 1 you.gainLife(lifeAmount, game); - targetOpponent.loseLife(lifeAmount, game); + targetOpponent.loseLife(lifeAmount, game, false); if (targetOpponent.canRespond() && you.canRespond()) { continueFlipping = you.chooseUse(outcome, "Flip again?", source, game); controllerWonLast = true; } } else { // non-flipper wins, flipper lose 1 and non-flipper gains 1 - you.loseLife(lifeAmount, game); + you.loseLife(lifeAmount, game, false); targetOpponent.gainLife(lifeAmount, game); if (targetOpponent.canRespond() && you.canRespond()) { continueFlipping = targetOpponent.chooseUse(outcome, "Flip again?", source, game); diff --git a/Mage.Sets/src/mage/sets/iceage/ZursWeirding.java b/Mage.Sets/src/mage/sets/iceage/ZursWeirding.java index 0c102475bc1..aedbb0dc880 100644 --- a/Mage.Sets/src/mage/sets/iceage/ZursWeirding.java +++ b/Mage.Sets/src/mage/sets/iceage/ZursWeirding.java @@ -114,7 +114,7 @@ class ZursWeirdingReplacementEffect extends ReplacementEffectImpl { if (otherPlayer.canPayLifeCost() && otherPlayer.getLife() >= 2 && otherPlayer.chooseUse(Outcome.Benefit, message, source, game)) { - otherPlayer.loseLife(2, game); + otherPlayer.loseLife(2, game, false); player.moveCards(card, Zone.GRAVEYARD, source, game); break; } diff --git a/Mage.Sets/src/mage/sets/invasion/PhyrexianDelver.java b/Mage.Sets/src/mage/sets/invasion/PhyrexianDelver.java index afb061f7cb5..db189c6d5b2 100644 --- a/Mage.Sets/src/mage/sets/invasion/PhyrexianDelver.java +++ b/Mage.Sets/src/mage/sets/invasion/PhyrexianDelver.java @@ -100,7 +100,7 @@ class PhyrexianDelverEffect extends OneShotEffect { if (game.getState().getZone(creatureCard.getId()).equals(Zone.GRAVEYARD)) { result = controller.moveCards(creatureCard, Zone.BATTLEFIELD, source, game);; } - controller.loseLife(creatureCard.getConvertedManaCost(), game); + controller.loseLife(creatureCard.getConvertedManaCost(), game, false); return result; } return false; diff --git a/Mage.Sets/src/mage/sets/judgment/DeathWish.java b/Mage.Sets/src/mage/sets/judgment/DeathWish.java index 916406c52d9..dbb4b110965 100644 --- a/Mage.Sets/src/mage/sets/judgment/DeathWish.java +++ b/Mage.Sets/src/mage/sets/judgment/DeathWish.java @@ -107,7 +107,7 @@ class DeathWishEffect extends OneShotEffect { int amount = (controller.getLife() + 1) / 2; if (amount > 0) { - controller.loseLife(amount, game); + controller.loseLife(amount, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/kaladesh/ChandraTorchOfDefiance.java b/Mage.Sets/src/mage/sets/kaladesh/ChandraTorchOfDefiance.java index 93decd6b223..a68a044242b 100644 --- a/Mage.Sets/src/mage/sets/kaladesh/ChandraTorchOfDefiance.java +++ b/Mage.Sets/src/mage/sets/kaladesh/ChandraTorchOfDefiance.java @@ -119,10 +119,17 @@ class ChandraTorchOfDefianceEffect extends OneShotEffect { Library library = controller.getLibrary(); Card card = library.removeFromTop(game); if (card != null) { + boolean exiledCardWasCast = false; controller.moveCardToExileWithInfo(card, source.getSourceId(), sourceObject.getIdName(), source.getSourceId(), game, Zone.LIBRARY, true); if (controller.chooseUse(Outcome.Benefit, "Cast the card? (You still pay the costs)", source, game) && !card.getCardType().contains(CardType.LAND)) { - controller.cast(card.getSpellAbility(), game, false); - } else { +// LinkedHashMap useableAbilities = controller.getUseableActivatedAbilities(card, Zone.EXILED, game); +// for (ActivatedAbility ability : useableAbilities.values()) { +// +// } +// controller.activateAbility(useableAbilities, game); + exiledCardWasCast = controller.cast(card.getSpellAbility(), game, false); + } + if (!exiledCardWasCast) { new DamagePlayersEffect(Outcome.Damage, new StaticValue(2), TargetController.OPPONENT).apply(game, source); } } diff --git a/Mage.Sets/src/mage/sets/lorwyn/HoardersGreed.java b/Mage.Sets/src/mage/sets/lorwyn/HoardersGreed.java index 58200688142..ad6b8a67ac8 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/HoardersGreed.java +++ b/Mage.Sets/src/mage/sets/lorwyn/HoardersGreed.java @@ -84,7 +84,7 @@ class HoardersGreedEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { do { - controller.loseLife(2, game); + controller.loseLife(2, game, false); controller.drawCards(2, game); } while (controller.canRespond() && ClashEffect.getInstance().apply(game, source)); return true; diff --git a/Mage.Sets/src/mage/sets/magic2010/XathridDemon.java b/Mage.Sets/src/mage/sets/magic2010/XathridDemon.java index 5ea35aad294..0f1abd45743 100644 --- a/Mage.Sets/src/mage/sets/magic2010/XathridDemon.java +++ b/Mage.Sets/src/mage/sets/magic2010/XathridDemon.java @@ -122,7 +122,7 @@ class XathridDemonEffect extends OneShotEffect { for (UUID opponentId : opponents) { Player opponent = game.getPlayer(opponentId); if (opponent != null) { - opponent.loseLife(amount, game); + opponent.loseLife(amount, game, false); } } } @@ -130,7 +130,7 @@ class XathridDemonEffect extends OneShotEffect { } } else { sourcePermanent.tap(game); - controller.loseLife(7, game); + controller.loseLife(7, game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java b/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java index 6b9f08144b1..f34ab4caf6d 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java +++ b/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java @@ -85,7 +85,7 @@ class DarkTutelageEffect extends OneShotEffect { Card card = player.getLibrary().removeFromTop(game); if (card != null) { card.moveToZone(Zone.HAND, source.getSourceId(), game, false); - player.loseLife(card.getConvertedManaCost(), game); + player.loseLife(card.getConvertedManaCost(), game, false); Cards cards = new CardsImpl(); cards.add(card); player.revealCards("Dark Tutelage", cards, game); diff --git a/Mage.Sets/src/mage/sets/magic2014/BubblingCauldron.java b/Mage.Sets/src/mage/sets/magic2014/BubblingCauldron.java index 7f4bba97884..5d1c8086b45 100644 --- a/Mage.Sets/src/mage/sets/magic2014/BubblingCauldron.java +++ b/Mage.Sets/src/mage/sets/magic2014/BubblingCauldron.java @@ -98,7 +98,7 @@ class BubblingCauldronEffect extends OneShotEffect { int damage = 0; for (UUID opponentId: game.getOpponents(source.getControllerId())) { Player opponent = game.getPlayer(opponentId); - damage += opponent.loseLife(4, game); + damage += opponent.loseLife(4, game, false); } game.getPlayer(source.getControllerId()).gainLife(damage, game); return true; diff --git a/Mage.Sets/src/mage/sets/magic2015/ObNixilisUnshackled.java b/Mage.Sets/src/mage/sets/magic2015/ObNixilisUnshackled.java index 6c923df9494..2042ac835e1 100644 --- a/Mage.Sets/src/mage/sets/magic2015/ObNixilisUnshackled.java +++ b/Mage.Sets/src/mage/sets/magic2015/ObNixilisUnshackled.java @@ -146,7 +146,7 @@ class ObNixilisUnshackledEffect extends SacrificeEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(this.getTargetPointer().getFirst(game, source)); if (player != null) { - player.loseLife(10, game); + player.loseLife(10, game, false); } return super.apply(game, source); } diff --git a/Mage.Sets/src/mage/sets/magicorigins/GravebladeMarauder.java b/Mage.Sets/src/mage/sets/magicorigins/GravebladeMarauder.java index 7eee486c813..d075f31634c 100644 --- a/Mage.Sets/src/mage/sets/magicorigins/GravebladeMarauder.java +++ b/Mage.Sets/src/mage/sets/magicorigins/GravebladeMarauder.java @@ -93,7 +93,7 @@ class GravebladeMarauderEffect extends OneShotEffect { Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); Player controller = game.getPlayer(source.getControllerId()); if (targetPlayer != null && controller != null) { - targetPlayer.loseLife(controller.getGraveyard().count(new FilterCreatureCard(), game), game); + targetPlayer.loseLife(controller.getGraveyard().count(new FilterCreatureCard(), game), game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/magicorigins/TaintedRemedy.java b/Mage.Sets/src/mage/sets/magicorigins/TaintedRemedy.java index bee1ed6a9e0..4ff9b944963 100644 --- a/Mage.Sets/src/mage/sets/magicorigins/TaintedRemedy.java +++ b/Mage.Sets/src/mage/sets/magicorigins/TaintedRemedy.java @@ -100,7 +100,7 @@ class TaintedRemedyReplacementEffect extends ReplacementEffectImpl { public boolean replaceEvent(GameEvent event, Ability source, Game game) { Player opponent = game.getPlayer(event.getPlayerId()); if (opponent != null) { - opponent.loseLife(event.getAmount(), game); + opponent.loseLife(event.getAmount(), game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/magicorigins/ThornbowArcher.java b/Mage.Sets/src/mage/sets/magicorigins/ThornbowArcher.java index 2312bbf9a6f..a5709c52ee9 100644 --- a/Mage.Sets/src/mage/sets/magicorigins/ThornbowArcher.java +++ b/Mage.Sets/src/mage/sets/magicorigins/ThornbowArcher.java @@ -99,7 +99,7 @@ class ThornbowArcherEffect extends OneShotEffect { Player opponent = game.getPlayer(opponentId); if (opponent != null) { if (game.getBattlefield().countAll(filter, opponentId, game) == 0) { - opponent.loseLife(1, game); + opponent.loseLife(1, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/mirage/IllicitAuction.java b/Mage.Sets/src/mage/sets/mirage/IllicitAuction.java index ba8d87b9391..6f5b560e43b 100644 --- a/Mage.Sets/src/mage/sets/mirage/IllicitAuction.java +++ b/Mage.Sets/src/mage/sets/mirage/IllicitAuction.java @@ -110,7 +110,7 @@ class IllicitAuctionEffect extends GainControlTargetEffect { } game.informPlayers(winner.getLogName() + " won the auction with a bid of " + highBid + " life" + (highBid > 1 ? "s" : "")); - winner.loseLife(highBid, game); + winner.loseLife(highBid, game, false); super.controllingPlayerId = winner.getId(); } super.init(source, game); diff --git a/Mage.Sets/src/mage/sets/mirrodin/SpoilsOfTheVault.java b/Mage.Sets/src/mage/sets/mirrodin/SpoilsOfTheVault.java index e49dd207a36..fb8437a11c6 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/SpoilsOfTheVault.java +++ b/Mage.Sets/src/mage/sets/mirrodin/SpoilsOfTheVault.java @@ -109,7 +109,7 @@ class SpoilsOfTheVaultEffect extends OneShotEffect { } controller.revealCards(sourceObject.getIdName(), cardsToReveal, game); controller.moveCards(cardsToExile, Zone.EXILED, source, game); - controller.loseLife(cardsToExile.size(), game); + controller.loseLife(cardsToExile.size(), game, false); return true; } diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/PsychosisCrawler.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/PsychosisCrawler.java index 882ed749d10..641325813f5 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/PsychosisCrawler.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/PsychosisCrawler.java @@ -97,7 +97,7 @@ class LoseLifeOpponentsEffect extends OneShotEffect { for (UUID opponentUUID : opponents) { Player player = game.getPlayer(opponentUUID); if (player != null) { - player.loseLife(1, game); + player.loseLife(1, game, false); applied = true; } } diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/TezzeretAgentOfBolas.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/TezzeretAgentOfBolas.java index 90520e0a75a..5f8baa5ffdf 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/TezzeretAgentOfBolas.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/TezzeretAgentOfBolas.java @@ -130,7 +130,7 @@ class TezzeretAgentOfBolasEffect2 extends OneShotEffect { Player player = game.getPlayer(source.getFirstTarget()); if (player != null) { - player.loseLife(count, game); + player.loseLife(count, game, false); } Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { diff --git a/Mage.Sets/src/mage/sets/morningtide/MaralenOfTheMornsong.java b/Mage.Sets/src/mage/sets/morningtide/MaralenOfTheMornsong.java index 284937582f5..332851a8cc8 100644 --- a/Mage.Sets/src/mage/sets/morningtide/MaralenOfTheMornsong.java +++ b/Mage.Sets/src/mage/sets/morningtide/MaralenOfTheMornsong.java @@ -129,7 +129,7 @@ class MaralenOfTheMornsongEffect2 extends OneShotEffect { UUID activePlayerId = game.getActivePlayerId(); Player player = game.getPlayer(activePlayerId); if (player != null) { - player.loseLife(3, game); + player.loseLife(3, game, false); TargetCardInLibrary target = new TargetCardInLibrary(); if (player.searchLibrary(target, game)) { for (UUID cardId : target.getTargets()) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ChancellorOfTheDross.java b/Mage.Sets/src/mage/sets/newphyrexia/ChancellorOfTheDross.java index b5d5cb34d0d..636d48ac83e 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ChancellorOfTheDross.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ChancellorOfTheDross.java @@ -116,7 +116,7 @@ class ChancellorOfTheDrossEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { int loseLife = 0; for (UUID opponentId : game.getOpponents(source.getControllerId())) { - loseLife += game.getPlayer(opponentId).loseLife(3, game); + loseLife += game.getPlayer(opponentId).loseLife(3, game, false); } if (loseLife > 0) { game.getPlayer(source.getControllerId()).gainLife(loseLife, game); diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/DreadDefiler.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/DreadDefiler.java index 8a9a10510e1..0a757b69831 100644 --- a/Mage.Sets/src/mage/sets/oathofthegatewatch/DreadDefiler.java +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/DreadDefiler.java @@ -112,7 +112,7 @@ class DreadDefilerEffect extends OneShotEffect { if (amount > 0) { Player targetOpponent = game.getPlayer(source.getFirstTarget()); if (targetOpponent != null) { - targetOpponent.loseLife(amount, game); + targetOpponent.loseLife(amount, game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/RemorselessPunishment.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/RemorselessPunishment.java index e96dafa9322..a575f40aae6 100644 --- a/Mage.Sets/src/mage/sets/oathofthegatewatch/RemorselessPunishment.java +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/RemorselessPunishment.java @@ -123,6 +123,6 @@ class RemorselessPunishmentEffect extends OneShotEffect { } } - opponent.loseLife(5, game); + opponent.loseLife(5, game, false); } } diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/VisionsOfBrutality.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/VisionsOfBrutality.java index 08d1291dc53..57bd96c518f 100644 --- a/Mage.Sets/src/mage/sets/oathofthegatewatch/VisionsOfBrutality.java +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/VisionsOfBrutality.java @@ -113,7 +113,7 @@ class VisionsOfBrutalityEffect extends OneShotEffect { if (controllerEnchanted != null) { int damage = (Integer) getValue("damage"); if (damage > 0) { - controllerEnchanted.loseLife(damage, game); + controllerEnchanted.loseLife(damage, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/odyssey/SkeletalScrying.java b/Mage.Sets/src/mage/sets/odyssey/SkeletalScrying.java index c05825392c3..c518afee74c 100644 --- a/Mage.Sets/src/mage/sets/odyssey/SkeletalScrying.java +++ b/Mage.Sets/src/mage/sets/odyssey/SkeletalScrying.java @@ -133,7 +133,7 @@ class SkeletalScryingEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if ( controller != null ) { controller.drawCards(amount.calculate(game, source, this), game); - controller.loseLife(amount.calculate(game, source, this), game); + controller.loseLife(amount.calculate(game, source, this), game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/onslaught/Biorhythm.java b/Mage.Sets/src/mage/sets/onslaught/Biorhythm.java index d3ddf2be150..827b58741a0 100644 --- a/Mage.Sets/src/mage/sets/onslaught/Biorhythm.java +++ b/Mage.Sets/src/mage/sets/onslaught/Biorhythm.java @@ -87,7 +87,7 @@ class BiorhythmEffect extends OneShotEffect { if(player != null) { int diff = player.getLife() - game.getBattlefield().countAll(filter, playerId, game); if(diff > 0) { - player.loseLife(diff, game); + player.loseLife(diff, game, false); } if(diff < 0) { player.gainLife(-diff, game); diff --git a/Mage.Sets/src/mage/sets/onslaught/EbonbladeReaper.java b/Mage.Sets/src/mage/sets/onslaught/EbonbladeReaper.java index 12b22f0ff17..db616469c98 100644 --- a/Mage.Sets/src/mage/sets/onslaught/EbonbladeReaper.java +++ b/Mage.Sets/src/mage/sets/onslaught/EbonbladeReaper.java @@ -102,7 +102,7 @@ class EbonbladeReaperEffect extends OneShotEffect { if (player != null) { Integer amount = (int) Math.ceil(player.getLife() / 2f); if (amount > 0) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/onslaught/StarlitSanctum.java b/Mage.Sets/src/mage/sets/onslaught/StarlitSanctum.java index 07617ee4b3c..520ddad0497 100644 --- a/Mage.Sets/src/mage/sets/onslaught/StarlitSanctum.java +++ b/Mage.Sets/src/mage/sets/onslaught/StarlitSanctum.java @@ -141,7 +141,7 @@ class StarlitSanctumBlackEffect extends OneShotEffect { if (amount > 0) { Player player = game.getPlayer(source.getFirstTarget()); if (player != null) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/planarchaos/ImpsMischief.java b/Mage.Sets/src/mage/sets/planarchaos/ImpsMischief.java index 8e51593df5c..289be462bb4 100644 --- a/Mage.Sets/src/mage/sets/planarchaos/ImpsMischief.java +++ b/Mage.Sets/src/mage/sets/planarchaos/ImpsMischief.java @@ -99,7 +99,7 @@ class ImpsMischiefLoseLifeEffect extends OneShotEffect { if (spell != null) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { - player.loseLife(spell.getConvertedManaCost(), game); + player.loseLife(spell.getConvertedManaCost(), game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/planarchaos/TemporalExtortion.java b/Mage.Sets/src/mage/sets/planarchaos/TemporalExtortion.java index 529bce32222..d0e31873d98 100644 --- a/Mage.Sets/src/mage/sets/planarchaos/TemporalExtortion.java +++ b/Mage.Sets/src/mage/sets/planarchaos/TemporalExtortion.java @@ -92,7 +92,7 @@ class TemporalExtortionCounterSourceEffect extends OneShotEffect { Player player = game.getPlayer(playerId); if (player.chooseUse(outcome, "Pay half your life, rounded up to counter " + sourceObject.getIdName() + "?", source, game)) { Integer amount = (int) Math.ceil(player.getLife() / 2f); - player.loseLife(amount, game); + player.loseLife(amount, game, false); game.informPlayers(player.getLogName() + " pays half his or her life, rounded up to counter " + sourceObject.getIdName() + "."); Spell spell = game.getStack().getSpell(source.getSourceId()); if (spell != null) { diff --git a/Mage.Sets/src/mage/sets/planechase2012/LastStand.java b/Mage.Sets/src/mage/sets/planechase2012/LastStand.java index 17579324b37..f643612d842 100644 --- a/Mage.Sets/src/mage/sets/planechase2012/LastStand.java +++ b/Mage.Sets/src/mage/sets/planechase2012/LastStand.java @@ -107,7 +107,7 @@ class LastStandEffect extends OneShotEffect { Player opponent = game.getPlayer(getTargetPointer().getFirst(game, source)); if (opponent != null) { int swamps = game.getBattlefield().count(filterSwamp, source.getSourceId(), source.getControllerId(), game); - opponent.loseLife(swamps * 2, game); + opponent.loseLife(swamps * 2, game, false); } // Last Stand deals damage equal to the number of Mountains you control to target creature. Permanent creature = game.getPermanent(source.getTargets().get(1).getFirstTarget()); diff --git a/Mage.Sets/src/mage/sets/ravnica/DarkConfidant.java b/Mage.Sets/src/mage/sets/ravnica/DarkConfidant.java index ee178e3becf..f8717eced6e 100644 --- a/Mage.Sets/src/mage/sets/ravnica/DarkConfidant.java +++ b/Mage.Sets/src/mage/sets/ravnica/DarkConfidant.java @@ -96,7 +96,7 @@ class DarkConfidantEffect extends OneShotEffect { Cards cards = new CardsImpl(card); controller.revealCards(sourcePermanent.getIdName(), cards, game); controller.moveCards(card, Zone.HAND, source, game); - controller.loseLife(card.getConvertedManaCost(), game); + controller.loseLife(card.getConvertedManaCost(), game, false); } return true; diff --git a/Mage.Sets/src/mage/sets/ravnica/NetherbornPhalanx.java b/Mage.Sets/src/mage/sets/ravnica/NetherbornPhalanx.java index 8cd4a85155f..c0b0f78cd14 100644 --- a/Mage.Sets/src/mage/sets/ravnica/NetherbornPhalanx.java +++ b/Mage.Sets/src/mage/sets/ravnica/NetherbornPhalanx.java @@ -97,7 +97,7 @@ class NetherbornPhalanxEffect extends OneShotEffect { if (count > 0) { Player opponent = game.getPlayer(playerId); if (opponent != null) { - opponent.loseLife(count, game); + opponent.loseLife(count, game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/returntoravnica/HavocFestival.java b/Mage.Sets/src/mage/sets/returntoravnica/HavocFestival.java index f2c8f76b545..27b82a92277 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/HavocFestival.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/HavocFestival.java @@ -98,7 +98,7 @@ class HavocFestivalLoseLifeEffect extends OneShotEffect { if (player != null) { Integer amount = (int) Math.ceil(player.getLife() / 2f); if (amount > 0) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/returntoravnica/ShriekingAffliction.java b/Mage.Sets/src/mage/sets/returntoravnica/ShriekingAffliction.java index 54cb9c968af..f09406cce3d 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/ShriekingAffliction.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/ShriekingAffliction.java @@ -142,7 +142,7 @@ class ShriekingAfflictionTargetEffect extends OneShotEffect { if (sourcePermanent != null) { game.informPlayers(sourcePermanent.getName() + ": " + player.getLogName() + " loses 3 life"); } - player.loseLife(3, game); + player.loseLife(3, game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/BanefulOmen.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/BanefulOmen.java index 225b0fcd9fe..8534d9e61d0 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/BanefulOmen.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/BanefulOmen.java @@ -128,7 +128,7 @@ public class BanefulOmen extends CardImpl { for (UUID opponentUuid : opponents) { Player opponent = game.getPlayer(opponentUuid); if (opponent != null) { - opponent.loseLife(loseLife, game); + opponent.loseLife(loseLife, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SufferThePast.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SufferThePast.java index aa9ae441ab8..55bcdaeae79 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SufferThePast.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SufferThePast.java @@ -106,7 +106,7 @@ class SufferThePastEffect extends OneShotEffect { } } you.gainLife(numberExiled, game); - targetPlayer.loseLife(numberExiled, game); + targetPlayer.loseLife(numberExiled, game, false); } } return true; diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Vendetta.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Vendetta.java index 25fc8225203..06131ab16ed 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/Vendetta.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/Vendetta.java @@ -99,7 +99,7 @@ class VendettaEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); Permanent target = game.getPermanentOrLKIBattlefield(this.getTargetPointer().getFirst(game, source)); if (player != null && target != null) { - player.loseLife(target.getToughness().getValue(), game); + player.loseLife(target.getToughness().getValue(), game, false); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/BloodClock.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/BloodClock.java index 1d3c52c454b..487c9ae3a9e 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/BloodClock.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/BloodClock.java @@ -91,7 +91,7 @@ class BloodClockEffect extends OneShotEffect { return false; } if (player.getLife() > 2 && player.chooseUse(Outcome.Neutral, "Pay 2 life? If you don't, return a permanent you control to its owner's hand.", source, game)) { - player.loseLife(2, game); + player.loseLife(2, game, false); game.informPlayers(player.getLogName() + " pays 2 life. He will not return a permanent he or she controls."); return true; } else { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/ChoiceOfDamnations.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/ChoiceOfDamnations.java index 598f991650a..79cc598cdc1 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/ChoiceOfDamnations.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/ChoiceOfDamnations.java @@ -93,7 +93,7 @@ class ChoiceOfDamnationsEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { if (controller.chooseUse(outcome, "Shall " + targetPlayer.getLogName() + " lose " + amount + " life?", source, game)) { - targetPlayer.loseLife(amount, game); + targetPlayer.loseLife(amount, game, false); } else { int numberPermanents = game.getState().getBattlefield().countAll(new FilterPermanent(), targetPlayer.getId(), game); if (numberPermanents > amount) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/PainsReward.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/PainsReward.java index ad12a549795..e2ee5201aa6 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/PainsReward.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/PainsReward.java @@ -106,7 +106,7 @@ class PainsRewardEffect extends OneShotEffect { } game.informPlayers(winner.getLogName() + " won the auction with a bid of " + highBid + " life" + (highBid > 1 ? "s" : "")); - winner.loseLife(highBid, game); + winner.loseLife(highBid, game, false); winner.drawCards(4, game); return true; } diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/RavingOniSlave.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/RavingOniSlave.java index 5d9c4f0cfa6..1c0e6ea0558 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/RavingOniSlave.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/RavingOniSlave.java @@ -90,7 +90,7 @@ class RavingOniSlaveEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { if (game.getBattlefield().count(new FilterCreaturePermanent("Demon", "Demon"), source.getSourceId(), source.getControllerId(), game) < 1) { - controller.loseLife(3, game); + controller.loseLife(3, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/Exsanguinate.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/Exsanguinate.java index 91dbdbc3891..69423d002bc 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/Exsanguinate.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/Exsanguinate.java @@ -77,7 +77,7 @@ class ExsanguinateEffect extends OneShotEffect { int loseLife = 0; int damage = source.getManaCostsToPay().getX(); for (UUID opponentId : game.getOpponents(source.getControllerId())) { - loseLife += game.getPlayer(opponentId).loseLife(damage, game); + loseLife += game.getPlayer(opponentId).loseLife(damage, game, false); } if (loseLife > 0) game.getPlayer(source.getControllerId()).gainLife(loseLife, game); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/FleshAllergy.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/FleshAllergy.java index 010ac2b0b0a..14c8969dda6 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/FleshAllergy.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/FleshAllergy.java @@ -138,7 +138,7 @@ class FleshAllergyEffect extends OneShotEffect { if (player != null) { int amount = watcher.creaturesDiedThisTurn; if (amount > 0) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/PainfulQuandary.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/PainfulQuandary.java index f7f5bccc454..11c9571b6f5 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/PainfulQuandary.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/PainfulQuandary.java @@ -96,7 +96,7 @@ class PainfulQuandryEffect extends OneShotEffect { paid = cost.pay(source, game, source.getSourceId(), player.getId(), false, null); } if (!paid) { - player.loseLife(5, game); + player.loseLife(5, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/HollowbornBarghest.java b/Mage.Sets/src/mage/sets/shadowmoor/HollowbornBarghest.java index dcb6c8486c6..5b0bc012722 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/HollowbornBarghest.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/HollowbornBarghest.java @@ -98,7 +98,7 @@ class HollowbornBarghestEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { for (UUID opponentId : game.getOpponents(source.getControllerId())) { - game.getPlayer(opponentId).loseLife(2, game); + game.getPlayer(opponentId).loseLife(2, game, false); } return true; } @@ -135,7 +135,7 @@ class HollowbornBarghestTriggeredAbility extends TriggeredAbilityImpl { if (game.getOpponents(controllerId).contains(event.getPlayerId())) { Player opponent = game.getPlayer(event.getPlayerId()); if (opponent != null && opponent.getHand().isEmpty()) { - opponent.loseLife(2, game); + opponent.loseLife(2, game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java b/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java index cd8202dba1c..5ce43198de0 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/LeechriddenSwamp.java @@ -110,7 +110,7 @@ class LeechriddenSwampLoseLifeEffect extends OneShotEffect { Players players = game.getPlayers(); for ( Player player : players.values() ) { if ( !player.getId().equals(source.getControllerId()) ) { - player.loseLife(1, game); + player.loseLife(1, game, false); } } return true; diff --git a/Mage.Sets/src/mage/sets/shadowmoor/PlagueOfVermin.java b/Mage.Sets/src/mage/sets/shadowmoor/PlagueOfVermin.java index 8897aaff712..31fe3d325d7 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/PlagueOfVermin.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/PlagueOfVermin.java @@ -109,7 +109,7 @@ class PlagueOfVerminEffect extends OneShotEffect { if (currentPlayer.chooseUse(Outcome.AIDontUseIt, "Pay life?", source, game)) { totalPaidLife = currentPlayer.getAmount(0, controller.getLife(), "Pay how many life?", game); if (totalPaidLife > 0) { - currentPlayer.loseLife(totalPaidLife, game); + currentPlayer.loseLife(totalPaidLife, game, false); if (payLife.get(currentPlayer.getId()) == null) { payLife.put(currentPlayer.getId(), totalPaidLife); } else { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/PollutedBonds.java b/Mage.Sets/src/mage/sets/shadowmoor/PollutedBonds.java index 239d9d6e093..d0cae122017 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/PollutedBonds.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/PollutedBonds.java @@ -99,7 +99,7 @@ class PollutedBondsEffect extends OneShotEffect { if (controller != null) { Player opponent = game.getPlayer(getTargetPointer().getFirst(game, source)); if (opponent != null) { - opponent.loseLife(2, game); + opponent.loseLife(2, game, false); } controller.gainLife(2, game); return true; diff --git a/Mage.Sets/src/mage/sets/shadowmoor/WoundReflection.java b/Mage.Sets/src/mage/sets/shadowmoor/WoundReflection.java index a5ef2b5397e..a3c490941fb 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/WoundReflection.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/WoundReflection.java @@ -91,7 +91,7 @@ class WoundReflectionEffect extends OneShotEffect { if (opponent != null) { int lifeLost = watcher.getLiveLost(playerId); if (lifeLost > 0) { - opponent.loseLife(lifeLost, game); + opponent.loseLife(lifeLost, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/AsylumVisitor.java b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/AsylumVisitor.java index d11a3fdad9d..c4b80d4e560 100644 --- a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/AsylumVisitor.java +++ b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/AsylumVisitor.java @@ -100,7 +100,7 @@ class AsylumVisitorTriggeredAbility extends TriggeredAbilityImpl { if (you != null && upkeepPlayer != null && upkeepPlayer.getHand().isEmpty()) { you.drawCards(1, game); - you.loseLife(1, game); + you.loseLife(1, game, false); return true; } diff --git a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/CreepingDread.java b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/CreepingDread.java index be70020b0a1..4354320fe10 100644 --- a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/CreepingDread.java +++ b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/CreepingDread.java @@ -156,7 +156,7 @@ class CreepingDreadEffect extends OneShotEffect { // each opponent who discarded a card of the same type loses 3 life if (!opponentsAffected.isEmpty()) { for(Player opponent : opponentsAffected) { - opponent.loseLife(3, game); + opponent.loseLife(3, game, false); } } diff --git a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/LilianasIndignation.java b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/LilianasIndignation.java index 956b3c8f2a3..893cda8b8d2 100644 --- a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/LilianasIndignation.java +++ b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/LilianasIndignation.java @@ -101,7 +101,7 @@ class LilianasIndignationEffect extends OneShotEffect { if (creatures > 0) { Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); if (targetPlayer != null) { - targetPlayer.loseLife(creatures * 2, game); + targetPlayer.loseLife(creatures * 2, game, false); } } diff --git a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/SorinGrimNemesis.java b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/SorinGrimNemesis.java index 22364850569..c952e418e89 100644 --- a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/SorinGrimNemesis.java +++ b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/SorinGrimNemesis.java @@ -126,7 +126,7 @@ class SorinGrimNemesisRevealEffect extends OneShotEffect { if (card.getConvertedManaCost() > 0) { Player opponent = game.getPlayer(playerId); if (opponent != null) { - opponent.loseLife(card.getConvertedManaCost(), game); + opponent.loseLife(card.getConvertedManaCost(), game, false); } } } diff --git a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/Triskaidekaphobia.java b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/Triskaidekaphobia.java index defaee5083b..39e34230459 100644 --- a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/Triskaidekaphobia.java +++ b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/Triskaidekaphobia.java @@ -141,7 +141,7 @@ class TriskaidekaphobiaLoseLifeEffect extends OneShotEffect { for (UUID pid : playerList) { Player player = game.getPlayer(pid); if (player != null) { - player.loseLife(1, game); + player.loseLife(1, game, false); } } return true; diff --git a/Mage.Sets/src/mage/sets/shardsofalara/AdNauseam.java b/Mage.Sets/src/mage/sets/shardsofalara/AdNauseam.java index 37a4a47bbab..c05b4ca049e 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/AdNauseam.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/AdNauseam.java @@ -94,7 +94,7 @@ class AdNauseamEffect extends OneShotEffect { controller.moveCards(card, Zone.HAND, source, game); int cmc = card.getConvertedManaCost(); if (cmc > 0) { - controller.loseLife(cmc, game); + controller.loseLife(cmc, game, false); } controller.revealCards(sourceCard.getIdName() + " put into hand", new CardsImpl(card), game); } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/BanewaspAffliction.java b/Mage.Sets/src/mage/sets/shardsofalara/BanewaspAffliction.java index e1b24ba5ca0..b818b16674c 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/BanewaspAffliction.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/BanewaspAffliction.java @@ -100,7 +100,7 @@ class BanewaspAfflictionLoseLifeEffect extends OneShotEffect { if(creature != null){ Player player = game.getPlayer(creature.getOwnerId()); if (player != null) { - player.loseLife(creature.getToughness().getValue(), game); + player.loseLife(creature.getToughness().getValue(), game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/InvincibleHymn.java b/Mage.Sets/src/mage/sets/shardsofalara/InvincibleHymn.java index aa77f85f800..417b714fb7e 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/InvincibleHymn.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/InvincibleHymn.java @@ -89,7 +89,7 @@ class InvincibleHymnEffect extends OneShotEffect { player.gainLife(newValue - oldValue, game); } if (oldValue - newValue > 0) { - player.loseLife(oldValue - newValue, game); + player.loseLife(oldValue - newValue, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/QuietusSpike.java b/Mage.Sets/src/mage/sets/shardsofalara/QuietusSpike.java index 04d803aa245..7829196b2a2 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/QuietusSpike.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/QuietusSpike.java @@ -141,7 +141,7 @@ class QuietusSpikeEffect extends OneShotEffect { if (player != null) { Integer amount = (int) Math.ceil(player.getLife() / 2f); if (amount > 0) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); } return true; } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/SphinxSovereign.java b/Mage.Sets/src/mage/sets/shardsofalara/SphinxSovereign.java index 67461862201..c1d81678d07 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/SphinxSovereign.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/SphinxSovereign.java @@ -99,7 +99,7 @@ class SphinxSovereignEffect extends OneShotEffect { if (controller.hasOpponent(opponentId, game)) { Player opponent = game.getPlayer(opponentId); if (opponent != null) { - opponent.loseLife(3, game); + opponent.loseLife(3, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/starwars/PublicArrangement.java b/Mage.Sets/src/mage/sets/starwars/PublicArrangement.java index 6d14100e4ea..bdb694dc55d 100644 --- a/Mage.Sets/src/mage/sets/starwars/PublicArrangement.java +++ b/Mage.Sets/src/mage/sets/starwars/PublicArrangement.java @@ -92,7 +92,7 @@ class PublicArrangementEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { UUID controller = game.getControllerId(source.getFirstTarget()); if (controller != null) { - game.getPlayer(controller).loseLife(2, game); + game.getPlayer(controller).loseLife(2, game, false); for (UUID playerId : game.getOpponents(controller)) { Player player = game.getPlayer(playerId); if (player != null) { diff --git a/Mage.Sets/src/mage/sets/starwars/SithRavager.java b/Mage.Sets/src/mage/sets/starwars/SithRavager.java index 7ed8342ac77..45ca0cdb8a8 100644 --- a/Mage.Sets/src/mage/sets/starwars/SithRavager.java +++ b/Mage.Sets/src/mage/sets/starwars/SithRavager.java @@ -36,7 +36,6 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.PhaseStep; import mage.constants.Rarity; import mage.constants.Zone; import mage.game.Game; @@ -92,10 +91,7 @@ public class SithRavager extends CardImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - if (!game.getStep().getType().equals(PhaseStep.COMBAT_DAMAGE)) { - return game.getOpponents(game.getControllerId(getSourceId())).contains(event.getPlayerId()); - } - return false; + return !event.getFlag() && game.getOpponents(game.getControllerId(getSourceId())).contains(event.getPlayerId()); } @Override diff --git a/Mage.Sets/src/mage/sets/starwars/TIEInterceptor.java b/Mage.Sets/src/mage/sets/starwars/TIEInterceptor.java index 78c88f510f1..34fa1cd4293 100644 --- a/Mage.Sets/src/mage/sets/starwars/TIEInterceptor.java +++ b/Mage.Sets/src/mage/sets/starwars/TIEInterceptor.java @@ -86,7 +86,7 @@ class TIEInterceptorEffect extends OneShotEffect { for (UUID opponentId : game.getOpponents(source.getControllerId())) { Player opponent = game.getPlayer(opponentId); if (opponent != null) { - opponent.loseLife(2, game); + opponent.loseLife(2, game, false); } } return true; diff --git a/Mage.Sets/src/mage/sets/starwars/TheBattleOfYavin.java b/Mage.Sets/src/mage/sets/starwars/TheBattleOfYavin.java index cf3f70bb2ed..c727289fb4e 100644 --- a/Mage.Sets/src/mage/sets/starwars/TheBattleOfYavin.java +++ b/Mage.Sets/src/mage/sets/starwars/TheBattleOfYavin.java @@ -115,7 +115,7 @@ class TheBattleOfYavinEffect extends OneShotEffect { if (lifePaid > 0) { Player player = game.getPlayer(opponent.getId()); if (player != null) { - player.loseLife(lifePaid, game); + player.loseLife(lifePaid, game, false); } } diff --git a/Mage.Sets/src/mage/sets/tenthedition/BeaconOfImmortality.java b/Mage.Sets/src/mage/sets/tenthedition/BeaconOfImmortality.java index 139ac9cdffe..344ef8aaeb0 100644 --- a/Mage.Sets/src/mage/sets/tenthedition/BeaconOfImmortality.java +++ b/Mage.Sets/src/mage/sets/tenthedition/BeaconOfImmortality.java @@ -89,7 +89,7 @@ class BeaconOfImmortalityEffect extends OneShotEffect { if (player != null) { int amount = player.getLife(); if (amount < 0) { - player.loseLife(-amount, game); + player.loseLife(-amount, game, false); return true; } if (amount > 0) { diff --git a/Mage.Sets/src/mage/sets/theros/GrayMerchantOfAsphodel.java b/Mage.Sets/src/mage/sets/theros/GrayMerchantOfAsphodel.java index 3d19f3adfb2..be415a823b7 100644 --- a/Mage.Sets/src/mage/sets/theros/GrayMerchantOfAsphodel.java +++ b/Mage.Sets/src/mage/sets/theros/GrayMerchantOfAsphodel.java @@ -95,7 +95,7 @@ class GrayMerchantOfAsphodelEffect extends OneShotEffect { for (UUID playerId : game.getOpponents(source.getControllerId())) { Player opponent = game.getPlayer(playerId); if (opponent != null) { - lifeLost += opponent.loseLife(damage, game); + lifeLost += opponent.loseLife(damage, game, false); } } } diff --git a/Mage.Sets/src/mage/sets/theros/TormentedHero.java b/Mage.Sets/src/mage/sets/theros/TormentedHero.java index db2cc6a4a74..e686a851752 100644 --- a/Mage.Sets/src/mage/sets/theros/TormentedHero.java +++ b/Mage.Sets/src/mage/sets/theros/TormentedHero.java @@ -85,7 +85,7 @@ class EachOpponentLosesYouGainSumLifeEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { int lostLife = 0; for (UUID opponentId : game.getOpponents(source.getControllerId())) { - lostLife += game.getPlayer(opponentId).loseLife(1, game); + lostLife += game.getPlayer(opponentId).loseLife(1, game, false); } game.getPlayer(source.getControllerId()).gainLife(lostLife, game); return true; diff --git a/Mage.Sets/src/mage/sets/timespiral/Phthisis.java b/Mage.Sets/src/mage/sets/timespiral/Phthisis.java index fa85b987878..5b503142775 100644 --- a/Mage.Sets/src/mage/sets/timespiral/Phthisis.java +++ b/Mage.Sets/src/mage/sets/timespiral/Phthisis.java @@ -95,7 +95,7 @@ class PhthisisEffect extends OneShotEffect { int lifeLoss = creature.getPower().getValue() + creature.getToughness().getValue(); creature.destroy(source.getSourceId(), game, false); // the life loss happens also if the creature is indestructible or regenerated (legal targets) - controller.loseLife(lifeLoss, game); + controller.loseLife(lifeLoss, game, false); return true; } } diff --git a/Mage.Sets/src/mage/sets/urzassaga/LurkingEvil.java b/Mage.Sets/src/mage/sets/urzassaga/LurkingEvil.java index 0799d78d418..040bbec4041 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/LurkingEvil.java +++ b/Mage.Sets/src/mage/sets/urzassaga/LurkingEvil.java @@ -96,7 +96,7 @@ class LurkingEvilCost extends CostImpl { if (lifeToPay < 0) { this.paid = true; } else { - this.paid = (controller.loseLife(lifeToPay, game) == lifeToPay); + this.paid = (controller.loseLife(lifeToPay, game, false) == lifeToPay); } return this.paid; } diff --git a/Mage.Sets/src/mage/sets/urzassaga/PhyrexianProcessor.java b/Mage.Sets/src/mage/sets/urzassaga/PhyrexianProcessor.java index 5f93f9346fc..87694ba5d56 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/PhyrexianProcessor.java +++ b/Mage.Sets/src/mage/sets/urzassaga/PhyrexianProcessor.java @@ -95,7 +95,7 @@ class PhyrexianProcessorEffect extends OneShotEffect { if(controller != null) { Card sourceCard = game.getCard(source.getSourceId()); int payAmount = controller.getAmount(0, controller.getLife(), staticText, game); - controller.loseLife(payAmount, game); + controller.loseLife(payAmount, game, false); game.informPlayers(new StringBuilder(sourceCard.getName()).append(": ").append(controller.getLogName()) .append(" pays ").append(payAmount).append(" life.").toString()); String key = CardUtil.getCardZoneString("lifePaid", source.getSourceId(), game); diff --git a/Mage.Sets/src/mage/sets/urzassaga/Umbilicus.java b/Mage.Sets/src/mage/sets/urzassaga/Umbilicus.java index c77aa96e893..79777baf230 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/Umbilicus.java +++ b/Mage.Sets/src/mage/sets/urzassaga/Umbilicus.java @@ -91,7 +91,7 @@ class BloodClockEffect extends OneShotEffect { return false; } if (player.getLife() > 2 && player.chooseUse(Outcome.Neutral, "Pay 2 life? If you don't, return a permanent you control to its owner's hand.", source, game)) { - player.loseLife(2, game); + player.loseLife(2, game, false); game.informPlayers(player.getLogName() + " pays 2 life. He will not return a permanent he or she controls."); return true; } else { diff --git a/Mage.Sets/src/mage/sets/visions/WandOfDenial.java b/Mage.Sets/src/mage/sets/visions/WandOfDenial.java index ce9f5c97312..dc05fed2130 100644 --- a/Mage.Sets/src/mage/sets/visions/WandOfDenial.java +++ b/Mage.Sets/src/mage/sets/visions/WandOfDenial.java @@ -99,7 +99,7 @@ class WandOfDenialEffect extends OneShotEffect { && controller.canPayLifeCost() && controller.getLife() >= 2 && controller.chooseUse(Outcome.Neutral, "Pay 2 life to put " + card.getLogName() + " into graveyard?", source, game)) { - controller.loseLife(2, game); + controller.loseLife(2, game, false); controller.moveCards(card, Zone.GRAVEYARD, source, game); } return true; diff --git a/Mage.Sets/src/mage/sets/weatherlight/Doomsday.java b/Mage.Sets/src/mage/sets/weatherlight/Doomsday.java index 6a7b317fb59..ecc0d048d92 100644 --- a/Mage.Sets/src/mage/sets/weatherlight/Doomsday.java +++ b/Mage.Sets/src/mage/sets/weatherlight/Doomsday.java @@ -132,7 +132,7 @@ class DoomsdayEffect extends OneShotEffect { //You lose half your life, rounded up int amount = (player.getLife() + 1) / 2; if (amount > 0) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); } return true; diff --git a/Mage.Sets/src/mage/sets/worldwake/PulseTracker.java b/Mage.Sets/src/mage/sets/worldwake/PulseTracker.java index 1f1795988d7..e509e6c8a71 100644 --- a/Mage.Sets/src/mage/sets/worldwake/PulseTracker.java +++ b/Mage.Sets/src/mage/sets/worldwake/PulseTracker.java @@ -87,7 +87,7 @@ class PulseTrackerLoseLifeEffect extends OneShotEffect { for ( Player player : players.values() ) { if ( !player.getId().equals(source.getControllerId()) ) { - player.loseLife(1, game); + player.loseLife(1, game, false); } } diff --git a/Mage.Sets/src/mage/sets/zendikar/BloodTribute.java b/Mage.Sets/src/mage/sets/zendikar/BloodTribute.java index f82313e1fe1..642682154c1 100644 --- a/Mage.Sets/src/mage/sets/zendikar/BloodTribute.java +++ b/Mage.Sets/src/mage/sets/zendikar/BloodTribute.java @@ -112,7 +112,7 @@ class BloodTributeLoseLifeEffect extends OneShotEffect { if (player != null) { Integer amount = (int) Math.ceil(player.getLife() / 2f); if (amount > 0) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); game.getState().setValue(source.getSourceId().toString() + "_BloodTribute", amount); return true; } diff --git a/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java b/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java index e5acb1a8677..8c5b0f8216a 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java +++ b/Mage.Sets/src/mage/sets/zendikar/MalakirBloodwitch.java @@ -115,7 +115,7 @@ class MalakirBloodwitchEffect extends OneShotEffect { for (UUID opponentUuid : opponents) { Player opponent = game.getPlayer(opponentUuid); if (opponent != null) { - total += opponent.loseLife(amount, game); + total += opponent.loseLife(amount, game, false); } if (total > 0) { player.gainLife(total, game); diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java index a8856084e0b..4c7fd6698fd 100644 --- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java +++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java @@ -1439,8 +1439,8 @@ public class TestPlayer implements Player { } @Override - public int loseLife(int amount, Game game) { - return computerPlayer.loseLife(amount, game); + public int loseLife(int amount, Game game, boolean atCombat) { + return computerPlayer.loseLife(amount, game, atCombat); } @Override diff --git a/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java b/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java index 0cfc56eb1f2..3bd3d4c1d7a 100644 --- a/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java +++ b/Mage.Tests/src/test/java/org/mage/test/stub/PlayerStub.java @@ -159,7 +159,7 @@ public class PlayerStub implements Player { } @Override - public int loseLife(int amount, Game game) { + public int loseLife(int amount, Game game, boolean at) { return 0; } diff --git a/Mage/src/main/java/mage/abilities/costs/common/PayLifeCost.java b/Mage/src/main/java/mage/abilities/costs/common/PayLifeCost.java index cb8eb5238bc..bdc1a6c45da 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/PayLifeCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/PayLifeCost.java @@ -76,7 +76,7 @@ public class PayLifeCost extends CostImpl { @Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { int lifeToPayAmount = amount.calculate(game, ability, null); - this.paid = game.getPlayer(controllerId).loseLife(lifeToPayAmount, game) == lifeToPayAmount; + this.paid = game.getPlayer(controllerId).loseLife(lifeToPayAmount, game, false) == lifeToPayAmount; return paid; } diff --git a/Mage/src/main/java/mage/abilities/costs/mana/PhyrexianManaCost.java b/Mage/src/main/java/mage/abilities/costs/mana/PhyrexianManaCost.java index e53099c168d..5884716c5b3 100644 --- a/Mage/src/main/java/mage/abilities/costs/mana/PhyrexianManaCost.java +++ b/Mage/src/main/java/mage/abilities/costs/mana/PhyrexianManaCost.java @@ -75,7 +75,7 @@ public class PhyrexianManaCost extends ColoredManaCost { @Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { - this.paid = game.getPlayer(controllerId).loseLife(2, game) == 2; + this.paid = game.getPlayer(controllerId).loseLife(2, game, false) == 2; return paid; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/LoseHalfLifeEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LoseHalfLifeEffect.java index 939b59b90c9..90948a5dac4 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LoseHalfLifeEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LoseHalfLifeEffect.java @@ -31,7 +31,7 @@ public class LoseHalfLifeEffect extends OneShotEffect { if (player != null) { int amount = (player.getLife() + 1) / 2; if (amount > 0) { - player.loseLife(amount, game); + player.loseLife(amount, game, false); return true; } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeAllPlayersEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeAllPlayersEffect.java index 9183a367c00..cc1a7b03248 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeAllPlayersEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeAllPlayersEffect.java @@ -71,7 +71,7 @@ public class LoseLifeAllPlayersEffect extends OneShotEffect { for (UUID playerId: game.getState().getPlayersInRange(source.getControllerId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { - player.loseLife(amount.calculate(game, source, this), game); + player.loseLife(amount.calculate(game, source, this), game, false); } } return true; diff --git a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeControllerAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeControllerAttachedEffect.java index 089a366ac0d..54dea779a5c 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeControllerAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeControllerAttachedEffect.java @@ -76,7 +76,7 @@ public class LoseLifeControllerAttachedEffect extends OneShotEffect { if (creature != null) { Player player = game.getPlayer(creature.getControllerId()); if (player != null) { - player.loseLife(amount.calculate(game, source, this), game); + player.loseLife(amount.calculate(game, source, this), game, false); return true; } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeDefendingPlayerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeDefendingPlayerEffect.java index b7d915f8180..d5296bb901e 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeDefendingPlayerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeDefendingPlayerEffect.java @@ -80,7 +80,7 @@ public class LoseLifeDefendingPlayerEffect extends OneShotEffect { defender = game.getPlayer(getTargetPointer().getFirst(game, source)); } if (defender != null) { - defender.loseLife(amount.calculate(game, source, this), game); + defender.loseLife(amount.calculate(game, source, this), game, false); } return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeOpponentsEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeOpponentsEffect.java index c988359476c..f63c0f5011f 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeOpponentsEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeOpponentsEffect.java @@ -66,7 +66,7 @@ public class LoseLifeOpponentsEffect extends OneShotEffect { for (UUID opponentId: game.getOpponents(source.getControllerId())) { Player player = game.getPlayer(opponentId); if (player != null) { - player.loseLife(amount.calculate(game, source, this), game); + player.loseLife(amount.calculate(game, source, this), game, false); } } return true; diff --git a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeSourceControllerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeSourceControllerEffect.java index f9239424cd1..83b9fa7b7f7 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeSourceControllerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeSourceControllerEffect.java @@ -68,7 +68,7 @@ public class LoseLifeSourceControllerEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { - player.loseLife(amount.calculate(game, source, this), game); + player.loseLife(amount.calculate(game, source, this), game, false); return true; } return false; diff --git a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeTargetControllerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeTargetControllerEffect.java index 83a3c83ccbb..277083b8906 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeTargetControllerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeTargetControllerEffect.java @@ -91,7 +91,7 @@ public class LoseLifeTargetControllerEffect extends OneShotEffect { } if ( controller != null ) { - controller.loseLife(amount, game); + controller.loseLife(amount, game, false); return true; } } 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 501f3850958..38164b67db7 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/LoseLifeTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/LoseLifeTargetEffect.java @@ -67,7 +67,7 @@ public class LoseLifeTargetEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { - player.loseLife(amount.calculate(game, source, this), game); + player.loseLife(amount.calculate(game, source, this), game, false); return true; } return false; diff --git a/Mage/src/main/java/mage/abilities/keyword/ExtortAbility.java b/Mage/src/main/java/mage/abilities/keyword/ExtortAbility.java index 9629ec2387a..63e7fda4e66 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ExtortAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ExtortAbility.java @@ -106,7 +106,7 @@ class ExtortEffect extends OneShotEffect { if (cost.pay(source, game, source.getSourceId(), player.getId(), false, null)) { int loseLife = 0; for (UUID opponentId : game.getOpponents(source.getControllerId())) { - loseLife += game.getPlayer(opponentId).loseLife(1, game); + loseLife += game.getPlayer(opponentId).loseLife(1, game, false); } if (loseLife > 0) { game.getPlayer(source.getControllerId()).gainLife(loseLife, game); diff --git a/Mage/src/main/java/mage/game/events/GameEvent.java b/Mage/src/main/java/mage/game/events/GameEvent.java index f74e35f8cbc..f3313ad4fd8 100644 --- a/Mage/src/main/java/mage/game/events/GameEvent.java +++ b/Mage/src/main/java/mage/game/events/GameEvent.java @@ -109,6 +109,13 @@ public class GameEvent implements Serializable { PLAYER_LIFE_CHANGE, GAIN_LIFE, GAINED_LIFE, LOSE_LIFE, LOST_LIFE, + /* LOSE_LIFE + LOST_LIFE + targetId the id of the player loosing life + sourceId the id of the player loosing life + playerId the id of the player loosing life + amount amount of life loss + flag true = from comabat damage - other from non combat damage + */ PLAY_LAND, LAND_PLAYED, CREW_VEHICLE, /* CREW_VEHICLE diff --git a/Mage/src/main/java/mage/players/Player.java b/Mage/src/main/java/mage/players/Player.java index ebadfbe9c89..268dc5d05ec 100644 --- a/Mage/src/main/java/mage/players/Player.java +++ b/Mage/src/main/java/mage/players/Player.java @@ -111,7 +111,14 @@ public interface Player extends MageItem, Copyable { void setLife(int life, Game game); - int loseLife(int amount, Game game); + /** + * + * @param amount amount of life loss + * @param game + * @param atCombat was the source combat damage + * @return + */ + int loseLife(int amount, Game game, boolean atCombat); int gainLife(int amount, Game game); diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 8b5ca4049d4..ca78a0ae01d 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -1699,7 +1699,7 @@ public abstract class PlayerImpl implements Player, Serializable { if (life > this.life) { gainLife(life - this.life, game); } else if (life < this.life) { - loseLife(this.life - life, game); + loseLife(this.life - life, game, false); } } @@ -1730,17 +1730,17 @@ public abstract class PlayerImpl implements Player, Serializable { } @Override - public int loseLife(int amount, Game game) { + public int loseLife(int amount, Game game, boolean atCombat) { if (!canLoseLife) { return 0; } - GameEvent event = new GameEvent(GameEvent.EventType.LOSE_LIFE, playerId, playerId, playerId, amount, false); + GameEvent event = new GameEvent(GameEvent.EventType.LOSE_LIFE, playerId, playerId, playerId, amount, atCombat); if (!game.replaceEvent(event)) { this.life -= event.getAmount(); if (!game.isSimulation()) { game.informPlayers(this.getLogName() + " loses " + event.getAmount() + " life"); } - game.fireEvent(GameEvent.getEvent(GameEvent.EventType.LOST_LIFE, playerId, playerId, playerId, amount)); + game.fireEvent(new GameEvent(GameEvent.EventType.LOST_LIFE, playerId, playerId, playerId, amount, atCombat)); return amount; } return 0; @@ -1820,7 +1820,7 @@ public abstract class PlayerImpl implements Player, Serializable { } else { GameEvent damageToLifeLossEvent = new GameEvent(EventType.DAMAGE_CAUSES_LIFE_LOSS, playerId, sourceId, playerId, actualDamage, combatDamage); if (!game.replaceEvent(damageToLifeLossEvent)) { - this.loseLife(damageToLifeLossEvent.getAmount(), game); + this.loseLife(damageToLifeLossEvent.getAmount(), game, combatDamage); } } if (sourceAbilities != null && sourceAbilities.containsKey(LifelinkAbility.getInstance().getId())) {