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 2c7042d72a6..89d89b2933a 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerCount.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerCount.java @@ -3,6 +3,7 @@ package mage.abilities.dynamicvalue.common; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; +import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; @@ -29,12 +30,17 @@ public class SourcePermanentPowerCount implements DynamicValue { @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { - Permanent sourcePermanent = sourceAbility.getSourcePermanentOrLKI(game); - if (sourcePermanent == null) { - return 0; + Permanent sourcePermanent = game.getPermanent(sourceAbility.getSourceId()); + if (sourcePermanent == null + || (sourceAbility.getSourceObjectZoneChangeCounter() > 0 + && sourcePermanent.getZoneChangeCounter(game) > sourceAbility.getSourceObjectZoneChangeCounter())) { + sourcePermanent = (Permanent) game.getLastKnownInformation(sourceAbility.getSourceId(), Zone.BATTLEFIELD); } - int power = sourcePermanent.getPower().getValue(); - return allowNegativeValues ? power : Integer.max(power, 0); + if (sourcePermanent != null + && (allowNegativeValues || sourcePermanent.getPower().getValue() >= 0)) { + return sourcePermanent.getPower().getValue(); + } + return 0; } @Override diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentToughnessValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentToughnessValue.java index d651268faeb..29c9eab4384 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentToughnessValue.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentToughnessValue.java @@ -3,6 +3,7 @@ package mage.abilities.dynamicvalue.common; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; +import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; @@ -29,11 +30,14 @@ public class SourcePermanentToughnessValue implements DynamicValue { @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { - Permanent sourcePermanent = sourceAbility.getSourcePermanentOrLKI(game); + Permanent sourcePermanent = game.getPermanent(sourceAbility.getSourceId()); if (sourcePermanent == null) { - return 0; + sourcePermanent = (Permanent) game.getLastKnownInformation(sourceAbility.getSourceId(), Zone.BATTLEFIELD); } - return sourcePermanent.getToughness().getValue(); + if (sourcePermanent != null) { + return sourcePermanent.getToughness().getValue(); + } + return 0; } @Override