From 5d397bfbee2d82c6d5f11f8506e0fec95a17094d Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 29 Jun 2012 16:57:25 +0400 Subject: [PATCH] Updated other boost effect for AI outcome --- .../effects/ContinuousEffectImpl.java | 18 ++++++++++++++++++ .../common/continious/BoostAllEffect.java | 4 +++- .../continious/BoostEnchantedEffect.java | 18 +++++++++++++++++- .../continious/BoostOpponentsEffect.java | 2 +- .../common/continious/BoostTargetEffect.java | 16 ---------------- 5 files changed, 39 insertions(+), 19 deletions(-) diff --git a/Mage/src/mage/abilities/effects/ContinuousEffectImpl.java b/Mage/src/mage/abilities/effects/ContinuousEffectImpl.java index 019e30c496a..a126940f818 100644 --- a/Mage/src/mage/abilities/effects/ContinuousEffectImpl.java +++ b/Mage/src/mage/abilities/effects/ContinuousEffectImpl.java @@ -32,6 +32,10 @@ import mage.Constants.*; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; import mage.abilities.TriggeredAbility; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.DomainValue; +import mage.abilities.dynamicvalue.common.SignInversionDynamicValue; +import mage.abilities.dynamicvalue.common.StaticValue; import mage.game.Game; import java.util.*; @@ -157,4 +161,18 @@ public abstract class ContinuousEffectImpl> ex this.staticText = text; } + protected static boolean isCanKill(DynamicValue toughness) { + if (toughness instanceof StaticValue) { + return toughness.calculate(null, null) < 0; + } + if (toughness instanceof SignInversionDynamicValue) { + // count this class as used for "-{something_positive}" + return true; + } + if (toughness instanceof DomainValue) { + return ((DomainValue)toughness).getAmount() < 0; + } + return false; + } + } diff --git a/Mage/src/mage/abilities/effects/common/continious/BoostAllEffect.java b/Mage/src/mage/abilities/effects/common/continious/BoostAllEffect.java index 2cd22dd92df..edf10f13d15 100644 --- a/Mage/src/mage/abilities/effects/common/continious/BoostAllEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/BoostAllEffect.java @@ -34,6 +34,8 @@ import mage.Constants.Outcome; import mage.Constants.SubLayer; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.DomainValue; +import mage.abilities.dynamicvalue.common.SignInversionDynamicValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.ContinuousEffectImpl; import mage.filter.common.FilterCreaturePermanent; @@ -68,7 +70,7 @@ public class BoostAllEffect extends ContinuousEffectImpl { } public BoostAllEffect(DynamicValue power, DynamicValue toughness, Duration duration, FilterCreaturePermanent filter, boolean excludeSource) { - super(duration, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature); + super(duration, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, isCanKill(toughness) ? Outcome.UnboostCreature : Outcome.BoostCreature); this.power = power; this.toughness = toughness; this.filter = filter; diff --git a/Mage/src/mage/abilities/effects/common/continious/BoostEnchantedEffect.java b/Mage/src/mage/abilities/effects/common/continious/BoostEnchantedEffect.java index 27a785c9b3a..c3f2dd681a8 100644 --- a/Mage/src/mage/abilities/effects/common/continious/BoostEnchantedEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/BoostEnchantedEffect.java @@ -34,6 +34,8 @@ import mage.Constants.Outcome; import mage.Constants.SubLayer; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.DomainValue; +import mage.abilities.dynamicvalue.common.SignInversionDynamicValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.ContinuousEffectImpl; import mage.game.Game; @@ -61,7 +63,7 @@ public class BoostEnchantedEffect extends ContinuousEffectImpl { this.lockedIn = effect.lockedIn; } - private static boolean isCanKill(DynamicValue toughness) { - if (toughness instanceof StaticValue) { - return toughness.calculate(null, null) < 0; - } - if (toughness instanceof SignInversionDynamicValue) { - // count this class as used for "-{something_positive}" - return true; - } - if (toughness instanceof DomainValue) { - return ((DomainValue)toughness).getAmount() < 0; - } - return false; - } - @Override public BoostTargetEffect copy() { return new BoostTargetEffect(this);