diff --git a/Mage.Sets/src/mage/cards/a/AbyssalHunter.java b/Mage.Sets/src/mage/cards/a/AbyssalHunter.java index 911379c441a..fb257523cc8 100644 --- a/Mage.Sets/src/mage/cards/a/AbyssalHunter.java +++ b/Mage.Sets/src/mage/cards/a/AbyssalHunter.java @@ -1,13 +1,12 @@ package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.TapTargetEffect; @@ -18,6 +17,8 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author Quercitron @@ -34,7 +35,7 @@ public final class AbyssalHunter extends CardImpl { // {B}, {tap}: Tap target creature. Abyssal Hunter deals damage equal to Abyssal Hunter's power to that creature. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TapTargetEffect(), new ManaCostsImpl<>("{B}")); - Effect effect = new DamageTargetEffect(new SourcePermanentPowerCount()); + Effect effect = new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE); effect.setText("{this} deals damage equal to {this}'s power to that creature."); ability.addEffect(effect); ability.addCost(new TapSourceCost()); diff --git a/Mage.Sets/src/mage/cards/a/AerieOuphes.java b/Mage.Sets/src/mage/cards/a/AerieOuphes.java index 54eb8d72b71..ea31e737b22 100644 --- a/Mage.Sets/src/mage/cards/a/AerieOuphes.java +++ b/Mage.Sets/src/mage/cards/a/AerieOuphes.java @@ -1,12 +1,11 @@ package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.PersistAbility; @@ -19,6 +18,8 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author jeffwadsworth @@ -39,7 +40,7 @@ public final class AerieOuphes extends CardImpl { this.toughness = new MageInt(3); // Sacrifice Aerie Ouphes: Aerie Ouphes deals damage equal to its power to target creature with flying. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()) + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power to target creature with flying"), new SacrificeSourceCost()); ability.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/a/AgathaOfTheVileCauldron.java b/Mage.Sets/src/mage/cards/a/AgathaOfTheVileCauldron.java index 41762a492a9..7753ae50b19 100644 --- a/Mage.Sets/src/mage/cards/a/AgathaOfTheVileCauldron.java +++ b/Mage.Sets/src/mage/cards/a/AgathaOfTheVileCauldron.java @@ -5,8 +5,7 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.cost.CostModificationEffectImpl; @@ -68,8 +67,6 @@ public final class AgathaOfTheVileCauldron extends CardImpl { class AgathaOfTheVileCauldronEffect extends CostModificationEffectImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - AgathaOfTheVileCauldronEffect() { super(Duration.WhileOnBattlefield, Outcome.Benefit, CostModificationType.REDUCE_COST); staticText = "Activated abilities of creatures you control cost {X} less to activate, " @@ -88,7 +85,7 @@ class AgathaOfTheVileCauldronEffect extends CostModificationEffectImpl { @Override public boolean apply(Game game, Ability source, Ability abilityToModify) { - int amount = xValue.calculate(game, source, this); + int amount = SourcePermanentPowerValue.NOT_NEGATIVE.calculate(game, source, this); if (amount <= 0) { return true; } diff --git a/Mage.Sets/src/mage/cards/a/ArmoredArmadillo.java b/Mage.Sets/src/mage/cards/a/ArmoredArmadillo.java index 535ad5a0f9e..fcafeb60d83 100644 --- a/Mage.Sets/src/mage/cards/a/ArmoredArmadillo.java +++ b/Mage.Sets/src/mage/cards/a/ArmoredArmadillo.java @@ -33,7 +33,7 @@ public final class ArmoredArmadillo extends CardImpl { // {3}{W}: Armored Armadillo gets +X/+0 until end of turn, where X is its toughness. this.addAbility(new SimpleActivatedAbility( new BoostSourceEffect( - SourcePermanentToughnessValue.getInstance(), StaticValue.get(0), Duration.EndOfTurn + SourcePermanentToughnessValue.instance, StaticValue.get(0), Duration.EndOfTurn ).setText("{this} gets +X/+0 until end of turn, where X is its toughness."), new ManaCostsImpl<>("{3}{W}"))); } diff --git a/Mage.Sets/src/mage/cards/a/AttendantOfVraska.java b/Mage.Sets/src/mage/cards/a/AttendantOfVraska.java index fc32769b487..d4f6dd732c7 100644 --- a/Mage.Sets/src/mage/cards/a/AttendantOfVraska.java +++ b/Mage.Sets/src/mage/cards/a/AttendantOfVraska.java @@ -1,19 +1,20 @@ package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.GainLifeEffect; -import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.FilterPermanent; +import java.util.UUID; + /** * * @author TheElk801 @@ -39,7 +40,7 @@ public final class AttendantOfVraska extends CardImpl { // When Attendant of Vraska dies, if you control a Vraska planeswalker, you gain life equal to Attendant of Vraska's power. this.addAbility(new ConditionalInterveningIfTriggeredAbility( new DiesSourceTriggeredAbility(new GainLifeEffect( - new SourcePermanentPowerCount() + SourcePermanentPowerValue.NOT_NEGATIVE ), false), new PermanentsOnTheBattlefieldCondition(filter), "When {this} dies, if you control a Vraska planeswalker, " + "you gain life equal to {this}'s power." diff --git a/Mage.Sets/src/mage/cards/a/AuriokBladewarden.java b/Mage.Sets/src/mage/cards/a/AuriokBladewarden.java index a8ef921a0c8..0775f8adcb1 100644 --- a/Mage.Sets/src/mage/cards/a/AuriokBladewarden.java +++ b/Mage.Sets/src/mage/cards/a/AuriokBladewarden.java @@ -1,21 +1,20 @@ - package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; -import mage.constants.Zone; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author Loki @@ -31,7 +30,7 @@ public final class AuriokBladewarden extends CardImpl { this.toughness = new MageInt(1); // {tap}: Target creature gets +X/+X until end of turn, where X is Auriok Bladewarden's power. - Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(new SourcePermanentPowerCount(), new SourcePermanentPowerCount(), Duration.EndOfTurn), new TapSourceCost()); + Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn), new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BalduvianBerserker.java b/Mage.Sets/src/mage/cards/b/BalduvianBerserker.java index dfc98927682..b09826c9010 100644 --- a/Mage.Sets/src/mage/cards/b/BalduvianBerserker.java +++ b/Mage.Sets/src/mage/cards/b/BalduvianBerserker.java @@ -3,7 +3,7 @@ package mage.cards.b; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.EnlistAbility; import mage.cards.CardImpl; @@ -32,7 +32,7 @@ public final class BalduvianBerserker extends CardImpl { // When Balduvian Berserker dies, it deals damage equal to its power to any target. Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect( - new SourcePermanentPowerCount() + SourcePermanentPowerValue.NOT_NEGATIVE ).setText("it deals damage equal to its power to any target")); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/b/BlindWorship.java b/Mage.Sets/src/mage/cards/b/BlindWorship.java index 57a492d74b1..55566116726 100644 --- a/Mage.Sets/src/mage/cards/b/BlindWorship.java +++ b/Mage.Sets/src/mage/cards/b/BlindWorship.java @@ -1,12 +1,9 @@ - package mage.cards.b; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; @@ -19,6 +16,8 @@ import mage.filter.StaticFilters; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author Styxo @@ -37,8 +36,7 @@ public final class BlindWorship extends CardImpl { this.addAbility(ability); // Enchanted creature has "Whenever this creature attacks, each other creature you control gets +X/+X until end of turn, where X is this creature's power." - DynamicValue xValue = new SourcePermanentPowerCount(); - Ability attachedAbility = new AttacksTriggeredAbility(new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true), false); + Ability attachedAbility = new AttacksTriggeredAbility(new BoostControlledEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true), false); Effect gainAbilityEffect = new GainAbilityAttachedEffect(attachedAbility, AttachmentType.AURA); gainAbilityEffect.setText("Enchanted creature has \"Whenever this creature attacks, each other creature you control gets +X/+X until end of turn, where X is this creature's power\""); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, gainAbilityEffect)); diff --git a/Mage.Sets/src/mage/cards/b/BottleGolems.java b/Mage.Sets/src/mage/cards/b/BottleGolems.java index cfffa416bb1..a6030653ac0 100644 --- a/Mage.Sets/src/mage/cards/b/BottleGolems.java +++ b/Mage.Sets/src/mage/cards/b/BottleGolems.java @@ -2,8 +2,7 @@ package mage.cards.b; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; @@ -18,8 +17,6 @@ import java.util.UUID; */ public final class BottleGolems extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public BottleGolems(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}"); @@ -31,7 +28,7 @@ public final class BottleGolems extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // When Bottle Golems dies, you gain life equal to its power. - this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(xValue, "you gain life equal to its power"))); + this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(SourcePermanentPowerValue.NOT_NEGATIVE, "you gain life equal to its power"))); } private BottleGolems(final BottleGolems card) { diff --git a/Mage.Sets/src/mage/cards/b/BoulderbranchGolem.java b/Mage.Sets/src/mage/cards/b/BoulderbranchGolem.java index 342f18ba253..0cc82e907a7 100644 --- a/Mage.Sets/src/mage/cards/b/BoulderbranchGolem.java +++ b/Mage.Sets/src/mage/cards/b/BoulderbranchGolem.java @@ -2,8 +2,7 @@ package mage.cards.b; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.keyword.PrototypeAbility; import mage.cards.CardImpl; @@ -18,8 +17,6 @@ import java.util.UUID; */ public final class BoulderbranchGolem extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public BoulderbranchGolem(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}"); @@ -32,7 +29,7 @@ public final class BoulderbranchGolem extends CardImpl { // When Boulderbranch Golem enters the battlefield, you gain life equal to its power. this.addAbility(new EntersBattlefieldTriggeredAbility( - new GainLifeEffect(xValue).setText("you gain life equal to its power") + new GainLifeEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("you gain life equal to its power") )); } diff --git a/Mage.Sets/src/mage/cards/b/BrambleguardCaptain.java b/Mage.Sets/src/mage/cards/b/BrambleguardCaptain.java index a5ee9caa822..3671dcef4e0 100644 --- a/Mage.Sets/src/mage/cards/b/BrambleguardCaptain.java +++ b/Mage.Sets/src/mage/cards/b/BrambleguardCaptain.java @@ -3,8 +3,7 @@ package mage.cards.b; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfCombatTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; @@ -22,8 +21,6 @@ import java.util.UUID; */ public final class BrambleguardCaptain extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public BrambleguardCaptain(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); @@ -34,7 +31,7 @@ public final class BrambleguardCaptain extends CardImpl { // At the beginning of combat on your turn, target creature you control gets +X/+0 until end of turn, where X is Brambleguard Captain's power. Ability ability = new BeginningOfCombatTriggeredAbility(new BoostTargetEffect( - xValue, StaticValue.get(0), Duration.EndOfTurn + SourcePermanentPowerValue.NOT_NEGATIVE, StaticValue.get(0), Duration.EndOfTurn ), TargetController.YOU, false); ability.addTarget(new TargetControlledCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/b/BurningAnger.java b/Mage.Sets/src/mage/cards/b/BurningAnger.java index 81ca8d69c6b..8215745859e 100644 --- a/Mage.Sets/src/mage/cards/b/BurningAnger.java +++ b/Mage.Sets/src/mage/cards/b/BurningAnger.java @@ -1,12 +1,11 @@ package mage.cards.b; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -19,6 +18,8 @@ import mage.target.TargetPermanent; import mage.target.common.TargetAnyTarget; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author LevelX2 @@ -38,7 +39,7 @@ public final class BurningAnger extends CardImpl { this.addAbility(ability); // Enchanted creature has "{T}: This creature deals damage equal to its power to any target." - Effect effect = new DamageTargetEffect(new SourcePermanentPowerCount()); + Effect effect = new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE); effect.setText("{this} deals damage equal to its power to any target"); Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new TapSourceCost()); gainedAbility.addTarget(new TargetAnyTarget()); diff --git a/Mage.Sets/src/mage/cards/c/CacophonyScamp.java b/Mage.Sets/src/mage/cards/c/CacophonyScamp.java index a8d47031667..3a13fea5f42 100644 --- a/Mage.Sets/src/mage/cards/c/CacophonyScamp.java +++ b/Mage.Sets/src/mage/cards/c/CacophonyScamp.java @@ -5,8 +5,7 @@ import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.costs.common.SacrificeSourceCost; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.counter.ProliferateEffect; @@ -23,8 +22,6 @@ import java.util.UUID; */ public final class CacophonyScamp extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public CacophonyScamp(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}"); @@ -40,7 +37,7 @@ public final class CacophonyScamp extends CardImpl { ), false)); // When Cacophony Scamp dies, it deals damage equal to its power to any target. - Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(xValue) + Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power to any target")); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/CaptainRipleyVance.java b/Mage.Sets/src/mage/cards/c/CaptainRipleyVance.java index 8c85d76dc24..b5af5e44cba 100644 --- a/Mage.Sets/src/mage/cards/c/CaptainRipleyVance.java +++ b/Mage.Sets/src/mage/cards/c/CaptainRipleyVance.java @@ -1,16 +1,15 @@ package mage.cards.c; -import java.util.UUID; import mage.MageInt; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; -import mage.constants.SubType; -import mage.constants.SuperType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.constants.Zone; import mage.counters.CounterType; import mage.game.Game; @@ -18,6 +17,8 @@ import mage.game.events.GameEvent; import mage.target.common.TargetAnyTarget; import mage.watchers.common.SpellsCastWatcher; +import java.util.UUID; + /** * * @author weirddan455 @@ -51,7 +52,7 @@ class CaptainRipleyVanceTriggeredAbility extends TriggeredAbilityImpl { public CaptainRipleyVanceTriggeredAbility() { super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance())); - addEffect(new DamageTargetEffect(new SourcePermanentPowerCount()).setText("it deals damage equal to its power to any target").concatBy(", then")); + addEffect(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("it deals damage equal to its power to any target").concatBy(", then")); addTarget(new TargetAnyTarget()); setTriggerPhrase("Whenever you cast your third spell each turn, "); } diff --git a/Mage.Sets/src/mage/cards/c/ChameleonColossus.java b/Mage.Sets/src/mage/cards/c/ChameleonColossus.java index 697e1d51b61..00b6b921932 100644 --- a/Mage.Sets/src/mage/cards/c/ChameleonColossus.java +++ b/Mage.Sets/src/mage/cards/c/ChameleonColossus.java @@ -4,7 +4,7 @@ import mage.MageInt; import mage.ObjectColor; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.ChangelingAbility; import mage.abilities.keyword.ProtectionAbility; @@ -21,8 +21,6 @@ import java.util.UUID; */ public final class ChameleonColossus extends CardImpl { - private static final SourcePermanentPowerCount xValue = new SourcePermanentPowerCount(); - public ChameleonColossus(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); this.subtype.add(SubType.SHAPESHIFTER); @@ -38,7 +36,7 @@ public final class ChameleonColossus extends CardImpl { // {2}{G}{G}: Chameleon Colossus gets +X/+X until end of turn, where X is its power. this.addAbility(new SimpleActivatedAbility( - new BoostSourceEffect(xValue, xValue, Duration.EndOfTurn) + new BoostSourceEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn) .setText("{this} gets +X/+X until end of turn, where X is its power"), new ManaCostsImpl<>("{2}{G}{G}") )); diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfWits.java b/Mage.Sets/src/mage/cards/c/ChampionOfWits.java index f32e7a86279..763f9385108 100644 --- a/Mage.Sets/src/mage/cards/c/ChampionOfWits.java +++ b/Mage.Sets/src/mage/cards/c/ChampionOfWits.java @@ -1,13 +1,10 @@ - package mage.cards.c; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.discard.DiscardControllerEffect; @@ -17,6 +14,8 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; +import java.util.UUID; + /** * * @author spjspj @@ -32,8 +31,7 @@ public final class ChampionOfWits extends CardImpl { this.toughness = new MageInt(1); // When Champion of Wits enters the battlefield, you may draw cards equal to its power. If you do, discard two cards - DynamicValue xValue = new SourcePermanentPowerCount(); - Effect effect = new DrawCardSourceControllerEffect(xValue); + Effect effect = new DrawCardSourceControllerEffect(SourcePermanentPowerValue.NOT_NEGATIVE); effect.setText("you may draw cards equal to its power"); Ability ability = new EntersBattlefieldTriggeredAbility(effect, true); effect = new DiscardControllerEffect(2); @@ -53,4 +51,4 @@ public final class ChampionOfWits extends CardImpl { public ChampionOfWits copy() { return new ChampionOfWits(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/c/CinderShade.java b/Mage.Sets/src/mage/cards/c/CinderShade.java index 299b8fb8a35..5ba6e2076c1 100644 --- a/Mage.Sets/src/mage/cards/c/CinderShade.java +++ b/Mage.Sets/src/mage/cards/c/CinderShade.java @@ -1,23 +1,23 @@ - package mage.cards.c; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author michael.napoleon@gmail.com @@ -34,7 +34,7 @@ public final class CinderShade extends CardImpl { this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{B}"))); // {R}, Sacrifice Cinder Shade: Cinder Shade deals damage equal to its power to target creature. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()) + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("It deals damage equal to its power to target creature"), new ManaCostsImpl<>("{R}")); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/c/CommandoRaid.java b/Mage.Sets/src/mage/cards/c/CommandoRaid.java index 87a8b48da60..be0b73f7b6c 100644 --- a/Mage.Sets/src/mage/cards/c/CommandoRaid.java +++ b/Mage.Sets/src/mage/cards/c/CommandoRaid.java @@ -2,7 +2,7 @@ package mage.cards.c; import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; @@ -25,7 +25,7 @@ public final class CommandoRaid extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}"); // Until end of turn, target creature you control gains "When this creature deals combat damage to a player, you may have it deal damage equal to its power to target creature that player controls." - Effect effect = new DamageTargetEffect(new SourcePermanentPowerCount()); + Effect effect = new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE); effect.setText("have it deal damage equal to its power to target creature that player controls."); Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(effect, true, true); ability.addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/c/ConclaveMentor.java b/Mage.Sets/src/mage/cards/c/ConclaveMentor.java index 26559bee183..afa048a14df 100644 --- a/Mage.Sets/src/mage/cards/c/ConclaveMentor.java +++ b/Mage.Sets/src/mage/cards/c/ConclaveMentor.java @@ -3,8 +3,7 @@ package mage.cards.c; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.replacement.ModifyCountersAddedEffect; import mage.cards.CardImpl; @@ -21,8 +20,6 @@ import java.util.UUID; */ public final class ConclaveMentor extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public ConclaveMentor(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{W}"); @@ -35,7 +32,7 @@ public final class ConclaveMentor extends CardImpl { this.addAbility(new SimpleStaticAbility(new ModifyCountersAddedEffect(StaticFilters.FILTER_CONTROLLED_CREATURE, CounterType.P1P1))); // When Conclave Mentor dies, you gain life equal to its power. - this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(xValue, "you gain life equal to its power"))); + this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(SourcePermanentPowerValue.NOT_NEGATIVE, "you gain life equal to its power"))); } private ConclaveMentor(final ConclaveMentor card) { diff --git a/Mage.Sets/src/mage/cards/c/CradleClearcutter.java b/Mage.Sets/src/mage/cards/c/CradleClearcutter.java index dbe7ec11586..c132ba5fe17 100644 --- a/Mage.Sets/src/mage/cards/c/CradleClearcutter.java +++ b/Mage.Sets/src/mage/cards/c/CradleClearcutter.java @@ -2,8 +2,7 @@ package mage.cards.c; import mage.MageInt; import mage.Mana; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.keyword.PrototypeAbility; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; @@ -18,8 +17,6 @@ import java.util.UUID; */ public final class CradleClearcutter extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public CradleClearcutter(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}"); @@ -32,7 +29,7 @@ public final class CradleClearcutter extends CardImpl { // {T}: Add an amount of {G} equal to Cradle Clearcutter's power. this.addAbility(new DynamicManaAbility( - Mana.GreenMana(1), xValue, "Add an amount of {G} equal to {this}'s power." + Mana.GreenMana(1), SourcePermanentPowerValue.NOT_NEGATIVE, "Add an amount of {G} equal to {this}'s power." )); } diff --git a/Mage.Sets/src/mage/cards/c/CultivatorOfBlades.java b/Mage.Sets/src/mage/cards/c/CultivatorOfBlades.java index e1f0a3f1231..c5631434c44 100644 --- a/Mage.Sets/src/mage/cards/c/CultivatorOfBlades.java +++ b/Mage.Sets/src/mage/cards/c/CultivatorOfBlades.java @@ -1,9 +1,8 @@ - package mage.cards.c; import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.keyword.FabricateAbility; import mage.cards.CardImpl; @@ -32,7 +31,7 @@ public final class CultivatorOfBlades extends CardImpl { this.addAbility(new FabricateAbility(2)); // Whenever Cultivator of Blades attacks, you may have other attacking creatures get +X/+X until end of turn, where X is Cultivator of Blades's power. - this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect(new SourcePermanentPowerCount(), new SourcePermanentPowerCount(), Duration.EndOfTurn, StaticFilters.FILTER_ATTACKING_CREATURES, true), + this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn, StaticFilters.FILTER_ATTACKING_CREATURES, true), true, "Whenever Cultivator of Blades attacks, you may have other attacking creatures get +X/+X until end of turn, where X is Cultivator of Blades's power.")); } diff --git a/Mage.Sets/src/mage/cards/c/CyclopsSuperconductor.java b/Mage.Sets/src/mage/cards/c/CyclopsSuperconductor.java index c032359313a..d1daff0af1c 100644 --- a/Mage.Sets/src/mage/cards/c/CyclopsSuperconductor.java +++ b/Mage.Sets/src/mage/cards/c/CyclopsSuperconductor.java @@ -5,7 +5,7 @@ import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.delayed.ReflexiveTriggeredAbility; import mage.abilities.costs.common.PayEnergyCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DoWhenCostPaid; import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect; @@ -39,7 +39,7 @@ public final class CyclopsSuperconductor extends CardImpl { // When Cyclops Superconductor dies, you may pay {E}{E}{E}. When you do, Cyclops Superconductor deals damage equal to its power to any target. ReflexiveTriggeredAbility reflexive = new ReflexiveTriggeredAbility( - new DamageTargetEffect(new SourcePermanentPowerCount()) + new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("{this} deals damage equal to its power to any target"), false ); diff --git a/Mage.Sets/src/mage/cards/d/DoomWeaver.java b/Mage.Sets/src/mage/cards/d/DoomWeaver.java index c45b379efc1..0a0485b2f6d 100644 --- a/Mage.Sets/src/mage/cards/d/DoomWeaver.java +++ b/Mage.Sets/src/mage/cards/d/DoomWeaver.java @@ -3,8 +3,7 @@ package mage.cards.d; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.continuous.GainAbilityPairedEffect; import mage.abilities.keyword.ReachAbility; @@ -21,8 +20,6 @@ import java.util.UUID; */ public final class DoomWeaver extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public DoomWeaver(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}"); @@ -39,7 +36,7 @@ public final class DoomWeaver extends CardImpl { // As long as Doom Weaver is paired with another creature, each of those creatures has "When this creature dies, draw cards equal to its power." this.addAbility(new SimpleStaticAbility(new GainAbilityPairedEffect(new DiesSourceTriggeredAbility( - new DrawCardSourceControllerEffect(xValue).setText("draw cards equal to its power") + new DrawCardSourceControllerEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("draw cards equal to its power") ).setTriggerPhrase("When this creature dies, "), "As long as {this} is paired with another creature, " + "each of those creatures has \"When this creature dies, draw cards equal to its power.\""))); } diff --git a/Mage.Sets/src/mage/cards/d/DragonThroneOfTarkir.java b/Mage.Sets/src/mage/cards/d/DragonThroneOfTarkir.java index c3f2a51021d..a44ca1aa7ec 100644 --- a/Mage.Sets/src/mage/cards/d/DragonThroneOfTarkir.java +++ b/Mage.Sets/src/mage/cards/d/DragonThroneOfTarkir.java @@ -1,14 +1,11 @@ - package mage.cards.d; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; @@ -21,6 +18,8 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.StaticFilters; +import java.util.UUID; + /** * * @author LevelX2 @@ -37,8 +36,7 @@ public final class DragonThroneOfTarkir extends CardImpl { Effect effect = new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, true); effect.setText("Other creatures you control gain trample"); Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new GenericManaCost(2)); - DynamicValue xValue = new SourcePermanentPowerCount(); - effect = new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true); + effect = new BoostControlledEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true); effect.setText("and get +X/+X until end of turn, where X is this creature's power"); gainedAbility.addEffect(effect); gainedAbility.addCost(new TapSourceCost()); diff --git a/Mage.Sets/src/mage/cards/d/DreadhordeButcher.java b/Mage.Sets/src/mage/cards/d/DreadhordeButcher.java index 3ed5968c0c3..3ead81c69e8 100644 --- a/Mage.Sets/src/mage/cards/d/DreadhordeButcher.java +++ b/Mage.Sets/src/mage/cards/d/DreadhordeButcher.java @@ -4,7 +4,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerOrPlaneswalkerTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.HasteAbility; @@ -40,7 +40,7 @@ public final class DreadhordeButcher extends CardImpl { // When Dreadhorde Butcher dies, it deals damage equal to its power to any target. Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect( - new SourcePermanentPowerCount() + SourcePermanentPowerValue.NOT_NEGATIVE ).setText("it deals damage equal to its power to any target")); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/d/DreadmawsIre.java b/Mage.Sets/src/mage/cards/d/DreadmawsIre.java index 0ca1d4808f0..c5703f64d9d 100644 --- a/Mage.Sets/src/mage/cards/d/DreadmawsIre.java +++ b/Mage.Sets/src/mage/cards/d/DreadmawsIre.java @@ -2,7 +2,7 @@ package mage.cards.d; import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect; @@ -37,7 +37,7 @@ public final class DreadmawsIre extends CardImpl { this.getSpellAbility().addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance()) .setText("and gains trample")); - Effect effect = new DamageTargetEffect(new SourcePermanentPowerCount()); + Effect effect = new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE); effect.setText("have it deal damage equal to its power to target creature that player controls."); Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DestroyTargetEffect(), false, true); ability.addTarget(new TargetPermanent(filter)); diff --git a/Mage.Sets/src/mage/cards/d/DugganPrivateDetective.java b/Mage.Sets/src/mage/cards/d/DugganPrivateDetective.java index 26df967809e..0bcd954c207 100644 --- a/Mage.Sets/src/mage/cards/d/DugganPrivateDetective.java +++ b/Mage.Sets/src/mage/cards/d/DugganPrivateDetective.java @@ -9,7 +9,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.dynamicvalue.MultipliedValue; import mage.abilities.dynamicvalue.common.CardsInControllerHandCount; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.SetBasePowerToughnessSourceEffect; import mage.abilities.effects.keyword.InvestigateEffect; @@ -44,7 +44,7 @@ public final class DugganPrivateDetective extends CardImpl { // The Most Important Punch in History -- {1}{G}, {T}: Duggan deals damage equal to twice its power to another target creature. Activate only once. Ability ability = new ActivateOncePerGameActivatedAbility( Zone.BATTLEFIELD, - new DamageTargetEffect(new MultipliedValue(new SourcePermanentPowerCount(), 2)) + new DamageTargetEffect(new MultipliedValue(SourcePermanentPowerValue.NOT_NEGATIVE, 2)) .setText("{this} deals damage equal to twice its power to another target creature"), new ManaCostsImpl<>("{1}{G}"), TimingRule.INSTANT); diff --git a/Mage.Sets/src/mage/cards/d/DwarvenVigilantes.java b/Mage.Sets/src/mage/cards/d/DwarvenVigilantes.java index 78a7f422f32..12fe8579687 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenVigilantes.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenVigilantes.java @@ -1,11 +1,10 @@ - package mage.cards.d; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksAndIsNotBlockedTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.AssignNoCombatDamageSourceEffect; @@ -29,7 +28,7 @@ public final class DwarvenVigilantes extends CardImpl { this.toughness = new MageInt(2); // Whenever Dwarven Vigilantes attacks and isn't blocked, you may have it deal damage equal to its power to target creature. If you do, Dwarven Vigilantes assigns no combat damage this turn. - Effect effect = new DamageTargetEffect(new SourcePermanentPowerCount()); + Effect effect = new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE); effect.setText("it deal damage equal to its power to target creature"); Ability ability = new AttacksAndIsNotBlockedTriggeredAbility(effect, true); ability.addEffect(new AssignNoCombatDamageSourceEffect(Duration.EndOfTurn, true)); diff --git a/Mage.Sets/src/mage/cards/e/ElectrostaticPummeler.java b/Mage.Sets/src/mage/cards/e/ElectrostaticPummeler.java index c525892ebb2..934b9231a9f 100644 --- a/Mage.Sets/src/mage/cards/e/ElectrostaticPummeler.java +++ b/Mage.Sets/src/mage/cards/e/ElectrostaticPummeler.java @@ -1,12 +1,10 @@ - package mage.cards.e; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.PayEnergyCost; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect; import mage.cards.CardImpl; @@ -22,8 +20,6 @@ import java.util.UUID; */ public final class ElectrostaticPummeler extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public ElectrostaticPummeler(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}"); this.subtype.add(SubType.CONSTRUCT); @@ -35,7 +31,7 @@ public final class ElectrostaticPummeler extends CardImpl { // Pay {E}{E}{E}: Electrostatic Pummeler gets +X/+X until end of turn, where X is its power. this.addAbility(new SimpleActivatedAbility(new BoostSourceEffect( - xValue, xValue, Duration.EndOfTurn + SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn ).setText("{this} gets +X/+X until end of turn, where X is its power"), new PayEnergyCost(3))); } diff --git a/Mage.Sets/src/mage/cards/e/ElendaTheDuskRose.java b/Mage.Sets/src/mage/cards/e/ElendaTheDuskRose.java index 982575f9d51..19d0f7508bf 100644 --- a/Mage.Sets/src/mage/cards/e/ElendaTheDuskRose.java +++ b/Mage.Sets/src/mage/cards/e/ElendaTheDuskRose.java @@ -1,11 +1,9 @@ - package mage.cards.e; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.DiesCreatureTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.LifelinkAbility; @@ -17,6 +15,8 @@ import mage.constants.SuperType; import mage.counters.CounterType; import mage.game.permanent.token.IxalanVampireToken; +import java.util.UUID; + /** * * @author L_J @@ -38,7 +38,7 @@ public final class ElendaTheDuskRose extends CardImpl { this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, true)); // When Elenda dies, create X 1/1 white Vampire creature tokens with lifelink, where X is Elenda's power. - this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new IxalanVampireToken(), new SourcePermanentPowerCount()))); + this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new IxalanVampireToken(), SourcePermanentPowerValue.NOT_NEGATIVE))); } private ElendaTheDuskRose(final ElendaTheDuskRose card) { diff --git a/Mage.Sets/src/mage/cards/e/ElendasHierophant.java b/Mage.Sets/src/mage/cards/e/ElendasHierophant.java index 4c80c7b0d82..d4295b7979c 100644 --- a/Mage.Sets/src/mage/cards/e/ElendasHierophant.java +++ b/Mage.Sets/src/mage/cards/e/ElendasHierophant.java @@ -3,8 +3,7 @@ package mage.cards.e; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.GainLifeControllerTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; @@ -22,8 +21,6 @@ import java.util.UUID; */ public final class ElendasHierophant extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public ElendasHierophant(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}"); @@ -39,7 +36,7 @@ public final class ElendasHierophant extends CardImpl { this.addAbility(new GainLifeControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); // When Elenda's Hierophant dies, create X 1/1 white Vampire creature tokens with lifelink, where X is its power. - this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new IxalanVampireToken(), xValue) + this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new IxalanVampireToken(), SourcePermanentPowerValue.NOT_NEGATIVE) .setText("create X 1/1 white Vampire creature tokens with lifelink, where X is its power"))); } diff --git a/Mage.Sets/src/mage/cards/e/EmergentWoodwurm.java b/Mage.Sets/src/mage/cards/e/EmergentWoodwurm.java index 9f3893f3e3c..fb1b81d6d81 100644 --- a/Mage.Sets/src/mage/cards/e/EmergentWoodwurm.java +++ b/Mage.Sets/src/mage/cards/e/EmergentWoodwurm.java @@ -3,8 +3,7 @@ package mage.cards.e; import mage.MageInt; import mage.MageObject; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.abilities.keyword.BackupAbility; import mage.cards.Card; @@ -34,8 +33,6 @@ public final class EmergentWoodwurm extends CardImpl { filter.add(EmergentWoodwurmPredicate.instance); } - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public EmergentWoodwurm(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{G}"); @@ -49,7 +46,7 @@ public final class EmergentWoodwurm extends CardImpl { // Whenever this creature attacks, look at the top X cards of your library, where X is its power. You may put a permanent card with mana value X or less from among them onto the battlefield. Put the rest on the bottom of your library in a random order. backupAbility.addAbility(new AttacksTriggeredAbility(new LookLibraryAndPickControllerEffect( - xValue, 1, filter, PutCards.BATTLEFIELD, PutCards.BOTTOM_RANDOM + SourcePermanentPowerValue.NOT_NEGATIVE, 1, filter, PutCards.BATTLEFIELD, PutCards.BOTTOM_RANDOM )).setTriggerPhrase("Whenever this creature attacks, ")); } @@ -78,4 +75,4 @@ enum EmergentWoodwurmPredicate implements ObjectSourcePlayerPredicate { .map(i -> input.getObject().getManaValue() <= i) .orElse(false); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/f/FaerieBladecrafter.java b/Mage.Sets/src/mage/cards/f/FaerieBladecrafter.java index a770bf671f2..88063caad83 100644 --- a/Mage.Sets/src/mage/cards/f/FaerieBladecrafter.java +++ b/Mage.Sets/src/mage/cards/f/FaerieBladecrafter.java @@ -1,15 +1,10 @@ package mage.cards.f; -import java.util.UUID; import mage.MageInt; -import mage.constants.SubType; -import mage.counters.CounterType; -import mage.filter.common.FilterCreaturePermanent; import mage.abilities.Ability; import mage.abilities.common.DealCombatDamageControlledTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.LoseLifeOpponentsEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -17,6 +12,11 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; +import mage.counters.CounterType; +import mage.filter.common.FilterCreaturePermanent; + +import java.util.UUID; /** * @@ -25,7 +25,6 @@ import mage.constants.CardType; public final class FaerieBladecrafter extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.FAERIE, "Faeries"); - private static final DynamicValue count = new SourcePermanentPowerCount(); public FaerieBladecrafter(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); @@ -42,8 +41,8 @@ public final class FaerieBladecrafter extends CardImpl { this.addAbility(new DealCombatDamageControlledTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter)); // When Faerie Bladecrafter dies, each opponent loses X life and you gain X life, where X is its power. - Ability ability = new DiesSourceTriggeredAbility(new LoseLifeOpponentsEffect(count).setText("each opponent loses X life")); - ability.addEffect(new GainLifeEffect(count).setText("and you gain X life, where X is its power")); + Ability ability = new DiesSourceTriggeredAbility(new LoseLifeOpponentsEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("each opponent loses X life")); + ability.addEffect(new GainLifeEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("and you gain X life, where X is its power")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FeralAnimist.java b/Mage.Sets/src/mage/cards/f/FeralAnimist.java index 3a753ff7cd9..bca5b3aae15 100644 --- a/Mage.Sets/src/mage/cards/f/FeralAnimist.java +++ b/Mage.Sets/src/mage/cards/f/FeralAnimist.java @@ -1,20 +1,20 @@ - package mage.cards.f; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; +import java.util.UUID; + /** * * @author North @@ -31,7 +31,7 @@ public final class FeralAnimist extends CardImpl { // {3}: Feral Animist gets +X/+0 until end of turn, where X is its power. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new BoostSourceEffect(new SourcePermanentPowerCount(), StaticValue.get(0), Duration.EndOfTurn), + new BoostSourceEffect(SourcePermanentPowerValue.NOT_NEGATIVE, StaticValue.get(0), Duration.EndOfTurn), new GenericManaCost(3))); } diff --git a/Mage.Sets/src/mage/cards/f/FeralGhoul.java b/Mage.Sets/src/mage/cards/f/FeralGhoul.java index f5fe523d86d..75851d9d4ce 100644 --- a/Mage.Sets/src/mage/cards/f/FeralGhoul.java +++ b/Mage.Sets/src/mage/cards/f/FeralGhoul.java @@ -3,8 +3,7 @@ package mage.cards.f; import mage.MageInt; import mage.abilities.common.DiesCreatureTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.counter.AddCountersPlayersEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.MenaceAbility; @@ -23,8 +22,6 @@ import java.util.UUID; */ public final class FeralGhoul extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public FeralGhoul(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); @@ -44,7 +41,7 @@ public final class FeralGhoul extends CardImpl { // When Feral Ghoul dies, each opponent gets a number of rad counters equal to its power. this.addAbility(new DiesSourceTriggeredAbility( - new AddCountersPlayersEffect(CounterType.RAD.createInstance(), xValue, TargetController.OPPONENT) + new AddCountersPlayersEffect(CounterType.RAD.createInstance(), SourcePermanentPowerValue.NOT_NEGATIVE, TargetController.OPPONENT) .setText("each opponent gets a number of rad counters equal to its power") )); } diff --git a/Mage.Sets/src/mage/cards/f/FirebladeCharger.java b/Mage.Sets/src/mage/cards/f/FirebladeCharger.java index 627a670e1ad..238236a6fc8 100644 --- a/Mage.Sets/src/mage/cards/f/FirebladeCharger.java +++ b/Mage.Sets/src/mage/cards/f/FirebladeCharger.java @@ -2,11 +2,11 @@ package mage.cards.f; import mage.MageInt; import mage.abilities.Ability; +import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.EquippedSourceCondition; import mage.abilities.decorator.ConditionalContinuousEffect; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.keyword.HasteAbility; @@ -18,15 +18,12 @@ import mage.constants.SubType; import mage.target.common.TargetAnyTarget; import java.util.UUID; -import mage.abilities.common.DiesSourceTriggeredAbility; /** * @author TheElk801 */ public final class FirebladeCharger extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public FirebladeCharger(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}"); @@ -43,7 +40,7 @@ public final class FirebladeCharger extends CardImpl { // When Fireblade Charger dies, it deals damage equal to its power to any target. Ability ability = new DiesSourceTriggeredAbility( - new DamageTargetEffect(xValue).setText("it deals damage equal to its power to any target") + new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("it deals damage equal to its power to any target") ); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/f/FlameElemental.java b/Mage.Sets/src/mage/cards/f/FlameElemental.java index 50ecaa63bce..25b7e8d2a30 100644 --- a/Mage.Sets/src/mage/cards/f/FlameElemental.java +++ b/Mage.Sets/src/mage/cards/f/FlameElemental.java @@ -1,20 +1,21 @@ package mage.cards.f; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; -import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author TheElk801 @@ -29,7 +30,7 @@ public final class FlameElemental extends CardImpl { this.toughness = new MageInt(2); // {R}, {tap}, Sacrifice Flame Elemental: Flame Elemental deals damage equal to its power to target creature. - Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(new SourcePermanentPowerCount(false)) + Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("It deals damage equal to its power to target creature"), new ManaCostsImpl<>("{R}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); diff --git a/Mage.Sets/src/mage/cards/f/FlametongueYearling.java b/Mage.Sets/src/mage/cards/f/FlametongueYearling.java index e351dafe366..3d0dedf0fd6 100644 --- a/Mage.Sets/src/mage/cards/f/FlametongueYearling.java +++ b/Mage.Sets/src/mage/cards/f/FlametongueYearling.java @@ -4,10 +4,8 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.MultikickerCount; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.MultikickerAbility; @@ -25,8 +23,6 @@ import java.util.UUID; */ public final class FlametongueYearling extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public FlametongueYearling(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{R}"); @@ -43,7 +39,7 @@ public final class FlametongueYearling extends CardImpl { ), "with a +1/+1 counter on it for each time it was kicked")); // When Flametongue Yearling enters the battlefield, it deals damage equal to its power to target creature. - Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(xValue) + Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power to target creature")); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/f/FlamingTyrannosaurus.java b/Mage.Sets/src/mage/cards/f/FlamingTyrannosaurus.java index e8a234d531d..9a2291f89dc 100644 --- a/Mage.Sets/src/mage/cards/f/FlamingTyrannosaurus.java +++ b/Mage.Sets/src/mage/cards/f/FlamingTyrannosaurus.java @@ -4,7 +4,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -55,7 +55,7 @@ public final class FlamingTyrannosaurus extends CardImpl { // When Flaming Tyrannosaurus dies, it deals damage equal to its power to each opponent. this.addAbility(new DiesSourceTriggeredAbility( - new DamagePlayersEffect(new SourcePermanentPowerCount(), TargetController.OPPONENT) + new DamagePlayersEffect(SourcePermanentPowerValue.NOT_NEGATIVE, TargetController.OPPONENT) .setText("it deals damage equal to its power to each opponent") )); } diff --git a/Mage.Sets/src/mage/cards/g/GhituFireEater.java b/Mage.Sets/src/mage/cards/g/GhituFireEater.java index 05e2e35baec..834fcc1b62c 100644 --- a/Mage.Sets/src/mage/cards/g/GhituFireEater.java +++ b/Mage.Sets/src/mage/cards/g/GhituFireEater.java @@ -1,13 +1,11 @@ - package mage.cards.g; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -16,6 +14,8 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.target.common.TargetAnyTarget; +import java.util.UUID; + /** * * @author LoneFox @@ -31,7 +31,7 @@ public final class GhituFireEater extends CardImpl { this.toughness = new MageInt(2); // {T}, Sacrifice Ghitu Fire-Eater: Ghitu Fire-Eater deals damage equal to its power to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()) + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power to any target"), new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetAnyTarget()); diff --git a/Mage.Sets/src/mage/cards/g/GleefulArsonist.java b/Mage.Sets/src/mage/cards/g/GleefulArsonist.java index aad51332598..b19527f1156 100644 --- a/Mage.Sets/src/mage/cards/g/GleefulArsonist.java +++ b/Mage.Sets/src/mage/cards/g/GleefulArsonist.java @@ -2,8 +2,7 @@ package mage.cards.g; import mage.MageInt; import mage.abilities.common.SpellCastOpponentTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.UndyingAbility; import mage.cards.CardImpl; @@ -21,8 +20,6 @@ import java.util.UUID; */ public final class GleefulArsonist extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public GleefulArsonist(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); @@ -33,7 +30,7 @@ public final class GleefulArsonist extends CardImpl { // Whenever an opponent casts a noncreature spell, Gleeful Arsonist deals damage equal to its power to that player. this.addAbility(new SpellCastOpponentTriggeredAbility( - Zone.BATTLEFIELD, new DamageTargetEffect(xValue).setText("{this} deals damage equal to its power to that player"), + Zone.BATTLEFIELD, new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("{this} deals damage equal to its power to that player"), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false, SetTargetPointer.PLAYER )); diff --git a/Mage.Sets/src/mage/cards/g/GoblinFireleaper.java b/Mage.Sets/src/mage/cards/g/GoblinFireleaper.java index c22fd300805..51d168c1c5a 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinFireleaper.java +++ b/Mage.Sets/src/mage/cards/g/GoblinFireleaper.java @@ -5,8 +5,7 @@ import mage.abilities.Ability; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; @@ -23,8 +22,6 @@ import java.util.UUID; */ public final class GoblinFireleaper extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public GoblinFireleaper(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); @@ -39,7 +36,7 @@ public final class GoblinFireleaper extends CardImpl { )); // When Goblin Fireleaper dies, it deals damage equal to its power to target creature an opponent controls. - Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(xValue) + Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power to target creature an opponent controls")); ability.addTarget(new TargetOpponentsCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/g/GoldenTailTrainer.java b/Mage.Sets/src/mage/cards/g/GoldenTailTrainer.java index 852766ee755..dce9bf2e77f 100644 --- a/Mage.Sets/src/mage/cards/g/GoldenTailTrainer.java +++ b/Mage.Sets/src/mage/cards/g/GoldenTailTrainer.java @@ -1,21 +1,22 @@ package mage.cards.g; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.ModifiedPredicate; -import mage.cards.CardImpl; -import mage.cards.CardSetInfo; -import mage.constants.CardType; + +import java.util.UUID; /** * @@ -23,7 +24,6 @@ import mage.constants.CardType; */ public final class GoldenTailTrainer extends CardImpl { - private static final SourcePermanentPowerCount xValue = new SourcePermanentPowerCount(false); private static final FilterCard filter = new FilterCard(); private static final FilterCreaturePermanent modifiedFilter = new FilterCreaturePermanent( "modified creatures you control"); @@ -43,14 +43,14 @@ public final class GoldenTailTrainer extends CardImpl { // Aura and Equipment spells you cast cost {X} less to cast, where X is Golden-Tail Trainer's power. this.addAbility( - new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, xValue) + new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, SourcePermanentPowerValue.NOT_NEGATIVE) .setText( "Aura and Equipment spells you cast cost {X} less to cast, where X is {this}'s power"))); // Whenever Golden-Tail Trainer attacks, other modified creatures you control get +X/+X until end of turn, where X is Golden-Tail Trainer's power. - this.addAbility( - new AttacksTriggeredAbility( - new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, modifiedFilter, true))); + this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect( + SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, + Duration.EndOfTurn, modifiedFilter, true))); } private GoldenTailTrainer(final GoldenTailTrainer card) { diff --git a/Mage.Sets/src/mage/cards/g/GoldveinHydra.java b/Mage.Sets/src/mage/cards/g/GoldveinHydra.java index b3d30a3d62b..1d0911a27c1 100644 --- a/Mage.Sets/src/mage/cards/g/GoldveinHydra.java +++ b/Mage.Sets/src/mage/cards/g/GoldveinHydra.java @@ -3,8 +3,7 @@ package mage.cards.g; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.EntersBattlefieldAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.EntersBattlefieldWithXCountersEffect; import mage.abilities.keyword.HasteAbility; @@ -24,8 +23,6 @@ import java.util.UUID; */ public final class GoldveinHydra extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public GoldveinHydra(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{G}"); @@ -49,7 +46,7 @@ public final class GoldveinHydra extends CardImpl { // When Goldvein Hydra dies, create a number of tapped Treasure tokens equal to its power. this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect( - new TreasureToken(), xValue, true, false + new TreasureToken(), SourcePermanentPowerValue.NOT_NEGATIVE, true, false ).setText("create a number of tapped Treasure tokens equal to its power"))); } diff --git a/Mage.Sets/src/mage/cards/g/GregorShrewdMagistrate.java b/Mage.Sets/src/mage/cards/g/GregorShrewdMagistrate.java index fa6fb2e13a0..c792fd59258 100644 --- a/Mage.Sets/src/mage/cards/g/GregorShrewdMagistrate.java +++ b/Mage.Sets/src/mage/cards/g/GregorShrewdMagistrate.java @@ -2,8 +2,7 @@ package mage.cards.g; import mage.MageInt; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.keyword.SkulkAbility; import mage.cards.CardImpl; @@ -19,8 +18,6 @@ import java.util.UUID; */ public final class GregorShrewdMagistrate extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public GregorShrewdMagistrate(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}"); @@ -35,7 +32,7 @@ public final class GregorShrewdMagistrate extends CardImpl { // Whenever Glenn deals combat damage to a player, draw cards equal to his power. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility( - new DrawCardSourceControllerEffect(xValue).setText("draw cards equal to its power"), false + new DrawCardSourceControllerEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("draw cards equal to its power"), false )); } diff --git a/Mage.Sets/src/mage/cards/g/Gristleback.java b/Mage.Sets/src/mage/cards/g/Gristleback.java index 27f5fc59105..ad91569035f 100644 --- a/Mage.Sets/src/mage/cards/g/Gristleback.java +++ b/Mage.Sets/src/mage/cards/g/Gristleback.java @@ -1,11 +1,9 @@ - package mage.cards.g; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.keyword.BloodthirstAbility; import mage.cards.CardImpl; @@ -14,6 +12,8 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; +import java.util.UUID; + /** * * @author escplan9 (Derek Monturo - dmontur1 at gmail dot com) @@ -32,7 +32,7 @@ public final class Gristleback extends CardImpl { // Sacrifice Gristleback: You gain life equal to Gristleback's power. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new GainLifeEffect(new SourcePermanentPowerCount()).setText("You gain life equal to {this}'s power"), + new GainLifeEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("You gain life equal to {this}'s power"), new SacrificeSourceCost())); } @@ -44,4 +44,4 @@ public final class Gristleback extends CardImpl { public Gristleback copy() { return new Gristleback(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/g/GruesomeSlaughter.java b/Mage.Sets/src/mage/cards/g/GruesomeSlaughter.java index 7eee9580146..966d42a469a 100644 --- a/Mage.Sets/src/mage/cards/g/GruesomeSlaughter.java +++ b/Mage.Sets/src/mage/cards/g/GruesomeSlaughter.java @@ -1,11 +1,9 @@ - package mage.cards.g; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; @@ -18,6 +16,8 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorlessPredicate; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author fireshoes @@ -34,7 +34,7 @@ public final class GruesomeSlaughter extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{6}"); // Until end of turn, colorless creatures you control gain "{T}: This creature deals damage equal to its power to target creature." - Effect effect = new DamageTargetEffect(new SourcePermanentPowerCount()); + Effect effect = new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE); effect.setText("{this} deals damage equal to its power to target creature."); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/g/GruffTriplets.java b/Mage.Sets/src/mage/cards/g/GruffTriplets.java index d724e234aa7..3cc9396f980 100644 --- a/Mage.Sets/src/mage/cards/g/GruffTriplets.java +++ b/Mage.Sets/src/mage/cards/g/GruffTriplets.java @@ -5,7 +5,7 @@ import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.SourceMatchesFilterCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.CreateTokenCopySourceEffect; import mage.abilities.effects.common.counter.AddCountersAllEffect; import mage.abilities.keyword.TrampleAbility; @@ -56,7 +56,7 @@ public final class GruffTriplets extends CardImpl { this.addAbility(new DiesSourceTriggeredAbility( new AddCountersAllEffect( CounterType.P1P1.createInstance(), - new SourcePermanentPowerCount(), + SourcePermanentPowerValue.NOT_NEGATIVE, filterNamedGruffTriplets ).setText("put a number of +1/+1 counters equal to its power on each creature you control named Gruff Triplets.") )); diff --git a/Mage.Sets/src/mage/cards/g/GrunnTheLonelyKing.java b/Mage.Sets/src/mage/cards/g/GrunnTheLonelyKing.java index 067753239f2..c7e7e1e80f0 100644 --- a/Mage.Sets/src/mage/cards/g/GrunnTheLonelyKing.java +++ b/Mage.Sets/src/mage/cards/g/GrunnTheLonelyKing.java @@ -1,12 +1,10 @@ package mage.cards.g; -import java.util.UUID; - import mage.MageInt; import mage.abilities.common.AttacksAloneSourceTriggeredAbility; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.common.KickedCondition; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BoostSourceEffect; @@ -14,12 +12,16 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.KickerAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.counters.CounterType; +import java.util.UUID; + /** * @author JRHerlehy - * Created on 4/5/18. */ public final class GrunnTheLonelyKing extends CardImpl { @@ -31,16 +33,15 @@ public final class GrunnTheLonelyKing extends CardImpl { this.power = new MageInt(5); this.toughness = new MageInt(5); - //Kicker {3} (You may pay an additional {3} as you cast this spell.) + // Kicker {3} (You may pay an additional {3} as you cast this spell.) this.addAbility(new KickerAbility("{3}")); - //If Grunn, the Lonely King was kicked, it enters with five +1/+1 counters on it. + // If Grunn, the Lonely King was kicked, it enters with five +1/+1 counters on it. this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(5)), KickedCondition.ONCE, "If {this} was kicked, it enters with five +1/+1 counters on it.", "")); - //Whenever Grunn attacks alone, double its power and toughness until end of turn. - SourcePermanentPowerCount power = new SourcePermanentPowerCount(); - Effect effect = new BoostSourceEffect(power, SourcePermanentToughnessValue.getInstance(), Duration.EndOfTurn); + // Whenever Grunn attacks alone, double its power and toughness until end of turn. + Effect effect = new BoostSourceEffect(SourcePermanentPowerValue.ALLOW_NEGATIVE, SourcePermanentToughnessValue.instance, Duration.EndOfTurn); effect.setText("double its power and toughness until end of turn"); this.addAbility(new AttacksAloneSourceTriggeredAbility(effect)); } diff --git a/Mage.Sets/src/mage/cards/g/GruulBeastmaster.java b/Mage.Sets/src/mage/cards/g/GruulBeastmaster.java index 6baeb83fd3b..1ae6f3dff76 100644 --- a/Mage.Sets/src/mage/cards/g/GruulBeastmaster.java +++ b/Mage.Sets/src/mage/cards/g/GruulBeastmaster.java @@ -3,8 +3,7 @@ package mage.cards.g; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.keyword.RiotAbility; @@ -23,8 +22,6 @@ import java.util.UUID; */ public final class GruulBeastmaster extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public GruulBeastmaster(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}"); this.subtype.add(SubType.HUMAN, SubType.SHAMAN); @@ -36,7 +33,7 @@ public final class GruulBeastmaster extends CardImpl { // Whenever Gruul Beastmaster attacks, another target creature you control gets +X/+0 until end of turn, where X is Gruul Beastmaster's power. Ability ability = new AttacksTriggeredAbility(new BoostTargetEffect( - xValue, StaticValue.get(0), Duration.EndOfTurn), false); + SourcePermanentPowerValue.NOT_NEGATIVE, StaticValue.get(0), Duration.EndOfTurn), false); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE_YOU_CONTROL)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HalanaAndAlenaPartners.java b/Mage.Sets/src/mage/cards/h/HalanaAndAlenaPartners.java index 67088d8e007..8a2c2c70b9f 100644 --- a/Mage.Sets/src/mage/cards/h/HalanaAndAlenaPartners.java +++ b/Mage.Sets/src/mage/cards/h/HalanaAndAlenaPartners.java @@ -3,8 +3,7 @@ package mage.cards.h; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfCombatTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.keyword.FirstStrikeAbility; @@ -24,8 +23,6 @@ import java.util.UUID; */ public final class HalanaAndAlenaPartners extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public HalanaAndAlenaPartners(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{G}"); @@ -43,7 +40,7 @@ public final class HalanaAndAlenaPartners extends CardImpl { // At the beginning of combat on your turn, put X +1/+1 counters on another target creature you control, where X is Halana and Alena's power. That creature gains haste until end of turn. Ability ability = new BeginningOfCombatTriggeredAbility( - new AddCountersTargetEffect(CounterType.P1P1.createInstance(0), xValue) + new AddCountersTargetEffect(CounterType.P1P1.createInstance(0), SourcePermanentPowerValue.NOT_NEGATIVE) .setText("put X +1/+1 counters on another target creature you control, where X is {this}'s power"), TargetController.YOU, false ); diff --git a/Mage.Sets/src/mage/cards/h/HardyOutlander.java b/Mage.Sets/src/mage/cards/h/HardyOutlander.java index 1c0a8680580..631f4c3d91b 100644 --- a/Mage.Sets/src/mage/cards/h/HardyOutlander.java +++ b/Mage.Sets/src/mage/cards/h/HardyOutlander.java @@ -3,8 +3,7 @@ package mage.cards.h; import mage.abilities.Ability; import mage.abilities.common.AttacksOpponentWithMostLifeTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.cards.CardImpl; @@ -23,8 +22,6 @@ import java.util.UUID; */ public final class HardyOutlander extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public HardyOutlander(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}"); @@ -33,7 +30,7 @@ public final class HardyOutlander extends CardImpl { // Commander creatures you own have "Whenever this creature attacks a player, if no opponent has more life than that player, another target creature you control gets +X/+X until end of turn, where X is this creature's power." Ability ability = new AttacksOpponentWithMostLifeTriggeredAbility(new BoostTargetEffect( - xValue, xValue, Duration.EndOfTurn + SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn ).setText("another target creature you control gets +X/+X until end of turn, where X is this creature's power"), false); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)); this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect( diff --git a/Mage.Sets/src/mage/cards/h/Hateflayer.java b/Mage.Sets/src/mage/cards/h/Hateflayer.java index 1d242256f23..e05765c529d 100644 --- a/Mage.Sets/src/mage/cards/h/Hateflayer.java +++ b/Mage.Sets/src/mage/cards/h/Hateflayer.java @@ -1,13 +1,11 @@ - package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.UntapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.WitherAbility; import mage.cards.CardImpl; @@ -17,6 +15,8 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.target.common.TargetAnyTarget; +import java.util.UUID; + /** * * @author jeffwadsworth @@ -34,7 +34,7 @@ public final class Hateflayer extends CardImpl { this.addAbility(WitherAbility.getInstance()); // {2}{R}, {untap}: Hateflayer deals damage equal to its power to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()) + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("{this} deals damage equal to its power to any target"), new ManaCostsImpl<>("{2}{R}")); ability.addCost(new UntapSourceCost()); ability.addTarget(new TargetAnyTarget()); diff --git a/Mage.Sets/src/mage/cards/h/HeartfireHero.java b/Mage.Sets/src/mage/cards/h/HeartfireHero.java index 6e79fb11c6e..51bf5c2ec6d 100644 --- a/Mage.Sets/src/mage/cards/h/HeartfireHero.java +++ b/Mage.Sets/src/mage/cards/h/HeartfireHero.java @@ -3,8 +3,7 @@ package mage.cards.h; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.ValiantTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; @@ -21,8 +20,6 @@ import java.util.UUID; */ public final class HeartfireHero extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public HeartfireHero(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}"); @@ -36,7 +33,7 @@ public final class HeartfireHero extends CardImpl { .setText("put a +1/+1 counter on it"))); // When Heartfire Hero dies, it deals damage equal to its power to each opponent. - this.addAbility(new DiesSourceTriggeredAbility(new DamagePlayersEffect(xValue, TargetController.OPPONENT) + this.addAbility(new DiesSourceTriggeredAbility(new DamagePlayersEffect(SourcePermanentPowerValue.NOT_NEGATIVE, TargetController.OPPONENT) .setText("it deals damage equal to its power to each opponent"))); } diff --git a/Mage.Sets/src/mage/cards/h/HeartfireImmolator.java b/Mage.Sets/src/mage/cards/h/HeartfireImmolator.java index e5382836b0a..75cbcd69832 100644 --- a/Mage.Sets/src/mage/cards/h/HeartfireImmolator.java +++ b/Mage.Sets/src/mage/cards/h/HeartfireImmolator.java @@ -5,8 +5,7 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.ProwessAbility; import mage.cards.CardImpl; @@ -22,8 +21,6 @@ import java.util.UUID; */ public final class HeartfireImmolator extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public HeartfireImmolator(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); @@ -37,7 +34,7 @@ public final class HeartfireImmolator extends CardImpl { // {R}, Sacrifice Heartfire Immolator: It deals damage equal to its power to target creature or planeswalker. Ability ability = new SimpleActivatedAbility( - new DamageTargetEffect(xValue) + new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power to target creature or planeswalker"), new ManaCostsImpl<>("{R}") ); diff --git a/Mage.Sets/src/mage/cards/h/HelgaSkittishSeer.java b/Mage.Sets/src/mage/cards/h/HelgaSkittishSeer.java index e87dec75870..17aa6d9f8f1 100644 --- a/Mage.Sets/src/mage/cards/h/HelgaSkittishSeer.java +++ b/Mage.Sets/src/mage/cards/h/HelgaSkittishSeer.java @@ -9,7 +9,7 @@ import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -61,7 +61,7 @@ public class HelgaSkittishSeer extends CardImpl { this.addAbility( new SimpleManaAbility( Zone.BATTLEFIELD, - new HelgaSkittishSeerManaEffect(new SourcePermanentPowerCount()), + new HelgaSkittishSeerManaEffect(SourcePermanentPowerValue.NOT_NEGATIVE), new TapSourceCost() ) ); diff --git a/Mage.Sets/src/mage/cards/h/HellholeFlailer.java b/Mage.Sets/src/mage/cards/h/HellholeFlailer.java index 2ab2b02f262..9472e19cb54 100644 --- a/Mage.Sets/src/mage/cards/h/HellholeFlailer.java +++ b/Mage.Sets/src/mage/cards/h/HellholeFlailer.java @@ -1,13 +1,12 @@ package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.UnleashAbility; import mage.cards.CardImpl; @@ -17,6 +16,8 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.target.common.TargetPlayerOrPlaneswalker; +import java.util.UUID; + /** * * @author LevelX2 @@ -35,7 +36,7 @@ public final class HellholeFlailer extends CardImpl { this.addAbility(new UnleashAbility()); // {2}{B}{R}, Sacrifice Hellhole Flailer: Hellhole Flailer deals damage equal to its power to target player or planeswalker. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()) + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("{this} deals damage equal to its power to target player or planeswalker"), new ManaCostsImpl<>("{2}{B}{R}")); ability.addTarget(new TargetPlayerOrPlaneswalker()); ability.addCost(new SacrificeSourceCost()); diff --git a/Mage.Sets/src/mage/cards/h/HeroesBane.java b/Mage.Sets/src/mage/cards/h/HeroesBane.java index 1ee3ac631a4..44204c0e184 100644 --- a/Mage.Sets/src/mage/cards/h/HeroesBane.java +++ b/Mage.Sets/src/mage/cards/h/HeroesBane.java @@ -1,12 +1,11 @@ package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; @@ -16,6 +15,8 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; +import java.util.UUID; + /** * * @author LevelX2 @@ -33,7 +34,7 @@ public final class HeroesBane extends CardImpl { this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(4), true), "with four +1/+1 counters on it")); // {2}{G}{G}: Put X +1/+1 counters on Heroe's Bane, where X is its power. - Effect effect = new AddCountersSourceEffect(CounterType.P1P1.createInstance(0), new SourcePermanentPowerCount(), true); + Effect effect = new AddCountersSourceEffect(CounterType.P1P1.createInstance(0), SourcePermanentPowerValue.NOT_NEGATIVE, true); effect.setText("Put X +1/+1 counters on {this}, where X is its power"); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{2}{G}{G}"))); } diff --git a/Mage.Sets/src/mage/cards/h/HeronbladeElite.java b/Mage.Sets/src/mage/cards/h/HeronbladeElite.java index 9b2cfe93a82..5c7c091c975 100644 --- a/Mage.Sets/src/mage/cards/h/HeronbladeElite.java +++ b/Mage.Sets/src/mage/cards/h/HeronbladeElite.java @@ -4,8 +4,7 @@ import mage.MageInt; import mage.Mana; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.VigilanceAbility; import mage.abilities.mana.DynamicManaAbility; @@ -31,8 +30,6 @@ public final class HeronbladeElite extends CardImpl { filter.add(AnotherPredicate.instance); } - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public HeronbladeElite(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); @@ -51,7 +48,7 @@ public final class HeronbladeElite extends CardImpl { // {T}: Add X mana of any one color, where X is Heronblade Elite's power. this.addAbility(new DynamicManaAbility( - Mana.AnyMana(1), xValue, new TapSourceCost(), "Add X mana " + Mana.AnyMana(1), SourcePermanentPowerValue.NOT_NEGATIVE, new TapSourceCost(), "Add X mana " + "of any one color, where X is {this}'s power", true )); } diff --git a/Mage.Sets/src/mage/cards/i/IanTheReckless.java b/Mage.Sets/src/mage/cards/i/IanTheReckless.java index e1bac548138..7375f219b0f 100644 --- a/Mage.Sets/src/mage/cards/i/IanTheReckless.java +++ b/Mage.Sets/src/mage/cards/i/IanTheReckless.java @@ -6,7 +6,7 @@ import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.common.SourceMatchesFilterCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageControllerEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; @@ -44,8 +44,8 @@ public final class IanTheReckless extends CardImpl { // Whenever Ian the Reckless attacks, if it's modified, you may have it deal damage equal to its power to you and any target. TriggeredAbility ability = new AttacksTriggeredAbility(new DamageControllerEffect( - new SourcePermanentPowerCount()).setText("have it deal damage equal to its power to you"), true); - ability.addEffect(new DamageTargetEffect(new SourcePermanentPowerCount()).setText("and any target")); + SourcePermanentPowerValue.NOT_NEGATIVE).setText("have it deal damage equal to its power to you"), true); + ability.addEffect(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("and any target")); ability.addTarget(new TargetAnyTarget()); this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, condition, "Whenever {this} attacks, if it's modified, you may have it deal damage equal to its power to you and any target.")); diff --git a/Mage.Sets/src/mage/cards/i/ImperiousMindbreaker.java b/Mage.Sets/src/mage/cards/i/ImperiousMindbreaker.java index b7413c01308..81fc3effdf4 100644 --- a/Mage.Sets/src/mage/cards/i/ImperiousMindbreaker.java +++ b/Mage.Sets/src/mage/cards/i/ImperiousMindbreaker.java @@ -34,7 +34,7 @@ public final class ImperiousMindbreaker extends CardImpl { // As long as Imperious Mindbreaker is paired with another creature, each of those creatures has "Whenever this creature attacks, each opponent mills cards equal to its toughness." this.addAbility(new SimpleStaticAbility(new GainAbilityPairedEffect( new AttacksTriggeredAbility(new MillCardsEachPlayerEffect( - SourcePermanentToughnessValue.getInstance(), TargetController.OPPONENT + SourcePermanentToughnessValue.instance, TargetController.OPPONENT ), false, "Whenever this creature attacks, each opponent mills cards equal to its toughness."), "As long as {this} is paired with another creature, each of those creatures has " + "\"Whenever this creature attacks, each opponent mills cards equal to its toughness.\"" diff --git a/Mage.Sets/src/mage/cards/i/InfernalPhantom.java b/Mage.Sets/src/mage/cards/i/InfernalPhantom.java index 0f4328055c0..42115f51474 100644 --- a/Mage.Sets/src/mage/cards/i/InfernalPhantom.java +++ b/Mage.Sets/src/mage/cards/i/InfernalPhantom.java @@ -4,8 +4,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.abilityword.EerieAbility; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; @@ -22,8 +21,6 @@ import java.util.UUID; */ public final class InfernalPhantom extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public InfernalPhantom(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); @@ -35,7 +32,7 @@ public final class InfernalPhantom extends CardImpl { this.addAbility(new EerieAbility(new BoostSourceEffect(2, 0, Duration.EndOfTurn))); // When Infernal Phantom dies, it deals damage equal to its power to any target. - Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(xValue, "it") + Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE, "it") .setText("it deals damage equal to its power to any target")); ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/i/IronCrawCrusher.java b/Mage.Sets/src/mage/cards/i/IronCrawCrusher.java index 6311cae5461..4c87937495d 100644 --- a/Mage.Sets/src/mage/cards/i/IronCrawCrusher.java +++ b/Mage.Sets/src/mage/cards/i/IronCrawCrusher.java @@ -3,8 +3,7 @@ package mage.cards.i; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.keyword.PrototypeAbility; @@ -22,8 +21,6 @@ import java.util.UUID; */ public final class IronCrawCrusher extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public IronCrawCrusher(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}"); @@ -36,7 +33,7 @@ public final class IronCrawCrusher extends CardImpl { // Whenever Iron-Craw Crusher attacks, target attacking creature gets +X/+0 until end of turn, where X is Iron-Craw Crusher's power. Ability ability = new AttacksTriggeredAbility( - new BoostTargetEffect(xValue, StaticValue.get(0), Duration.EndOfTurn) + new BoostTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE, StaticValue.get(0), Duration.EndOfTurn) ); ability.addTarget(new TargetAttackingCreature()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/i/IronMastiff.java b/Mage.Sets/src/mage/cards/i/IronMastiff.java index 75a41b5ac77..20e70451874 100644 --- a/Mage.Sets/src/mage/cards/i/IronMastiff.java +++ b/Mage.Sets/src/mage/cards/i/IronMastiff.java @@ -3,8 +3,7 @@ package mage.cards.i; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageControllerEffect; import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -52,16 +51,14 @@ public final class IronMastiff extends CardImpl { class IronMastiffEffect extends RollDieWithResultTableEffect { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - IronMastiffEffect() { super(20, "roll a d20 for each player being attacked and ignore all but the highest roll"); - this.addTableEntry(1, 9, new DamageControllerEffect(xValue) + this.addTableEntry(1, 9, new DamageControllerEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("{this} deals damage equal to its power to you")); - this.addTableEntry(10, 19, new DamageTargetEffect(xValue) + this.addTableEntry(10, 19, new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("{this} deals damage equal to its power to defending player")); this.addTableEntry(20, 20, new DamagePlayersEffect( - Outcome.Damage, xValue, TargetController.OPPONENT + Outcome.Damage, SourcePermanentPowerValue.NOT_NEGATIVE, TargetController.OPPONENT ).setText("{this} deals damage equal to its power to each opponent")); } diff --git a/Mage.Sets/src/mage/cards/j/JackedRabbit.java b/Mage.Sets/src/mage/cards/j/JackedRabbit.java index 1087718c1f7..0d42c05c5c2 100644 --- a/Mage.Sets/src/mage/cards/j/JackedRabbit.java +++ b/Mage.Sets/src/mage/cards/j/JackedRabbit.java @@ -2,8 +2,7 @@ package mage.cards.j; import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.RavenousAbility; import mage.cards.CardImpl; @@ -19,8 +18,6 @@ import java.util.UUID; */ public final class JackedRabbit extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public JackedRabbit(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{1}{W}"); @@ -33,7 +30,7 @@ public final class JackedRabbit extends CardImpl { this.addAbility(new RavenousAbility()); // Whenever Jacked Rabbit attacks, create a number of 1/1 white Rabbit creature tokens equal to Jacked Rabbit's power. - this.addAbility(new AttacksTriggeredAbility(new CreateTokenEffect(new RabbitToken(), xValue))); + this.addAbility(new AttacksTriggeredAbility(new CreateTokenEffect(new RabbitToken(), SourcePermanentPowerValue.NOT_NEGATIVE))); } private JackedRabbit(final JackedRabbit card) { diff --git a/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java b/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java index 24900916bfc..ca8196cec44 100644 --- a/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java +++ b/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java @@ -1,14 +1,12 @@ - package mage.cards.j; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.SetBasePowerToughnessSourceEffect; import mage.abilities.keyword.FlyingAbility; @@ -22,6 +20,8 @@ import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author Plopman @@ -46,7 +46,7 @@ public final class JaggedScarArchers extends CardImpl { // Jagged-Scar Archers's power and toughness are each equal to the number of Elves you control. this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(controlledElvesFilter)))); // {tap}: Jagged-Scar Archers deals damage equal to its power to target creature with flying. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()).setText("{this} deals damage equal to its power to target creature with flying"), new TapSourceCost()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("{this} deals damage equal to its power to target creature with flying"), new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent(flyingCreatureFilter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/j/JyotiMoagAncient.java b/Mage.Sets/src/mage/cards/j/JyotiMoagAncient.java index e41c1f854d3..532e5ca548f 100644 --- a/Mage.Sets/src/mage/cards/j/JyotiMoagAncient.java +++ b/Mage.Sets/src/mage/cards/j/JyotiMoagAncient.java @@ -1,22 +1,19 @@ package mage.cards.j; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.BeginningOfCombatTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.dynamicvalue.common.CommanderCastFromCommandZoneValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; -import mage.constants.SubType; -import mage.constants.SuperType; -import mage.constants.TargetController; -import mage.game.permanent.token.ForestDryadToken; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; +import mage.game.permanent.token.ForestDryadToken; + +import java.util.UUID; /** * @@ -26,8 +23,6 @@ public final class JyotiMoagAncient extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("land creatures"); - private static final SourcePermanentPowerCount xValue = new SourcePermanentPowerCount(); - static { filter.add(CardType.LAND.getPredicate()); @@ -50,7 +45,7 @@ public final class JyotiMoagAncient extends CardImpl { // At the beginning of each combat, land creatures you control get +X/+X until end of turn, where X is Jyoti's power. this.addAbility(new BeginningOfCombatTriggeredAbility( - new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, filter, false), + new BoostControlledEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn, filter, false), TargetController.ANY, false)); } @@ -62,4 +57,4 @@ public final class JyotiMoagAncient extends CardImpl { public JyotiMoagAncient copy() { return new JyotiMoagAncient(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/k/KamiOfWhisperedHopes.java b/Mage.Sets/src/mage/cards/k/KamiOfWhisperedHopes.java index 9aaa50d94a5..283ad1e41da 100644 --- a/Mage.Sets/src/mage/cards/k/KamiOfWhisperedHopes.java +++ b/Mage.Sets/src/mage/cards/k/KamiOfWhisperedHopes.java @@ -4,8 +4,7 @@ import mage.MageInt; import mage.Mana; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.replacement.ModifyCountersAddedEffect; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; @@ -22,8 +21,6 @@ import java.util.UUID; */ public final class KamiOfWhisperedHopes extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public KamiOfWhisperedHopes(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); @@ -38,7 +35,7 @@ public final class KamiOfWhisperedHopes extends CardImpl { // {T}: Add X mana of any one color, where X is Kami of Whispered Hopes's power. this.addAbility(new DynamicManaAbility( - Mana.AnyMana(1), xValue, new TapSourceCost(), "Add X mana " + Mana.AnyMana(1), SourcePermanentPowerValue.NOT_NEGATIVE, new TapSourceCost(), "Add X mana " + "of any one color, where X is {this}'s power", true )); } diff --git a/Mage.Sets/src/mage/cards/l/LaccolithGrunt.java b/Mage.Sets/src/mage/cards/l/LaccolithGrunt.java index d24185f74d4..1b7a5f0577b 100644 --- a/Mage.Sets/src/mage/cards/l/LaccolithGrunt.java +++ b/Mage.Sets/src/mage/cards/l/LaccolithGrunt.java @@ -1,19 +1,20 @@ package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BecomesBlockedSourceTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.AssignNoCombatDamageSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author awjackson @@ -27,7 +28,7 @@ public final class LaccolithGrunt extends CardImpl { this.toughness = new MageInt(2); // Whenever Laccolith Grunt becomes blocked, you may have it deal damage equal to its power to target creature. If you do, Laccolith Grunt assigns no combat damage this turn. - Ability ability = new BecomesBlockedSourceTriggeredAbility(new DamageTargetEffect(new SourcePermanentPowerCount()).setText("it deal damage equal to its power to target creature"), true); + Ability ability = new BecomesBlockedSourceTriggeredAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("it deal damage equal to its power to target creature"), true); ability.addEffect(new AssignNoCombatDamageSourceEffect(Duration.EndOfTurn, true)); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/l/LaccolithTitan.java b/Mage.Sets/src/mage/cards/l/LaccolithTitan.java index 1f5497b55b8..e3c827157bb 100644 --- a/Mage.Sets/src/mage/cards/l/LaccolithTitan.java +++ b/Mage.Sets/src/mage/cards/l/LaccolithTitan.java @@ -1,19 +1,20 @@ package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BecomesBlockedSourceTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.AssignNoCombatDamageSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author awjackson @@ -27,7 +28,7 @@ public final class LaccolithTitan extends CardImpl { this.toughness = new MageInt(6); // Whenever Laccolith Titan becomes blocked, you may have it deal damage equal to its power to target creature. If you do, Laccolith Grunt assigns no combat damage this turn. - Ability ability = new BecomesBlockedSourceTriggeredAbility(new DamageTargetEffect(new SourcePermanentPowerCount()).setText("it deal damage equal to its power to target creature"), true); + Ability ability = new BecomesBlockedSourceTriggeredAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("it deal damage equal to its power to target creature"), true); ability.addEffect(new AssignNoCombatDamageSourceEffect(Duration.EndOfTurn, true)); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/l/LaccolithWarrior.java b/Mage.Sets/src/mage/cards/l/LaccolithWarrior.java index 89e33c1bf6b..6ecd7c3331d 100644 --- a/Mage.Sets/src/mage/cards/l/LaccolithWarrior.java +++ b/Mage.Sets/src/mage/cards/l/LaccolithWarrior.java @@ -1,19 +1,20 @@ package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BecomesBlockedSourceTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.AssignNoCombatDamageSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author awjackson @@ -28,7 +29,7 @@ public final class LaccolithWarrior extends CardImpl { this.toughness = new MageInt(3); // Whenever Laccolith Warrior becomes blocked, you may have it deal damage equal to its power to target creature. If you do, Laccolith Grunt assigns no combat damage this turn. - Ability ability = new BecomesBlockedSourceTriggeredAbility(new DamageTargetEffect(new SourcePermanentPowerCount()).setText("it deal damage equal to its power to target creature"), true); + Ability ability = new BecomesBlockedSourceTriggeredAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("it deal damage equal to its power to target creature"), true); ability.addEffect(new AssignNoCombatDamageSourceEffect(Duration.EndOfTurn, true)); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/l/LaccolithWhelp.java b/Mage.Sets/src/mage/cards/l/LaccolithWhelp.java index e9db0575b37..1dfad8f7379 100644 --- a/Mage.Sets/src/mage/cards/l/LaccolithWhelp.java +++ b/Mage.Sets/src/mage/cards/l/LaccolithWhelp.java @@ -1,19 +1,20 @@ package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BecomesBlockedSourceTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.AssignNoCombatDamageSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author awjackson @@ -27,7 +28,7 @@ public final class LaccolithWhelp extends CardImpl { this.toughness = new MageInt(1); // Whenever Laccolith Whelp becomes blocked, you may have it deal damage equal to its power to target creature. If you do, Laccolith Grunt assigns no combat damage this turn. - Ability ability = new BecomesBlockedSourceTriggeredAbility(new DamageTargetEffect(new SourcePermanentPowerCount()).setText("it deal damage equal to its power to target creature"), true); + Ability ability = new BecomesBlockedSourceTriggeredAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("it deal damage equal to its power to target creature"), true); ability.addEffect(new AssignNoCombatDamageSourceEffect(Duration.EndOfTurn, true)); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/l/LeafkinAvenger.java b/Mage.Sets/src/mage/cards/l/LeafkinAvenger.java index e44672a3e01..534f1376e3d 100644 --- a/Mage.Sets/src/mage/cards/l/LeafkinAvenger.java +++ b/Mage.Sets/src/mage/cards/l/LeafkinAvenger.java @@ -7,7 +7,7 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.hint.ValueHint; import mage.abilities.mana.DynamicManaAbility; @@ -37,7 +37,6 @@ public final class LeafkinAvenger extends CardImpl { } private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter); - private static final DynamicValue xValue2 = new SourcePermanentPowerCount(false); public LeafkinAvenger(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{G}"); @@ -54,7 +53,7 @@ public final class LeafkinAvenger extends CardImpl { // {7}{R}: Leafkin Avenger deals damage equal to its power to target player or planeswalker. Ability ability = new SimpleActivatedAbility( - new DamageTargetEffect(xValue2) + new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("{this} deals damage equal to its power to target player or planeswalker"), new ManaCostsImpl<>("{7}{R}") ); diff --git a/Mage.Sets/src/mage/cards/l/LegolasMasterArcher.java b/Mage.Sets/src/mage/cards/l/LegolasMasterArcher.java index be8dc262888..1ef9a02e967 100644 --- a/Mage.Sets/src/mage/cards/l/LegolasMasterArcher.java +++ b/Mage.Sets/src/mage/cards/l/LegolasMasterArcher.java @@ -3,8 +3,7 @@ package mage.cards.l; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SpellCastControllerTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.HeroicAbility; @@ -27,7 +26,6 @@ import java.util.UUID; */ public final class LegolasMasterArcher extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); private static final FilterSpell filter = new FilterSpell("a spell that targets a creature you don't control"); static { @@ -50,7 +48,7 @@ public final class LegolasMasterArcher extends CardImpl { this.addAbility(new HeroicAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())).setAbilityWord(null)); // Whenever you cast a spell that targets a creature you don't control, Legolas deals damage equal to its power to up to one target creature. - Ability ability = new SpellCastControllerTriggeredAbility(new DamageTargetEffect(xValue) + Ability ability = new SpellCastControllerTriggeredAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("{this} deals damage equal to its power to up to one target creature"), filter, false); ability.addTarget(new TargetCreaturePermanent(0, 1)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/l/LegolassQuickReflexes.java b/Mage.Sets/src/mage/cards/l/LegolassQuickReflexes.java index ebd6ceea46e..493a1939dcd 100644 --- a/Mage.Sets/src/mage/cards/l/LegolassQuickReflexes.java +++ b/Mage.Sets/src/mage/cards/l/LegolassQuickReflexes.java @@ -2,8 +2,7 @@ package mage.cards.l; import mage.abilities.TriggeredAbility; import mage.abilities.common.BecomesTappedSourceTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; @@ -24,8 +23,6 @@ import java.util.UUID; */ public final class LegolassQuickReflexes extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public LegolassQuickReflexes(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}"); @@ -43,7 +40,7 @@ public final class LegolassQuickReflexes extends CardImpl { ).setText(", reach")); TriggeredAbility trigger = new BecomesTappedSourceTriggeredAbility( - new DamageTargetEffect(xValue) + new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power to up to one target creature"), false ); diff --git a/Mage.Sets/src/mage/cards/m/MaladyInvoker.java b/Mage.Sets/src/mage/cards/m/MaladyInvoker.java index d8fbb4f0616..3a6813d19d4 100644 --- a/Mage.Sets/src/mage/cards/m/MaladyInvoker.java +++ b/Mage.Sets/src/mage/cards/m/MaladyInvoker.java @@ -5,7 +5,7 @@ import mage.abilities.Ability; import mage.abilities.common.TransformIntoSourceTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.SignInversionDynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; @@ -22,8 +22,7 @@ import java.util.UUID; */ public final class MaladyInvoker extends CardImpl { - private static final DynamicValue xValue - = new SignInversionDynamicValue(new SourcePermanentPowerCount(false)); + private static final DynamicValue xValue = new SignInversionDynamicValue(SourcePermanentPowerValue.NOT_NEGATIVE); public MaladyInvoker(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); diff --git a/Mage.Sets/src/mage/cards/m/MarionetteMaster.java b/Mage.Sets/src/mage/cards/m/MarionetteMaster.java index c7ecc25daec..2c6ad7d70a4 100644 --- a/Mage.Sets/src/mage/cards/m/MarionetteMaster.java +++ b/Mage.Sets/src/mage/cards/m/MarionetteMaster.java @@ -1,10 +1,9 @@ - package mage.cards.m; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.PutIntoGraveFromBattlefieldAllTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.keyword.FabricateAbility; import mage.cards.CardImpl; @@ -36,7 +35,7 @@ public final class MarionetteMaster extends CardImpl { // Whenever an artifact you control is put into a graveyard from the battlefield, target opponent loses life equal to Marionette Master's power. Ability ability = new PutIntoGraveFromBattlefieldAllTriggeredAbility( - new LoseLifeTargetEffect(new SourcePermanentPowerCount(false)) + new LoseLifeTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("target opponent loses life equal to {this}'s power"), false, filter, false ); diff --git a/Mage.Sets/src/mage/cards/m/MarwynTheNurturer.java b/Mage.Sets/src/mage/cards/m/MarwynTheNurturer.java index bb697db859a..24594e5d5e9 100644 --- a/Mage.Sets/src/mage/cards/m/MarwynTheNurturer.java +++ b/Mage.Sets/src/mage/cards/m/MarwynTheNurturer.java @@ -1,10 +1,9 @@ package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.Mana; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; @@ -16,6 +15,8 @@ import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import java.util.UUID; + /** * @author JRHerlehy Created on 4/7/18. */ @@ -39,7 +40,7 @@ public final class MarwynTheNurturer extends CardImpl { this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter)); // {T}: Add an amount of {G} equal to Marwyn's power. - this.addAbility(new DynamicManaAbility(Mana.GreenMana(1), new SourcePermanentPowerCount(), "Add an amount of {G} equal to {this}'s power")); + this.addAbility(new DynamicManaAbility(Mana.GreenMana(1), SourcePermanentPowerValue.NOT_NEGATIVE, "Add an amount of {G} equal to {this}'s power")); } private MarwynTheNurturer(final MarwynTheNurturer card) { diff --git a/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java b/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java index f49850f5cf5..139ce4fda48 100644 --- a/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java +++ b/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java @@ -1,13 +1,12 @@ package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.FlyingAbility; @@ -19,6 +18,8 @@ import mage.filter.common.FilterInstantOrSorcerySpell; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.target.TargetSpell; +import java.util.UUID; + /** * * @author LevelX2 @@ -45,7 +46,7 @@ public final class MausoleumWanderer extends CardImpl { this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter)); // Sacrifice Mausoleum Wanderer: Counter target instant or sorcery spell unless its controller pays {X}, where X is Mausoleum Wanderer's power. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterUnlessPaysEffect(new SourcePermanentPowerCount()), new SacrificeSourceCost()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterUnlessPaysEffect(SourcePermanentPowerValue.NOT_NEGATIVE), new SacrificeSourceCost()); ability.addTarget(new TargetSpell(new FilterInstantOrSorcerySpell())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MinotaurIllusionist.java b/Mage.Sets/src/mage/cards/m/MinotaurIllusionist.java index 7714e910eee..030cefb450f 100644 --- a/Mage.Sets/src/mage/cards/m/MinotaurIllusionist.java +++ b/Mage.Sets/src/mage/cards/m/MinotaurIllusionist.java @@ -1,13 +1,12 @@ package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; @@ -15,15 +14,16 @@ import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author LoneFox - */ public final class MinotaurIllusionist extends CardImpl { @@ -38,7 +38,7 @@ public final class MinotaurIllusionist extends CardImpl { this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(ShroudAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{1}{U}"))); // {R}, Sacrifice Minotaur Illusionist: Minotaur Illusionist deals damage equal to its power to target creature. - Effect effect = new DamageTargetEffect(new SourcePermanentPowerCount()); + Effect effect = new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE); effect.setText("it deals damage equal to its power to target creature."); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{R}")); ability.addCost(new SacrificeSourceCost()); diff --git a/Mage.Sets/src/mage/cards/m/MortisDogs.java b/Mage.Sets/src/mage/cards/m/MortisDogs.java index 187e747d7db..d2420e76745 100644 --- a/Mage.Sets/src/mage/cards/m/MortisDogs.java +++ b/Mage.Sets/src/mage/cards/m/MortisDogs.java @@ -1,21 +1,21 @@ - package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.target.TargetPlayer; +import java.util.UUID; + /** * * @author North @@ -32,8 +32,9 @@ public final 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 DiesSourceTriggeredAbility(new LoseLifeTargetEffect(new SourcePermanentPowerCount(false)) + Ability ability = new DiesSourceTriggeredAbility(new LoseLifeTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("target player loses life equal to its power")); ability.addTarget(new TargetPlayer()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/MyriadConstruct.java b/Mage.Sets/src/mage/cards/m/MyriadConstruct.java index c892d02ae80..d19bbf293ca 100644 --- a/Mage.Sets/src/mage/cards/m/MyriadConstruct.java +++ b/Mage.Sets/src/mage/cards/m/MyriadConstruct.java @@ -7,7 +7,7 @@ import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.common.KickedCondition; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -40,7 +40,6 @@ public final class MyriadConstruct extends CardImpl { } private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter); - private static final DynamicValue xValue2 = new SourcePermanentPowerCount(false); public MyriadConstruct(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}"); @@ -63,7 +62,7 @@ public final class MyriadConstruct extends CardImpl { Ability ability = new BecomesTargetSourceTriggeredAbility( new SacrificeSourceEffect().setText("sacrifice it"), StaticFilters.FILTER_SPELL_A ); - ability.addEffect(new CreateTokenEffect(new ConstructToken(), xValue2) + ability.addEffect(new CreateTokenEffect(new ConstructToken(), SourcePermanentPowerValue.NOT_NEGATIVE) .setText("and create a number of 1/1 colorless Construct artifact creature tokens equal to its power")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NestedShambler.java b/Mage.Sets/src/mage/cards/n/NestedShambler.java index 6a19ea125d4..9d75aad0d47 100644 --- a/Mage.Sets/src/mage/cards/n/NestedShambler.java +++ b/Mage.Sets/src/mage/cards/n/NestedShambler.java @@ -2,8 +2,7 @@ package mage.cards.n; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -18,8 +17,6 @@ import java.util.UUID; */ public final class NestedShambler extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public NestedShambler(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}"); @@ -29,7 +26,7 @@ public final class NestedShambler extends CardImpl { // When Nested Shambler dies, create X tapped 1/1 green Squirrel creature tokens, where X is Nested Shambler's power. this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect( - new SquirrelToken(), xValue, true, false + new SquirrelToken(), SourcePermanentPowerValue.NOT_NEGATIVE, true, false ))); } diff --git a/Mage.Sets/src/mage/cards/o/OkaunEyeOfChaos.java b/Mage.Sets/src/mage/cards/o/OkaunEyeOfChaos.java index 07eb3c61c29..c417fc7d7c2 100644 --- a/Mage.Sets/src/mage/cards/o/OkaunEyeOfChaos.java +++ b/Mage.Sets/src/mage/cards/o/OkaunEyeOfChaos.java @@ -1,11 +1,10 @@ - package mage.cards.o; import mage.MageInt; import mage.abilities.common.BeginningOfCombatTriggeredAbility; import mage.abilities.common.WinsCoinFlipTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue; import mage.abilities.effects.common.FlipUntilLoseEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; @@ -21,7 +20,7 @@ import java.util.UUID; */ public final class OkaunEyeOfChaos extends CardImpl { - private static final DynamicValue sourcePower = new SourcePermanentPowerCount(); + private static final DynamicValue sourcePower = SourcePermanentPowerValue.NOT_NEGATIVE; public OkaunEyeOfChaos(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}"); @@ -41,8 +40,8 @@ public final class OkaunEyeOfChaos extends CardImpl { // Whenever a player wins a coin flip, double Okaun's power and toughness until end of turn. this.addAbility(new WinsCoinFlipTriggeredAbility( new BoostSourceEffect( - sourcePower, - SourcePermanentToughnessValue.getInstance(), + SourcePermanentPowerValue.ALLOW_NEGATIVE, + SourcePermanentToughnessValue.instance, Duration.EndOfTurn ).setText("double {this}'s power and toughness until end of turn") )); diff --git a/Mage.Sets/src/mage/cards/o/OrcaSiegeDemon.java b/Mage.Sets/src/mage/cards/o/OrcaSiegeDemon.java index 25d8a999b02..7bdb7569ddf 100644 --- a/Mage.Sets/src/mage/cards/o/OrcaSiegeDemon.java +++ b/Mage.Sets/src/mage/cards/o/OrcaSiegeDemon.java @@ -4,7 +4,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DiesCreatureTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageMultiEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.TrampleAbility; @@ -38,9 +38,9 @@ public final class OrcaSiegeDemon extends CardImpl { this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, true)); // When Orca dies, it deals damage equal to its power divided as you choose among any number of targets. - Ability ability = new DiesSourceTriggeredAbility(new DamageMultiEffect(new SourcePermanentPowerCount()) + Ability ability = new DiesSourceTriggeredAbility(new DamageMultiEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power divided as you choose among any number of targets.")); - ability.addTarget(new TargetAnyTargetAmount(new SourcePermanentPowerCount())); + ability.addTarget(new TargetAnyTargetAmount(SourcePermanentPowerValue.NOT_NEGATIVE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PacksongPup.java b/Mage.Sets/src/mage/cards/p/PacksongPup.java index d1910fd0947..8ae94d180e4 100644 --- a/Mage.Sets/src/mage/cards/p/PacksongPup.java +++ b/Mage.Sets/src/mage/cards/p/PacksongPup.java @@ -6,8 +6,7 @@ import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.hint.ConditionHint; @@ -42,7 +41,6 @@ public final class PacksongPup extends CardImpl { private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter); private static final Hint hint = new ConditionHint(condition, "You control another Wolf or Werewolf"); - private static final DynamicValue xValue = new SourcePermanentPowerCount(); public PacksongPup(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); @@ -61,7 +59,7 @@ public final class PacksongPup extends CardImpl { ).addHint(hint)); // When Packsong Pup dies, you gain life equal to its power. - this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(xValue).setText("you gain life equal to its power"))); + this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("you gain life equal to its power"))); } private PacksongPup(final PacksongPup card) { diff --git a/Mage.Sets/src/mage/cards/p/PaladinOfAtonement.java b/Mage.Sets/src/mage/cards/p/PaladinOfAtonement.java index 02d594cee71..6ad01142820 100644 --- a/Mage.Sets/src/mage/cards/p/PaladinOfAtonement.java +++ b/Mage.Sets/src/mage/cards/p/PaladinOfAtonement.java @@ -38,7 +38,7 @@ public final class PaladinOfAtonement extends CardImpl { "At the beginning of each upkeep, if you lost life last turn, put a +1/+1 counter on {this}")); // When Paladin of Atonement dies, you gain life equal to it's toughness. - this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(SourcePermanentToughnessValue.getInstance(), + this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(SourcePermanentToughnessValue.instance, "you gain life equal to its toughness"))); } diff --git a/Mage.Sets/src/mage/cards/p/PalazzoArchers.java b/Mage.Sets/src/mage/cards/p/PalazzoArchers.java index 03d04bc725f..012c34f46b3 100644 --- a/Mage.Sets/src/mage/cards/p/PalazzoArchers.java +++ b/Mage.Sets/src/mage/cards/p/PalazzoArchers.java @@ -2,7 +2,7 @@ package mage.cards.p; import mage.MageInt; import mage.abilities.common.AttacksAllTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ReachAbility; @@ -39,7 +39,7 @@ public final class PalazzoArchers extends CardImpl { this.addAbility(ReachAbility.getInstance()); // Whenever a creature with flying attacks you or a planeswalker you control, Palazzo Archers deals damage equal to its power to that creature. - this.addAbility(new AttacksAllTriggeredAbility(new DamageTargetEffect(new SourcePermanentPowerCount()), + this.addAbility(new AttacksAllTriggeredAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE), false, filter, SetTargetPointer.PERMANENT, true)); } diff --git a/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java b/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java index e8408ab7f0a..46db64c3135 100644 --- a/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java +++ b/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java @@ -44,7 +44,7 @@ public final class PhenaxGodOfDeception extends CardImpl { // Creatures you control have "{T}: Target player puts the top X cards of their library into their graveyard, where X is this creature's toughness." Ability ability = new SimpleActivatedAbility( - new MillCardsTargetEffect(SourcePermanentToughnessValue.getInstance()) + new MillCardsTargetEffect(SourcePermanentToughnessValue.instance) .setText("Target player mills X cards, where X is this creature's toughness"), new TapSourceCost()); ability.addTarget(new TargetPlayer()); this.addAbility(new SimpleStaticAbility( diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianFleshgorger.java b/Mage.Sets/src/mage/cards/p/PhyrexianFleshgorger.java index 40823064c9a..e60e4d96660 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianFleshgorger.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianFleshgorger.java @@ -2,8 +2,7 @@ package mage.cards.p; import mage.MageInt; import mage.abilities.costs.common.PayLifeCost; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.keyword.LifelinkAbility; import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.PrototypeAbility; @@ -20,8 +19,6 @@ import java.util.UUID; */ public final class PhyrexianFleshgorger extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public PhyrexianFleshgorger(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}"); @@ -40,7 +37,7 @@ public final class PhyrexianFleshgorger extends CardImpl { this.addAbility(LifelinkAbility.getInstance()); // Ward--Pay life equal to Phyrexian Fleshgorger's power. - this.addAbility(new WardAbility(new PayLifeCost(xValue, "life equal to {this}'s power"), false)); + this.addAbility(new WardAbility(new PayLifeCost(SourcePermanentPowerValue.NOT_NEGATIVE, "life equal to {this}'s power"), false)); } private PhyrexianFleshgorger(final PhyrexianFleshgorger card) { diff --git a/Mage.Sets/src/mage/cards/p/PrimeSpeakerZegana.java b/Mage.Sets/src/mage/cards/p/PrimeSpeakerZegana.java index 7e9aed266d1..a3ef20c1f5b 100644 --- a/Mage.Sets/src/mage/cards/p/PrimeSpeakerZegana.java +++ b/Mage.Sets/src/mage/cards/p/PrimeSpeakerZegana.java @@ -1,12 +1,11 @@ package mage.cards.p; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -20,6 +19,8 @@ import mage.filter.common.FilterControlledCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** * * @author Plopman @@ -41,7 +42,7 @@ public final class PrimeSpeakerZegana extends CardImpl { effect.setText("with X +1/+1 counters on it, where X is the greatest power among other creatures you control."); this.addAbility(new EntersBattlefieldAbility(effect)); //When Prime Speaker Zegana enters the battlefield, draw cards equal to its power. - this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(new SourcePermanentPowerCount()) + this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("draw cards equal to its power"))); } diff --git a/Mage.Sets/src/mage/cards/r/RabbleRouser.java b/Mage.Sets/src/mage/cards/r/RabbleRouser.java index a62ba5316ca..76cf102f498 100644 --- a/Mage.Sets/src/mage/cards/r/RabbleRouser.java +++ b/Mage.Sets/src/mage/cards/r/RabbleRouser.java @@ -1,13 +1,11 @@ package mage.cards.r; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ColoredManaCost; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.keyword.BloodthirstAbility; @@ -19,14 +17,13 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.filter.StaticFilters; +import java.util.UUID; + /** - * * @author BursegSardaukar */ public final class RabbleRouser extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public RabbleRouser(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); this.subtype.add(SubType.GOBLIN); @@ -35,13 +32,12 @@ public final class RabbleRouser extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - //Bloodthirst 1 (If an opponent was dealt damage this turn, this creature enters the battlefield with a +1/+1 counter on it.) + // Bloodthirst 1 (If an opponent was dealt damage this turn, this creature enters the battlefield with a +1/+1 counter on it.) this.addAbility(new BloodthirstAbility(1)); - //{R}, {T}: Attacking creatures get +X/+0 until end of turn, where X is Rabble-Rouser's power. - + // {R}, {T}: Attacking creatures get +X/+0 until end of turn, where X is Rabble-Rouser's power. Ability ability = new SimpleActivatedAbility( - new BoostAllEffect(xValue, StaticValue.get(0), Duration.EndOfTurn, StaticFilters.FILTER_ATTACKING_CREATURES, false, null), + new BoostAllEffect(SourcePermanentPowerValue.NOT_NEGATIVE, StaticValue.get(0), Duration.EndOfTurn, StaticFilters.FILTER_ATTACKING_CREATURES, false, null), new ColoredManaCost(ColoredManaSymbol.R)); ability.addCost(new TapSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/r/RapaciousGuest.java b/Mage.Sets/src/mage/cards/r/RapaciousGuest.java index 1cd5107f80a..cc8b2f81845 100644 --- a/Mage.Sets/src/mage/cards/r/RapaciousGuest.java +++ b/Mage.Sets/src/mage/cards/r/RapaciousGuest.java @@ -5,8 +5,7 @@ import mage.abilities.Ability; import mage.abilities.common.DealCombatDamageControlledTriggeredAbility; import mage.abilities.common.LeavesBattlefieldTriggeredAbility; import mage.abilities.common.SacrificePermanentTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -27,8 +26,6 @@ import java.util.UUID; */ public final class RapaciousGuest extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public RapaciousGuest(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); @@ -53,7 +50,7 @@ public final class RapaciousGuest extends CardImpl { // When Rapacious Guest leaves the battlefield, target opponent loses life equal to its power. Ability ability = new LeavesBattlefieldTriggeredAbility( - new LoseLifeTargetEffect(xValue).setText("target opponent loses life equal to its power."), + new LoseLifeTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("target opponent loses life equal to its power."), false ); ability.addTarget(new TargetOpponent()); @@ -68,4 +65,4 @@ public final class RapaciousGuest extends CardImpl { public RapaciousGuest copy() { return new RapaciousGuest(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/r/RavenousTyrannosaurus.java b/Mage.Sets/src/mage/cards/r/RavenousTyrannosaurus.java index 9062fc841ca..64b0cdab0ef 100644 --- a/Mage.Sets/src/mage/cards/r/RavenousTyrannosaurus.java +++ b/Mage.Sets/src/mage/cards/r/RavenousTyrannosaurus.java @@ -3,7 +3,7 @@ package mage.cards.r; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageWithExcessEffect; import mage.abilities.keyword.DevourAbility; import mage.cards.CardImpl; @@ -37,7 +37,7 @@ public final class RavenousTyrannosaurus extends CardImpl { this.addAbility(new DevourAbility(3)); // Whenever Ravenous Tyrannosaurus attacks, it deals damage equal to its power to up to one other target creature. Excess damage is dealt to that creature's controller instead. - Ability ability = new AttacksTriggeredAbility(new DamageWithExcessEffect(new SourcePermanentPowerCount(false)) + Ability ability = new AttacksTriggeredAbility(new DamageWithExcessEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power to up to one other target creature. Excess damage is dealt to that creature's controller instead.")); ability.addTarget(new TargetCreaturePermanent(0, 1, filter, false)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/r/RecklessAmplimancer.java b/Mage.Sets/src/mage/cards/r/RecklessAmplimancer.java index b04fbf81b73..009481204d1 100644 --- a/Mage.Sets/src/mage/cards/r/RecklessAmplimancer.java +++ b/Mage.Sets/src/mage/cards/r/RecklessAmplimancer.java @@ -3,8 +3,7 @@ package mage.cards.r; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; @@ -20,8 +19,6 @@ import java.util.UUID; */ public final class RecklessAmplimancer extends CardImpl { - private static final DynamicValue sourcePower = new SourcePermanentPowerCount(); - public RecklessAmplimancer(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); @@ -32,7 +29,7 @@ public final class RecklessAmplimancer extends CardImpl { // {4}{G}: Double Reckless Amplimancer's power and toughness until end of turn. this.addAbility(new SimpleActivatedAbility(new BoostSourceEffect( - sourcePower, SourcePermanentToughnessValue.getInstance(), Duration.EndOfTurn + SourcePermanentPowerValue.ALLOW_NEGATIVE, SourcePermanentToughnessValue.instance, Duration.EndOfTurn ).setText("double {this}'s power and toughness until end of turn"), new ManaCostsImpl<>("{4}{G}"))); } diff --git a/Mage.Sets/src/mage/cards/r/ResilientKhenra.java b/Mage.Sets/src/mage/cards/r/ResilientKhenra.java index 1e3972beb8f..0ddfe05c0c7 100644 --- a/Mage.Sets/src/mage/cards/r/ResilientKhenra.java +++ b/Mage.Sets/src/mage/cards/r/ResilientKhenra.java @@ -1,21 +1,21 @@ package mage.cards.r; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.keyword.EternalizeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * * @author spjspj @@ -30,8 +30,8 @@ public final class ResilientKhenra extends CardImpl { this.toughness = new MageInt(2); // When Resilient Khenra enters the battlefield, you may have target creature get +X/+X until end of turn, where X is Resilient Khenra's power. - DynamicValue xValue = new SourcePermanentPowerCount(false); - Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn), true); + Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect( + SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn), true); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/r/RiverSong.java b/Mage.Sets/src/mage/cards/r/RiverSong.java index a8d43373dcf..354b5bd2fef 100644 --- a/Mage.Sets/src/mage/cards/r/RiverSong.java +++ b/Mage.Sets/src/mage/cards/r/RiverSong.java @@ -5,7 +5,7 @@ import mage.abilities.Ability; import mage.abilities.TriggeredAbility; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; @@ -43,7 +43,7 @@ public final class RiverSong extends CardImpl { // Spoilers -- Whenever an opponent scries, surveils, or searches their library, put a +1/+1 counter on River Song. // Then River Song deals damage to that player equal to its power. TriggeredAbility trigger = new RiverSongTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())); - trigger.addEffect(new DamageTargetEffect(new SourcePermanentPowerCount(false)) + trigger.addEffect(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("Then {this} deals damage to that player equal to its power")); this.addAbility(trigger.withFlavorWord("Spoilers")); } diff --git a/Mage.Sets/src/mage/cards/s/SarevokDeathbringer.java b/Mage.Sets/src/mage/cards/s/SarevokDeathbringer.java index 56d8ab98352..b6afc49f838 100644 --- a/Mage.Sets/src/mage/cards/s/SarevokDeathbringer.java +++ b/Mage.Sets/src/mage/cards/s/SarevokDeathbringer.java @@ -5,8 +5,8 @@ import mage.abilities.Ability; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.ChooseABackgroundAbility; import mage.abilities.condition.Condition; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.condition.InvertCondition; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -18,15 +18,12 @@ import mage.game.Game; import mage.watchers.common.RevoltWatcher; import java.util.UUID; -import mage.abilities.condition.InvertCondition; /** * @author TheElk801 */ public final class SarevokDeathbringer extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public SarevokDeathbringer(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); @@ -38,7 +35,7 @@ public final class SarevokDeathbringer extends CardImpl { // At the beginning of each player's end step, if no permanents left the battlefield this turn, that player loses X life, where X is Sarevok's power. this.addAbility(new BeginningOfEndStepTriggeredAbility( - new LoseLifeTargetEffect(xValue), TargetController.EACH_PLAYER, + new LoseLifeTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE), TargetController.EACH_PLAYER, new InvertCondition(SarevokDeathbringerCondition.instance), false ), new RevoltWatcher()); diff --git a/Mage.Sets/src/mage/cards/s/SharpshooterElf.java b/Mage.Sets/src/mage/cards/s/SharpshooterElf.java index 4ee5e40bf8e..b82888fff6c 100644 --- a/Mage.Sets/src/mage/cards/s/SharpshooterElf.java +++ b/Mage.Sets/src/mage/cards/s/SharpshooterElf.java @@ -4,9 +4,8 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.CreaturesYouControlCount; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.SetBasePowerSourceEffect; import mage.abilities.keyword.FlyingAbility; @@ -35,8 +34,6 @@ public final class SharpshooterElf extends CardImpl { filter.add(new AbilityPredicate(FlyingAbility.class)); } - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public SharpshooterElf(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); @@ -55,7 +52,7 @@ public final class SharpshooterElf extends CardImpl { // When Sharpshooter Elf enters the battlefield, it deals damage equal to its power to target creature with flying an opponent controls. Ability ability = new EntersBattlefieldTriggeredAbility( - new DamageTargetEffect(xValue, "it"), true + new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE, "it"), true ); ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SinstrikersWill.java b/Mage.Sets/src/mage/cards/s/SinstrikersWill.java index d6f4c29d7e4..0095324e5de 100644 --- a/Mage.Sets/src/mage/cards/s/SinstrikersWill.java +++ b/Mage.Sets/src/mage/cards/s/SinstrikersWill.java @@ -1,27 +1,22 @@ - package mage.cards.s; -import java.util.UUID; -import mage.constants.SubType; -import mage.target.common.TargetCreaturePermanent; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; -import mage.constants.Outcome; -import mage.target.TargetPermanent; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.*; +import mage.target.TargetPermanent; import mage.target.common.TargetAttackingOrBlockingCreature; +import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; /** * @@ -42,7 +37,7 @@ public final class SinstrikersWill extends CardImpl { this.addAbility(ability); // Enchanted creature has "{tap}: This creature deals damage equal to its power to target attacking or blocking creature." - ability = new SimpleActivatedAbility(new DamageTargetEffect(new SourcePermanentPowerCount()), new TapSourceCost()); + ability = new SimpleActivatedAbility(new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE), new TapSourceCost()); ability.addTarget(new TargetAttackingOrBlockingCreature()); this.addAbility(new SimpleStaticAbility( Zone.BATTLEFIELD, diff --git a/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java b/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java index a8fcc1fa548..3d34361c8f7 100644 --- a/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java +++ b/Mage.Sets/src/mage/cards/s/SkarrganSkybreaker.java @@ -1,12 +1,11 @@ package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.BloodthirstAbility; import mage.cards.CardImpl; @@ -16,6 +15,8 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.target.common.TargetAnyTarget; +import java.util.UUID; + /** * * @author LevelX2 @@ -33,7 +34,7 @@ public final class SkarrganSkybreaker extends CardImpl { // Bloodthirst 3 this.addAbility(new BloodthirstAbility(3)); // {1}, Sacrifice Skarrgan Skybreaker: Skarrgan Skybreaker deals damage equal to its power to any target. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new SourcePermanentPowerCount()) + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("It deals damage equal to its power to any target"), new GenericManaCost(1)); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetAnyTarget()); diff --git a/Mage.Sets/src/mage/cards/s/StalactiteStalker.java b/Mage.Sets/src/mage/cards/s/StalactiteStalker.java index 9d339ab388a..15ac5396947 100644 --- a/Mage.Sets/src/mage/cards/s/StalactiteStalker.java +++ b/Mage.Sets/src/mage/cards/s/StalactiteStalker.java @@ -10,7 +10,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.MultipliedValue; import mage.abilities.dynamicvalue.common.DescendedThisTurnCount; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.MenaceAbility; @@ -30,7 +30,7 @@ import java.util.UUID; */ public final class StalactiteStalker extends CardImpl { - private static final DynamicValue xValue = new MultipliedValue(new SourcePermanentPowerCount(), -1); + private static final DynamicValue xValue = new MultipliedValue(SourcePermanentPowerValue.NOT_NEGATIVE, -1); public StalactiteStalker(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}"); diff --git a/Mage.Sets/src/mage/cards/s/SteadfastArmasaur.java b/Mage.Sets/src/mage/cards/s/SteadfastArmasaur.java index 8f8b75c851c..88ffffe5230 100644 --- a/Mage.Sets/src/mage/cards/s/SteadfastArmasaur.java +++ b/Mage.Sets/src/mage/cards/s/SteadfastArmasaur.java @@ -43,7 +43,7 @@ public final class SteadfastArmasaur extends CardImpl { // {1}{W}, {T}: Steadfast Armasaur deals damage equal to its toughness to target creature blocking or blocked by it. Ability ability = new SimpleActivatedAbility( - new DamageTargetEffect(SourcePermanentToughnessValue.getInstance()) + new DamageTargetEffect(SourcePermanentToughnessValue.instance) .setText("{this} deals damage equal to its toughness to target creature blocking or blocked by it"), new ManaCostsImpl<>("{1}{W}") ); ability.addCost(new TapSourceCost()); diff --git a/Mage.Sets/src/mage/cards/s/SurestrikeTrident.java b/Mage.Sets/src/mage/cards/s/SurestrikeTrident.java index 308bf38d3f1..0a01c25ba4c 100644 --- a/Mage.Sets/src/mage/cards/s/SurestrikeTrident.java +++ b/Mage.Sets/src/mage/cards/s/SurestrikeTrident.java @@ -1,4 +1,3 @@ - package mage.cards.s; import mage.abilities.Ability; @@ -6,8 +5,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.UnattachCost; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.effects.common.continuous.GainAbilityWithAttachmentEffect; @@ -28,8 +26,6 @@ import java.util.UUID; */ public final class SurestrikeTrident extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public SurestrikeTrident(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); this.subtype.add(SubType.EQUIPMENT); @@ -40,7 +36,7 @@ public final class SurestrikeTrident extends CardImpl { )); ability.addEffect(new GainAbilityWithAttachmentEffect( "and \"{T}, Unattach {this}: This creature deals damage equal to its power to target player or planeswalker.\"", - new DamageTargetEffect(xValue) + new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("This creature deals damage equal to its power to target player or planeswalker"), new TargetPlayerOrPlaneswalker(), new UnattachCost(), new TapSourceCost() )); diff --git a/Mage.Sets/src/mage/cards/s/SyrFarenTheHengehammer.java b/Mage.Sets/src/mage/cards/s/SyrFarenTheHengehammer.java index 79aae508fc3..e45763a499e 100644 --- a/Mage.Sets/src/mage/cards/s/SyrFarenTheHengehammer.java +++ b/Mage.Sets/src/mage/cards/s/SyrFarenTheHengehammer.java @@ -3,8 +3,7 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -24,7 +23,6 @@ import java.util.UUID; */ public final class SyrFarenTheHengehammer extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); private static final FilterPermanent filter = new FilterAttackingCreature("another target attacking creature"); @@ -43,7 +41,7 @@ public final class SyrFarenTheHengehammer extends CardImpl { // Whenever Syr Faren, the Hengehammer attacks, another target attacking creature gets +X/+X until end of turn, where X is Syr Faren's power. Ability ability = new AttacksTriggeredAbility( - new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn), false + new BoostTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn), false ); ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SyrGingerTheMealEnder.java b/Mage.Sets/src/mage/cards/s/SyrGingerTheMealEnder.java index 16e1de11ce1..80b38b4d1eb 100644 --- a/Mage.Sets/src/mage/cards/s/SyrGingerTheMealEnder.java +++ b/Mage.Sets/src/mage/cards/s/SyrGingerTheMealEnder.java @@ -11,7 +11,7 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.decorator.ConditionalContinuousEffect; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -84,7 +84,7 @@ public final class SyrGingerTheMealEnder extends CardImpl { // {2}, {T}, Sacrifice Syr Ginger: You gain life equal to its power. ability = new SimpleActivatedAbility( - new GainLifeEffect(new SourcePermanentPowerCount()) + new GainLifeEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("you gain life equal to its power"), new GenericManaCost(2) ); diff --git a/Mage.Sets/src/mage/cards/t/TanazirQuandrix.java b/Mage.Sets/src/mage/cards/t/TanazirQuandrix.java index a1cad89c018..a7230739e4d 100644 --- a/Mage.Sets/src/mage/cards/t/TanazirQuandrix.java +++ b/Mage.Sets/src/mage/cards/t/TanazirQuandrix.java @@ -4,8 +4,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue; import mage.abilities.effects.common.DoubleCountersTargetEffect; import mage.abilities.effects.common.continuous.SetBasePowerToughnessAllEffect; @@ -13,7 +12,10 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.target.common.TargetControlledCreaturePermanent; @@ -25,8 +27,6 @@ import java.util.UUID; */ public final class TanazirQuandrix extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(true); - public TanazirQuandrix(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{U}"); @@ -51,7 +51,7 @@ public final class TanazirQuandrix extends CardImpl { // Whenever Tanazir Quandrix attacks, you may have the base power and toughness of other creatures you control become equal to Tanazir Quandrix's power and toughness until end of turn. this.addAbility(new AttacksTriggeredAbility(new SetBasePowerToughnessAllEffect( - xValue, SourcePermanentToughnessValue.getInstance(), Duration.EndOfTurn, + SourcePermanentPowerValue.ALLOW_NEGATIVE, SourcePermanentToughnessValue.instance, Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE ).setText("have the base power and toughness of other creatures you control " + "become equal to {this}'s power and toughness until end of turn"), true)); diff --git a/Mage.Sets/src/mage/cards/t/TaroxBladewing.java b/Mage.Sets/src/mage/cards/t/TaroxBladewing.java index f6361572f49..5e86d7bf2e0 100644 --- a/Mage.Sets/src/mage/cards/t/TaroxBladewing.java +++ b/Mage.Sets/src/mage/cards/t/TaroxBladewing.java @@ -1,20 +1,20 @@ - package mage.cards.t; -import java.util.UUID; import mage.MageInt; import mage.abilities.abilityword.GrandeurAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.SuperType; +import java.util.UUID; + /** * * @author emerald000 @@ -36,8 +36,7 @@ public final class TaroxBladewing extends CardImpl { this.addAbility(HasteAbility.getInstance()); // Grandeur - Discard another card named Tarox Bladewing: Tarox Bladewing gets +X/+X until end of turn, where X is its power. - SourcePermanentPowerCount x = new SourcePermanentPowerCount(); - this.addAbility(new GrandeurAbility(new BoostSourceEffect(x, x, Duration.EndOfTurn), "Tarox Bladewing")); + this.addAbility(new GrandeurAbility(new BoostSourceEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn), "Tarox Bladewing")); } private TaroxBladewing(final TaroxBladewing card) { diff --git a/Mage.Sets/src/mage/cards/t/TermagantSwarm.java b/Mage.Sets/src/mage/cards/t/TermagantSwarm.java index 04ccc478d53..2e31358aa6e 100644 --- a/Mage.Sets/src/mage/cards/t/TermagantSwarm.java +++ b/Mage.Sets/src/mage/cards/t/TermagantSwarm.java @@ -2,8 +2,7 @@ package mage.cards.t; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.RavenousAbility; import mage.cards.CardImpl; @@ -19,8 +18,6 @@ import java.util.UUID; */ public final class TermagantSwarm extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public TermagantSwarm(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{G}"); @@ -33,7 +30,7 @@ public final class TermagantSwarm extends CardImpl { // Death Frenzy -- When Termagant Swarm dies, create a number of 1/1 green Tyranid creature tokens equal to Termagant Swarm's power. this.addAbility(new DiesSourceTriggeredAbility( - new CreateTokenEffect(new TyranidToken(), xValue) + new CreateTokenEffect(new TyranidToken(), SourcePermanentPowerValue.NOT_NEGATIVE) .setText("create a number of 1/1 green Tyranid creature tokens equal to {this}'s power") ).withFlavorWord("Death Frenzy")); } diff --git a/Mage.Sets/src/mage/cards/t/ThePrideOfHullClade.java b/Mage.Sets/src/mage/cards/t/ThePrideOfHullClade.java index fee182b9037..6f9a07431e0 100644 --- a/Mage.Sets/src/mage/cards/t/ThePrideOfHullClade.java +++ b/Mage.Sets/src/mage/cards/t/ThePrideOfHullClade.java @@ -61,7 +61,7 @@ public final class ThePrideOfHullClade extends CardImpl { new GainAbilityTargetEffect( new DealsCombatDamageToAPlayerTriggeredAbility( new DrawCardSourceControllerEffect - (SourcePermanentToughnessValue.getInstance()).setText("draw cards equal to its toughness"), false)) + (SourcePermanentToughnessValue.instance).setText("draw cards equal to its toughness"), false)) .setText(", gains \"Whenever this creature deals combat damage to a player, draw cards equal to its toughness,\"")); ability.addEffect( new CanAttackAsThoughItDidntHaveDefenderTargetEffect(Duration.EndOfTurn) diff --git a/Mage.Sets/src/mage/cards/t/ThoughtSponge.java b/Mage.Sets/src/mage/cards/t/ThoughtSponge.java index 342f7700f43..d26d06a0988 100644 --- a/Mage.Sets/src/mage/cards/t/ThoughtSponge.java +++ b/Mage.Sets/src/mage/cards/t/ThoughtSponge.java @@ -5,7 +5,7 @@ import mage.abilities.Ability; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -25,8 +25,6 @@ import java.util.UUID; */ public final class ThoughtSponge extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public ThoughtSponge(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}"); @@ -46,7 +44,7 @@ public final class ThoughtSponge extends CardImpl { // When Thought Sponge dies, draw cards equal to its power. this.addAbility(new DiesSourceTriggeredAbility( - new DrawCardSourceControllerEffect(xValue).setText("draw cards equal to its power") + new DrawCardSourceControllerEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("draw cards equal to its power") )); } @@ -85,4 +83,4 @@ enum ThoughtSpongeValue implements DynamicValue { public String getMessage() { return ""; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/t/ThreefoldThunderhulk.java b/Mage.Sets/src/mage/cards/t/ThreefoldThunderhulk.java index d23c5f347b7..d6a42828746 100644 --- a/Mage.Sets/src/mage/cards/t/ThreefoldThunderhulk.java +++ b/Mage.Sets/src/mage/cards/t/ThreefoldThunderhulk.java @@ -7,8 +7,7 @@ import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; @@ -26,8 +25,6 @@ import java.util.UUID; */ public final class ThreefoldThunderhulk extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public ThreefoldThunderhulk(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}"); @@ -43,7 +40,7 @@ public final class ThreefoldThunderhulk extends CardImpl { // Whenever Threefold Thunderhulk enters the battlefield or attacks, create a number of 1/1 colorless Gnome artifact creature tokens equal to its power. this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility( - new CreateTokenEffect(new GnomeToken(), xValue) + new CreateTokenEffect(new GnomeToken(), SourcePermanentPowerValue.NOT_NEGATIVE) .setText("create a number of 1/1 colorless Gnome artifact creature tokens equal to its power") )); diff --git a/Mage.Sets/src/mage/cards/v/VadrikAstralArchmage.java b/Mage.Sets/src/mage/cards/v/VadrikAstralArchmage.java index e70077a1d57..f5229757ee6 100644 --- a/Mage.Sets/src/mage/cards/v/VadrikAstralArchmage.java +++ b/Mage.Sets/src/mage/cards/v/VadrikAstralArchmage.java @@ -6,8 +6,7 @@ import mage.abilities.SpellAbility; import mage.abilities.common.BecomeDayAsEntersAbility; import mage.abilities.common.BecomesDayOrNightTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.cost.CostModificationEffectImpl; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; @@ -55,8 +54,6 @@ public final class VadrikAstralArchmage extends CardImpl { class VadrikAstralArchmageEffect extends CostModificationEffectImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - VadrikAstralArchmageEffect() { super(Duration.WhileOnStack, Outcome.Benefit, CostModificationType.REDUCE_COST); staticText = "instant and sorcery spells you cast cost {X} less to cast, where X is {this}'s power"; @@ -68,7 +65,7 @@ class VadrikAstralArchmageEffect extends CostModificationEffectImpl { @Override public boolean apply(Game game, Ability source, Ability abilityToModify) { - CardUtil.reduceCost(abilityToModify, xValue.calculate(game, source, this)); + CardUtil.reduceCost(abilityToModify, SourcePermanentPowerValue.NOT_NEGATIVE.calculate(game, source, this)); return true; } diff --git a/Mage.Sets/src/mage/cards/v/ViridianJoiner.java b/Mage.Sets/src/mage/cards/v/ViridianJoiner.java index fc0a772693c..2a72625ec06 100644 --- a/Mage.Sets/src/mage/cards/v/ViridianJoiner.java +++ b/Mage.Sets/src/mage/cards/v/ViridianJoiner.java @@ -1,16 +1,16 @@ - package mage.cards.v; -import java.util.UUID; import mage.MageInt; import mage.Mana; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; +import java.util.UUID; + /** * * @author Plopman @@ -26,7 +26,7 @@ public final class ViridianJoiner extends CardImpl { this.toughness = new MageInt(2); // {T}: Add an amount of {G} equal to Viridian Joiner's power. - this.addAbility(new DynamicManaAbility(Mana.GreenMana(1), new SourcePermanentPowerCount())); + this.addAbility(new DynamicManaAbility(Mana.GreenMana(1), SourcePermanentPowerValue.NOT_NEGATIVE)); } private ViridianJoiner(final ViridianJoiner card) { diff --git a/Mage.Sets/src/mage/cards/v/VoldarenThrillseeker.java b/Mage.Sets/src/mage/cards/v/VoldarenThrillseeker.java index 25acc61c094..436c080bcd4 100644 --- a/Mage.Sets/src/mage/cards/v/VoldarenThrillseeker.java +++ b/Mage.Sets/src/mage/cards/v/VoldarenThrillseeker.java @@ -5,8 +5,7 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.BackupAbility; import mage.cards.CardImpl; @@ -22,8 +21,6 @@ import java.util.UUID; */ public final class VoldarenThrillseeker extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(false); - public VoldarenThrillseeker(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); @@ -38,7 +35,7 @@ public final class VoldarenThrillseeker extends CardImpl { // {1}, Sacrifice this creature: It deals damage equal to its power to any target. Ability ability = new SimpleActivatedAbility( - new DamageTargetEffect(xValue) + new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE) .setText("it deals damage equal to its power to any target"), new GenericManaCost(1) ); diff --git a/Mage.Sets/src/mage/cards/w/WallOfLimbs.java b/Mage.Sets/src/mage/cards/w/WallOfLimbs.java index 733bf95842b..3f520054980 100644 --- a/Mage.Sets/src/mage/cards/w/WallOfLimbs.java +++ b/Mage.Sets/src/mage/cards/w/WallOfLimbs.java @@ -1,14 +1,12 @@ - package mage.cards.w; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; @@ -21,9 +19,10 @@ import mage.constants.Zone; import mage.counters.CounterType; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.target.TargetPlayer; +import java.util.UUID; + /** * * @author emerald000 @@ -45,7 +44,7 @@ public final class WallOfLimbs extends CardImpl { this.addAbility(new WallOfLimbsTriggeredAbility()); // {5}{B}{B}, Sacrifice Wall of Limbs: Target player loses X life, where X is Wall of Limbs's power. - Effect effect = new LoseLifeTargetEffect(new SourcePermanentPowerCount()); + Effect effect = new LoseLifeTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE); effect.setText("Target player loses X life, where X is {this}'s power."); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{5}{B}{B}")); ability.addCost(new SacrificeSourceCost()); diff --git a/Mage.Sets/src/mage/cards/w/WildBeastmaster.java b/Mage.Sets/src/mage/cards/w/WildBeastmaster.java index 68a0ea4cfed..fcb2fd1419a 100644 --- a/Mage.Sets/src/mage/cards/w/WildBeastmaster.java +++ b/Mage.Sets/src/mage/cards/w/WildBeastmaster.java @@ -1,18 +1,19 @@ package mage.cards.w; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.StaticFilters; +import java.util.UUID; + /** * * @author LevelX2 @@ -30,8 +31,7 @@ public final class WildBeastmaster extends CardImpl { this.toughness = new MageInt(1); // Whenever Wild Beastmaster attacks, each other creature you control gets +X/+X until end of turn, where X is Wild Beastmaster's power. - SourcePermanentPowerCount creaturePower = new SourcePermanentPowerCount(); - BoostControlledEffect effect = new BoostControlledEffect(creaturePower, creaturePower, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true); + BoostControlledEffect effect = new BoostControlledEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true); effect.setText(EFFECT_TEXT); this.addAbility(new AttacksTriggeredAbility(effect, false)); } diff --git a/Mage.Sets/src/mage/cards/w/WildwoodMentor.java b/Mage.Sets/src/mage/cards/w/WildwoodMentor.java index 9f6ac7adf06..283575f1e72 100644 --- a/Mage.Sets/src/mage/cards/w/WildwoodMentor.java +++ b/Mage.Sets/src/mage/cards/w/WildwoodMentor.java @@ -4,8 +4,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; @@ -28,8 +27,6 @@ import java.util.UUID; */ public final class WildwoodMentor extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target attacking creature"); static { @@ -58,7 +55,7 @@ public final class WildwoodMentor extends CardImpl { // Whenever Wildwood Mentor attacks, another target attacking creature gets +X/+X until end of turn, where X is Wildwood Mentor's power. Ability ability = new AttacksTriggeredAbility( - new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn) + new BoostTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn) .setText("another target attacking creature gets +X/+X until end of turn, where X is {this}'s power"), false ); diff --git a/Mage.Sets/src/mage/cards/w/WillowGeist.java b/Mage.Sets/src/mage/cards/w/WillowGeist.java index 60ef8fa1db4..45b4f9d2b9c 100644 --- a/Mage.Sets/src/mage/cards/w/WillowGeist.java +++ b/Mage.Sets/src/mage/cards/w/WillowGeist.java @@ -3,8 +3,7 @@ package mage.cards.w; import mage.MageInt; import mage.abilities.common.CardsLeaveGraveyardTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.TrampleAbility; @@ -21,8 +20,6 @@ import java.util.UUID; */ public final class WillowGeist extends CardImpl { - private static final DynamicValue xValue = new SourcePermanentPowerCount(); - public WillowGeist(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}"); @@ -41,7 +38,7 @@ public final class WillowGeist extends CardImpl { // When Willow Geist dies, you gain life equal to its power. this.addAbility(new DiesSourceTriggeredAbility( - new GainLifeEffect(xValue).setText("you gain life equal to its power") + new GainLifeEffect(SourcePermanentPowerValue.NOT_NEGATIVE).setText("you gain life equal to its power") )); } diff --git a/Mage.Sets/src/mage/cards/y/YewSpirit.java b/Mage.Sets/src/mage/cards/y/YewSpirit.java index a9c15750ec7..31efe976e55 100644 --- a/Mage.Sets/src/mage/cards/y/YewSpirit.java +++ b/Mage.Sets/src/mage/cards/y/YewSpirit.java @@ -1,19 +1,19 @@ - package mage.cards.y; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; +import java.util.UUID; + /** * * @author North @@ -29,9 +29,8 @@ public final class YewSpirit extends CardImpl { this.toughness = new MageInt(3); // {2}{G}{G}: Yew Spirit gets +X/+X until end of turn, where X is its power. - SourcePermanentPowerCount x = new SourcePermanentPowerCount(); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new BoostSourceEffect(x, x, Duration.EndOfTurn), + new BoostSourceEffect(SourcePermanentPowerValue.NOT_NEGATIVE, SourcePermanentPowerValue.NOT_NEGATIVE, Duration.EndOfTurn), new ManaCostsImpl<>("{2}{G}{G}"))); } diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerCount.java deleted file mode 100644 index 4775b8e6ba0..00000000000 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerCount.java +++ /dev/null @@ -1,60 +0,0 @@ -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; - -/** - * @author Loki - */ -public class SourcePermanentPowerCount implements DynamicValue { - - private final boolean allowNegativeValues; - - public SourcePermanentPowerCount() { - this(true); - } - - public SourcePermanentPowerCount(boolean allowNegativeValues) { - super(); - this.allowNegativeValues = allowNegativeValues; - } - - protected SourcePermanentPowerCount(final SourcePermanentPowerCount dynamicValue) { - super(); - this.allowNegativeValues = dynamicValue.allowNegativeValues; - } - - @Override - public int calculate(Game game, Ability sourceAbility, Effect effect) { - 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); - } - if (sourcePermanent != null - && (allowNegativeValues || sourcePermanent.getPower().getValue() >= 0)) { - return sourcePermanent.getPower().getValue(); - } - return 0; - } - - @Override - public SourcePermanentPowerCount copy() { - return new SourcePermanentPowerCount(this); - } - - @Override - public String toString() { - return "X"; - } - - @Override - public String getMessage() { - return "{this}'s power"; - } -} diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerValue.java new file mode 100644 index 00000000000..e6511a93575 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentPowerValue.java @@ -0,0 +1,49 @@ +package mage.abilities.dynamicvalue.common; + +import mage.abilities.Ability; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.Effect; +import mage.game.Game; +import mage.game.permanent.Permanent; + +/** + * @author xenohedron + */ +public enum SourcePermanentPowerValue implements DynamicValue { + ALLOW_NEGATIVE(true), // 107.1b, only for setting power/toughness/life to a specific value or doubling + NOT_NEGATIVE(false); // all other usages + + private final boolean allowNegativeValues; + + SourcePermanentPowerValue(boolean allowNegativeValues) { + this.allowNegativeValues = allowNegativeValues; + } + + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + Permanent sourcePermanent = sourceAbility.getSourcePermanentOrLKI(game); + if (sourcePermanent == null) { + return 0; + } + int value = sourcePermanent.getPower().getValue(); + if (allowNegativeValues || value > 0) { + return value; + } + return 0; + } + + @Override + public SourcePermanentPowerValue copy() { + return this; + } + + @Override + public String toString() { + return "X"; + } + + @Override + public String getMessage() { + return "{this}'s power"; + } +} 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 29c9eab4384..1cf05596ac0 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentToughnessValue.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SourcePermanentToughnessValue.java @@ -3,46 +3,24 @@ 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; -import java.io.ObjectStreamException; - /** - * @author LevelX2 + * @author xenohedron */ - -public class SourcePermanentToughnessValue implements DynamicValue { - - private static final SourcePermanentToughnessValue instance = new SourcePermanentToughnessValue(); - - private Object readResolve() throws ObjectStreamException { - return instance; - } - - public static SourcePermanentToughnessValue getInstance() { - return instance; - } - - private SourcePermanentToughnessValue() { - } +public enum SourcePermanentToughnessValue implements DynamicValue { + instance; @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { - Permanent sourcePermanent = game.getPermanent(sourceAbility.getSourceId()); - if (sourcePermanent == null) { - sourcePermanent = (Permanent) game.getLastKnownInformation(sourceAbility.getSourceId(), Zone.BATTLEFIELD); - } - if (sourcePermanent != null) { - return sourcePermanent.getToughness().getValue(); - } - return 0; + Permanent sourcePermanent = sourceAbility.getSourcePermanentOrLKI(game); + return sourcePermanent == null ? 0 : sourcePermanent.getToughness().getValue(); } @Override public SourcePermanentToughnessValue copy() { - return new SourcePermanentToughnessValue(); + return instance; } @Override diff --git a/Mage/src/main/java/mage/game/command/emblems/ArlinnEmbracedByTheMoonEmblem.java b/Mage/src/main/java/mage/game/command/emblems/ArlinnEmbracedByTheMoonEmblem.java index e2d840aed84..038807501f8 100644 --- a/Mage/src/main/java/mage/game/command/emblems/ArlinnEmbracedByTheMoonEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/ArlinnEmbracedByTheMoonEmblem.java @@ -4,7 +4,7 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; @@ -28,7 +28,7 @@ public final class ArlinnEmbracedByTheMoonEmblem extends Emblem { GainAbilityControlledEffect effect = new GainAbilityControlledEffect(HasteAbility.getInstance(), Duration.EndOfGame, filter); effect.setText("Creatures you control have haste"); Ability ability = new SimpleStaticAbility(Zone.COMMAND, effect); - Effect effect2 = new DamageTargetEffect(new SourcePermanentPowerCount()); + Effect effect2 = new DamageTargetEffect(SourcePermanentPowerValue.NOT_NEGATIVE); effect2.setText("This creature deals damage equal to its power to any target"); Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect2, new TapSourceCost()); ability2.addTarget(new TargetAnyTarget());