From df0cd60fbcc2ae691eeb3209304b64a2f56ed2d1 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 31 Dec 2016 17:41:12 +0100 Subject: [PATCH] * Marionette Master and Mortis Dogs, fixed that power below 0 caused life gain. --- .../src/mage/cards/m/MarionetteMaster.java | 4 ++-- Mage.Sets/src/mage/cards/m/MortisDogs.java | 6 +++--- .../common/SourcePermanentPowerCount.java | 21 +++++++++++++++++-- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/Mage.Sets/src/mage/cards/m/MarionetteMaster.java b/Mage.Sets/src/mage/cards/m/MarionetteMaster.java index ed668d475f2..6bd1518aca3 100644 --- a/Mage.Sets/src/mage/cards/m/MarionetteMaster.java +++ b/Mage.Sets/src/mage/cards/m/MarionetteMaster.java @@ -48,7 +48,7 @@ import mage.target.common.TargetOpponent; public class MarionetteMaster extends CardImpl { public MarionetteMaster(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}"); this.subtype.add("Human"); this.subtype.add("Artificer"); this.power = new MageInt(1); @@ -58,7 +58,7 @@ public class MarionetteMaster extends CardImpl { this.addAbility(new FabricateAbility(3)); // Whenever an artifact you control is put into a graveyard from the battlefield, target opponent loses life equal to Marionette Master's power. - Effect effect = new LoseLifeTargetEffect(new SourcePermanentPowerCount()); + Effect effect = new LoseLifeTargetEffect(new SourcePermanentPowerCount(false)); effect.setText("target opponent loses life equal to Marionette Master's power"); Ability ability = new PutIntoGraveFromBattlefieldAllTriggeredAbility(effect, false, new FilterControlledArtifactPermanent("an artifact you control"), false); ability.addTarget(new TargetOpponent()); diff --git a/Mage.Sets/src/mage/cards/m/MortisDogs.java b/Mage.Sets/src/mage/cards/m/MortisDogs.java index b18c3955df3..86392712274 100644 --- a/Mage.Sets/src/mage/cards/m/MortisDogs.java +++ b/Mage.Sets/src/mage/cards/m/MortisDogs.java @@ -48,7 +48,7 @@ import mage.target.TargetPlayer; public class MortisDogs extends CardImpl { public MortisDogs(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); this.subtype.add("Hound"); this.power = new MageInt(2); @@ -57,7 +57,7 @@ public class MortisDogs extends CardImpl { // Whenever Mortis Dogs attacks, it gets +2/+0 until end of turn. this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect(2, 0, Duration.EndOfTurn), false)); // When Mortis Dogs dies, target player loses life equal to its power. - Ability ability = new DiesTriggeredAbility(new LoseLifeTargetEffect(new SourcePermanentPowerCount())); + Ability ability = new DiesTriggeredAbility(new LoseLifeTargetEffect(new SourcePermanentPowerCount(false))); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } @@ -70,4 +70,4 @@ public class MortisDogs extends CardImpl { public MortisDogs copy() { return new MortisDogs(this); } -} \ No newline at end of file +} diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerCount.java index 70c54d46ec4..f55eb7a3f87 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerCount.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerCount.java @@ -11,10 +11,27 @@ import mage.game.permanent.Permanent; */ public class SourcePermanentPowerCount implements DynamicValue { + boolean allowNegativeValues; + + public SourcePermanentPowerCount() { + this(true); + } + + public SourcePermanentPowerCount(boolean allowNegativeValues) { + super(); + this.allowNegativeValues = allowNegativeValues; + } + + public SourcePermanentPowerCount(final SourcePermanentPowerCount dynamicValue) { + super(); + this.allowNegativeValues = dynamicValue.allowNegativeValues; + } + @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(sourceAbility.getSourceId()); - if (sourcePermanent != null) { + if (sourcePermanent != null + && (allowNegativeValues || sourcePermanent.getPower().getValue() >= 0)) { return sourcePermanent.getPower().getValue(); } return 0; @@ -22,7 +39,7 @@ public class SourcePermanentPowerCount implements DynamicValue { @Override public SourcePermanentPowerCount copy() { - return new SourcePermanentPowerCount(); + return new SourcePermanentPowerCount(this); } @Override