From 3833d7bab37cc4f3cf024e8e9fe35503b13c3da7 Mon Sep 17 00:00:00 2001 From: Evan Kranzler <theelk801@gmail.com> Date: Sun, 6 Mar 2022 18:31:07 -0500 Subject: [PATCH] updated implementation of Domain value --- .../src/mage/cards/a/AlliedStrategies.java | 2 +- .../src/mage/cards/a/AvenTrailblazer.java | 5 +- .../src/mage/cards/c/CollapsingBorders.java | 8 +-- .../src/mage/cards/c/CollectiveRestraint.java | 2 +- Mage.Sets/src/mage/cards/d/Draco.java | 4 +- Mage.Sets/src/mage/cards/d/DragDown.java | 6 +- Mage.Sets/src/mage/cards/e/EvasiveAction.java | 2 +- Mage.Sets/src/mage/cards/e/ExoticCurse.java | 2 +- Mage.Sets/src/mage/cards/e/ExoticDisease.java | 21 +++--- .../src/mage/cards/e/ExplodingBorders.java | 2 +- Mage.Sets/src/mage/cards/g/GaeasMight.java | 2 +- .../src/mage/cards/h/HiveheartShaman.java | 5 +- Mage.Sets/src/mage/cards/k/KavuScout.java | 2 +- Mage.Sets/src/mage/cards/m/ManaforceMace.java | 2 +- .../src/mage/cards/m/MaskOfIntolerance.java | 21 +++--- Mage.Sets/src/mage/cards/m/MatcaRioters.java | 2 +- Mage.Sets/src/mage/cards/m/MightOfAlara.java | 2 +- .../src/mage/cards/o/OrderedMigration.java | 2 +- .../src/mage/cards/p/PathToTheFestival.java | 5 +- Mage.Sets/src/mage/cards/p/PlanarDespair.java | 2 +- Mage.Sets/src/mage/cards/p/PowerArmor.java | 2 +- .../src/mage/cards/p/PrismaticGeoscope.java | 2 +- Mage.Sets/src/mage/cards/s/SamitePilgrim.java | 2 +- Mage.Sets/src/mage/cards/s/ScionOfDraco.java | 5 +- Mage.Sets/src/mage/cards/s/SporeBurst.java | 2 +- Mage.Sets/src/mage/cards/s/Stratadon.java | 2 +- .../src/mage/cards/s/StrengthOfUnity.java | 15 ++--- .../src/mage/cards/t/TerritorialKavu.java | 5 +- Mage.Sets/src/mage/cards/t/TribalFlames.java | 2 +- .../src/mage/cards/t/TrompTheDomains.java | 24 ++++--- .../src/mage/cards/v/VoicesFromTheVoid.java | 5 +- .../src/mage/cards/w/WanderingGoblins.java | 5 +- .../src/mage/cards/w/WanderingStream.java | 2 +- .../src/mage/cards/w/WayfaringGiant.java | 21 +++--- .../src/mage/cards/w/WorldlyCounsel.java | 2 +- .../dynamicvalue/common/DomainValue.java | 65 ++++++------------- 36 files changed, 103 insertions(+), 157 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AlliedStrategies.java b/Mage.Sets/src/mage/cards/a/AlliedStrategies.java index c91c6d71cf..b7aa8b37b5 100644 --- a/Mage.Sets/src/mage/cards/a/AlliedStrategies.java +++ b/Mage.Sets/src/mage/cards/a/AlliedStrategies.java @@ -21,7 +21,7 @@ public final class AlliedStrategies extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}"); // Domain - Target player draws a card for each basic land type among lands they control. - this.getSpellAbility().addEffect(new DrawCardTargetEffect(new DomainValue(true))); + this.getSpellAbility().addEffect(new DrawCardTargetEffect(DomainValue.TARGET)); this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); this.getSpellAbility().addHint(DomainHint.instance); diff --git a/Mage.Sets/src/mage/cards/a/AvenTrailblazer.java b/Mage.Sets/src/mage/cards/a/AvenTrailblazer.java index ee22dd2457..9954e2607b 100644 --- a/Mage.Sets/src/mage/cards/a/AvenTrailblazer.java +++ b/Mage.Sets/src/mage/cards/a/AvenTrailblazer.java @@ -2,7 +2,6 @@ package mage.cards.a; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.DomainValue; import mage.abilities.effects.common.continuous.SetToughnessSourceEffect; import mage.abilities.hint.common.DomainHint; @@ -18,8 +17,6 @@ import java.util.UUID; */ public final class AvenTrailblazer extends CardImpl { - private static final DynamicValue xValue = new DomainValue(); - public AvenTrailblazer(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}"); this.subtype.add(SubType.BIRD); @@ -33,7 +30,7 @@ public final class AvenTrailblazer extends CardImpl { // Domain - Aven Trailblazer's toughness is equal to the number of basic land types among lands you control. this.addAbility(new SimpleStaticAbility( - Zone.ALL, new SetToughnessSourceEffect(xValue, Duration.EndOfGame) + Zone.ALL, new SetToughnessSourceEffect(DomainValue.REGULAR, Duration.EndOfGame) .setText("{this}'s toughness is equal to the number of basic land types among lands you control") ).addHint(DomainHint.instance).setAbilityWord(AbilityWord.DOMAIN)); } diff --git a/Mage.Sets/src/mage/cards/c/CollapsingBorders.java b/Mage.Sets/src/mage/cards/c/CollapsingBorders.java index 9a066fe61a..934e031adc 100644 --- a/Mage.Sets/src/mage/cards/c/CollapsingBorders.java +++ b/Mage.Sets/src/mage/cards/c/CollapsingBorders.java @@ -1,7 +1,5 @@ - package mage.cards.c; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.dynamicvalue.common.DomainValue; @@ -15,10 +13,10 @@ import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.TargetController; +import java.util.UUID; + /** - * * @author LoneFox - * */ public final class CollapsingBorders extends CardImpl { @@ -26,7 +24,7 @@ public final class CollapsingBorders extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}"); // Domain - At the beginning of each player's upkeep, that player gains 1 life for each basic land type among lands they control. Then Collapsing Borders deals 3 damage to that player. - Effect effect = new GainLifeTargetEffect(new DomainValue(true)); + Effect effect = new GainLifeTargetEffect(DomainValue.TARGET); effect.setText("that player gains 1 life for each basic land type among lands they control"); Ability ability = new BeginningOfUpkeepTriggeredAbility(effect, TargetController.ANY, false); effect = new DamageTargetEffect(3); diff --git a/Mage.Sets/src/mage/cards/c/CollectiveRestraint.java b/Mage.Sets/src/mage/cards/c/CollectiveRestraint.java index fc36ceb624..df7d2435c8 100644 --- a/Mage.Sets/src/mage/cards/c/CollectiveRestraint.java +++ b/Mage.Sets/src/mage/cards/c/CollectiveRestraint.java @@ -56,7 +56,7 @@ class CollectiveRestraintPayManaToAttackAllEffect extends CantAttackYouUnlessPay @Override public ManaCosts getManaCostToPay(GameEvent event, Ability source, Game game) { - int domainValue = new DomainValue().calculate(game, source, this); + int domainValue = DomainValue.REGULAR.calculate(game, source, this); if (domainValue > 0) { return new ManaCostsImpl<>("{" + domainValue + '}'); } diff --git a/Mage.Sets/src/mage/cards/d/Draco.java b/Mage.Sets/src/mage/cards/d/Draco.java index ee19347500..8c91d4e1c9 100644 --- a/Mage.Sets/src/mage/cards/d/Draco.java +++ b/Mage.Sets/src/mage/cards/d/Draco.java @@ -65,7 +65,7 @@ class DracoCostReductionEffect extends CostModificationEffectImpl { @Override public boolean apply(Game game, Ability source, Ability abilityToModify) { - CardUtil.reduceCost(abilityToModify, new DomainValue(2).calculate(game, source, this)); + CardUtil.reduceCost(abilityToModify, 2 * DomainValue.REGULAR.calculate(game, source, this)); return true; } @@ -98,7 +98,7 @@ class DracoSacrificeUnlessPaysEffect extends OneShotEffect { Permanent permanent = game.getPermanent(source.getSourceId()); if (player != null && permanent != null) { // The cost is reduced by {2} for each basic land type. - int domainValueReduction = new DomainValue(2).calculate(game, source, this); + int domainValueReduction = 2 * DomainValue.REGULAR.calculate(game, source, this); int count = Math.max(0, MAX_DOMAIN_VALUE - domainValueReduction); if (player.chooseUse(Outcome.Benefit, "Pay {" + count + "}? Or " + permanent.getName() + " will be sacrificed.", source, game)) { Cost cost = ManaUtil.createManaCost(count, false); diff --git a/Mage.Sets/src/mage/cards/d/DragDown.java b/Mage.Sets/src/mage/cards/d/DragDown.java index 620508fe8f..2a17a475ae 100644 --- a/Mage.Sets/src/mage/cards/d/DragDown.java +++ b/Mage.Sets/src/mage/cards/d/DragDown.java @@ -1,6 +1,7 @@ package mage.cards.d; import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.MultipliedValue; import mage.abilities.dynamicvalue.common.DomainValue; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.hint.common.DomainHint; @@ -18,13 +19,14 @@ import java.util.UUID; */ public final class DragDown extends CardImpl { - private static final DynamicValue xValue = new DomainValue(-1); + private static final DynamicValue xValue = new MultipliedValue(DomainValue.REGULAR, -1); public DragDown(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}"); // Domain - Target creature gets -1/-1 until end of turn for each basic land type among lands you control. - this.getSpellAbility().addEffect(new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn, true)); + this.getSpellAbility().addEffect(new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn, true) + .setText("target creature gets -1/-1 until end of turn for each basic land type among lands you control")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addHint(DomainHint.instance); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); diff --git a/Mage.Sets/src/mage/cards/e/EvasiveAction.java b/Mage.Sets/src/mage/cards/e/EvasiveAction.java index b3b81d4e1a..6831eac3e5 100644 --- a/Mage.Sets/src/mage/cards/e/EvasiveAction.java +++ b/Mage.Sets/src/mage/cards/e/EvasiveAction.java @@ -21,7 +21,7 @@ public final class EvasiveAction extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}"); // Domain - Counter target spell unless its controller pays {1} for each basic land type among lands you control. - this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(new DomainValue())); + this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(DomainValue.REGULAR)); this.getSpellAbility().addTarget(new TargetSpell()); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); this.getSpellAbility().addHint(DomainHint.instance); diff --git a/Mage.Sets/src/mage/cards/e/ExoticCurse.java b/Mage.Sets/src/mage/cards/e/ExoticCurse.java index dbd5f7c720..b3c478e06b 100644 --- a/Mage.Sets/src/mage/cards/e/ExoticCurse.java +++ b/Mage.Sets/src/mage/cards/e/ExoticCurse.java @@ -33,7 +33,7 @@ public final class ExoticCurse extends CardImpl { this.addAbility(new EnchantAbility(auraTarget.getTargetName())); // Domain - Enchanted creature gets -1/-1 for each basic land type among lands you control. - DynamicValue unboost = new SignInversionDynamicValue(new DomainValue()); + DynamicValue unboost = new SignInversionDynamicValue(DomainValue.REGULAR); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(unboost, unboost, Duration.WhileOnBattlefield)); ability.setAbilityWord(AbilityWord.DOMAIN); this.addAbility(ability.addHint(DomainHint.instance)); diff --git a/Mage.Sets/src/mage/cards/e/ExoticDisease.java b/Mage.Sets/src/mage/cards/e/ExoticDisease.java index 15b82d9d6b..34a5523c7d 100644 --- a/Mage.Sets/src/mage/cards/e/ExoticDisease.java +++ b/Mage.Sets/src/mage/cards/e/ExoticDisease.java @@ -1,36 +1,33 @@ - package mage.cards.e; -import java.util.UUID; import mage.abilities.dynamicvalue.common.DomainValue; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.hint.common.DomainHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.target.TargetPlayer; +import java.util.UUID; + /** - * * @author LoneFox */ public final class ExoticDisease extends CardImpl { public ExoticDisease(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}"); // Domain - Target player loses X life and you gain X life, where X is the number of basic land types among lands you control. - DomainValue dv = new DomainValue(); - Effect effect = new LoseLifeTargetEffect(dv); - effect.setText("<i>Domain</i> — Target player loses X life"); - this.getSpellAbility().addEffect(effect); - effect = new GainLifeEffect(dv); - effect.setText("and you gain X life, where X is the number of basic land types among lands you control"); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new LoseLifeTargetEffect(DomainValue.REGULAR) + .setText("target player loses X life")); + this.getSpellAbility().addEffect(new GainLifeEffect(DomainValue.REGULAR) + .setText("and you gain X life, where X is the number of basic land types among lands you control")); this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addHint(DomainHint.instance); + this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); } private ExoticDisease(final ExoticDisease card) { diff --git a/Mage.Sets/src/mage/cards/e/ExplodingBorders.java b/Mage.Sets/src/mage/cards/e/ExplodingBorders.java index 5de4c7f674..b7a82e6825 100644 --- a/Mage.Sets/src/mage/cards/e/ExplodingBorders.java +++ b/Mage.Sets/src/mage/cards/e/ExplodingBorders.java @@ -24,7 +24,7 @@ public final class ExplodingBorders extends CardImpl { // Domain - Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library. Exploding Borders deals X damage to target player, where X is the number of basic land types among lands you control. this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true)); - this.getSpellAbility().addEffect(new DamageTargetEffect(new DomainValue())); + this.getSpellAbility().addEffect(new DamageTargetEffect(DomainValue.REGULAR)); this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker()); this.getSpellAbility().addHint(DomainHint.instance); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); diff --git a/Mage.Sets/src/mage/cards/g/GaeasMight.java b/Mage.Sets/src/mage/cards/g/GaeasMight.java index 43338fa1f8..1f89d9ea4d 100644 --- a/Mage.Sets/src/mage/cards/g/GaeasMight.java +++ b/Mage.Sets/src/mage/cards/g/GaeasMight.java @@ -22,7 +22,7 @@ public final class GaeasMight extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}"); // Domain - Target creature gets +1/+1 until end of turn for each basic land type among lands you control. - this.getSpellAbility().addEffect(new BoostTargetEffect(new DomainValue(), new DomainValue(), Duration.EndOfTurn)); + this.getSpellAbility().addEffect(new BoostTargetEffect(DomainValue.REGULAR, DomainValue.REGULAR, Duration.EndOfTurn)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); this.getSpellAbility().addHint(DomainHint.instance); diff --git a/Mage.Sets/src/mage/cards/h/HiveheartShaman.java b/Mage.Sets/src/mage/cards/h/HiveheartShaman.java index 35f5f608a7..a6e5ecb11b 100644 --- a/Mage.Sets/src/mage/cards/h/HiveheartShaman.java +++ b/Mage.Sets/src/mage/cards/h/HiveheartShaman.java @@ -5,7 +5,6 @@ import mage.abilities.Ability; import mage.abilities.common.ActivateAsSorceryActivatedAbility; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.DomainValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; @@ -95,8 +94,6 @@ enum HiveheartShamanPredicate implements ObjectSourcePlayerPredicate<Card> { class HiveheartShamanEffect extends OneShotEffect { - private static final DynamicValue xValue = new DomainValue(); - HiveheartShamanEffect() { super(Outcome.Benefit); staticText = "create a 1/1 green Insect creature token. Put X +1/+1 counters on it, " + @@ -116,7 +113,7 @@ class HiveheartShamanEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Token token = new InsectToken(); token.putOntoBattlefield(1, game, source); - int domainCount = xValue.calculate(game, source, this); + int domainCount = DomainValue.REGULAR.calculate(game, source, this); if (domainCount < 1) { return true; } diff --git a/Mage.Sets/src/mage/cards/k/KavuScout.java b/Mage.Sets/src/mage/cards/k/KavuScout.java index 49f0682e84..81778331d5 100644 --- a/Mage.Sets/src/mage/cards/k/KavuScout.java +++ b/Mage.Sets/src/mage/cards/k/KavuScout.java @@ -32,7 +32,7 @@ public final class KavuScout extends CardImpl { this.toughness = new MageInt(2); // Domain - Kavu Scout gets +1/+0 for each basic land type among lands you control. - Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(new DomainValue(), StaticValue.get(0), Duration.WhileOnBattlefield)); + Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(DomainValue.REGULAR, StaticValue.get(0), Duration.WhileOnBattlefield)); ability.setAbilityWord(AbilityWord.DOMAIN); this.addAbility(ability.addHint(DomainHint.instance)); } diff --git a/Mage.Sets/src/mage/cards/m/ManaforceMace.java b/Mage.Sets/src/mage/cards/m/ManaforceMace.java index 8085d00a95..ce167fac3d 100644 --- a/Mage.Sets/src/mage/cards/m/ManaforceMace.java +++ b/Mage.Sets/src/mage/cards/m/ManaforceMace.java @@ -26,7 +26,7 @@ public final class ManaforceMace extends CardImpl { // Domain - Equipped creature gets +1/+1 for each basic land type among lands you control. this.addAbility(new SimpleStaticAbility( - new BoostEquippedEffect(new DomainValue(), new DomainValue()) + new BoostEquippedEffect(DomainValue.REGULAR, DomainValue.REGULAR) ).addHint(DomainHint.instance).setAbilityWord(AbilityWord.DOMAIN)); // Equip {3} diff --git a/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java b/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java index d685e2e230..d8ad1f425e 100644 --- a/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java +++ b/Mage.Sets/src/mage/cards/m/MaskOfIntolerance.java @@ -1,10 +1,8 @@ - package mage.cards.m; -import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.TriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.condition.Condition; import mage.abilities.condition.IntCompareCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.dynamicvalue.common.DomainValue; @@ -15,22 +13,25 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.ComparisonType; import mage.constants.TargetController; -import mage.constants.Zone; import mage.game.Game; +import java.util.UUID; + /** - * * @author LoneFox */ public final class MaskOfIntolerance extends CardImpl { + private static final Condition condition = new MaskOfIntoleranceCondition(); + public MaskOfIntolerance(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); // At the beginning of each player's upkeep, if there are four or more basic land types among lands that player controls, Mask of Intolerance deals 3 damage to that player. - TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), TargetController.ANY, false); - this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new MaskOfIntoleranceCondition(), - "At the beginning of each player's upkeep, if there are four or more basic land types among lands that player controls, {this} deals 3 damage to that player.").addHint(DomainHint.instance)); + this.addAbility(new ConditionalInterveningIfTriggeredAbility(new BeginningOfUpkeepTriggeredAbility( + new DamageTargetEffect(3), TargetController.ANY, false + ), condition, "At the beginning of each player's upkeep, if there are four or more basic land types " + + "among lands that player controls, {this} deals 3 damage to that player.").addHint(DomainHint.instance)); } private MaskOfIntolerance(final MaskOfIntolerance card) { @@ -51,6 +52,6 @@ class MaskOfIntoleranceCondition extends IntCompareCondition { @Override protected int getInputValue(Game game, Ability source) { - return new DomainValue(1, game.getActivePlayerId()).calculate(game, source, null); + return DomainValue.ACTIVE.calculate(game, source, null); } } diff --git a/Mage.Sets/src/mage/cards/m/MatcaRioters.java b/Mage.Sets/src/mage/cards/m/MatcaRioters.java index ded107e59e..7476b3398d 100644 --- a/Mage.Sets/src/mage/cards/m/MatcaRioters.java +++ b/Mage.Sets/src/mage/cards/m/MatcaRioters.java @@ -30,7 +30,7 @@ public final class MatcaRioters extends CardImpl { this.toughness = new MageInt(0); // Domain - Matca Rioters's power and toughness are each equal to the number of basic land types among lands you control. - Effect effect = new SetPowerToughnessSourceEffect(new DomainValue(), Duration.EndOfGame); + Effect effect = new SetPowerToughnessSourceEffect(DomainValue.REGULAR, Duration.EndOfGame); effect.setText("<i>Domain</i> — {this}'s power and toughness are each equal to the number of basic land types among lands you control."); this.addAbility(new SimpleStaticAbility(Zone.ALL, effect).addHint(DomainHint.instance)); } diff --git a/Mage.Sets/src/mage/cards/m/MightOfAlara.java b/Mage.Sets/src/mage/cards/m/MightOfAlara.java index a7f2cb2598..09337caf36 100644 --- a/Mage.Sets/src/mage/cards/m/MightOfAlara.java +++ b/Mage.Sets/src/mage/cards/m/MightOfAlara.java @@ -23,7 +23,7 @@ public final class MightOfAlara extends CardImpl { // Domain - Target creature gets +1/+1 until end of turn for each basic land type among lands you control. this.getSpellAbility().addEffect(new BoostTargetEffect( - new DomainValue(), new DomainValue(), Duration.EndOfTurn, true + DomainValue.REGULAR, DomainValue.REGULAR, Duration.EndOfTurn, true )); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addHint(DomainHint.instance); diff --git a/Mage.Sets/src/mage/cards/o/OrderedMigration.java b/Mage.Sets/src/mage/cards/o/OrderedMigration.java index 9076afaa5c..a5b93e7143 100644 --- a/Mage.Sets/src/mage/cards/o/OrderedMigration.java +++ b/Mage.Sets/src/mage/cards/o/OrderedMigration.java @@ -22,7 +22,7 @@ public final class OrderedMigration extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{U}"); // Domain - Create a 1/1 blue Bird creature token with flying for each basic land type among lands you control. - this.getSpellAbility().addEffect(new CreateTokenEffect(new OrderedMigrationBirdToken(), new DomainValue())); + this.getSpellAbility().addEffect(new CreateTokenEffect(new OrderedMigrationBirdToken(), DomainValue.REGULAR)); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); this.getSpellAbility().addHint(DomainHint.instance); } diff --git a/Mage.Sets/src/mage/cards/p/PathToTheFestival.java b/Mage.Sets/src/mage/cards/p/PathToTheFestival.java index 58cd3c1bab..aff8d2a011 100644 --- a/Mage.Sets/src/mage/cards/p/PathToTheFestival.java +++ b/Mage.Sets/src/mage/cards/p/PathToTheFestival.java @@ -4,7 +4,6 @@ import mage.abilities.Ability; import mage.abilities.condition.Condition; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.decorator.ConditionalOneShotEffect; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.DomainValue; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.effects.keyword.ScryEffect; @@ -13,7 +12,6 @@ import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.TimingRule; import mage.filter.StaticFilters; import mage.game.Game; import mage.target.common.TargetCardInLibrary; @@ -56,10 +54,9 @@ public final class PathToTheFestival extends CardImpl { enum PathToTheFestivalCondition implements Condition { instance; - private static final DynamicValue xValue = new DomainValue(); @Override public boolean apply(Game game, Ability source) { - return xValue.calculate(game, source, null) >= 3; + return DomainValue.REGULAR.calculate(game, source, null) >= 3; } } diff --git a/Mage.Sets/src/mage/cards/p/PlanarDespair.java b/Mage.Sets/src/mage/cards/p/PlanarDespair.java index 65bdb3dcf5..f43d82d733 100644 --- a/Mage.Sets/src/mage/cards/p/PlanarDespair.java +++ b/Mage.Sets/src/mage/cards/p/PlanarDespair.java @@ -24,7 +24,7 @@ public final class PlanarDespair extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}{B}"); // Domain - All creatures get -1/-1 until end of turn for each basic land type among lands you control. - DynamicValue dv = new SignInversionDynamicValue(new DomainValue()); + DynamicValue dv = new SignInversionDynamicValue(DomainValue.REGULAR); Effect effect = new BoostAllEffect(dv, dv, Duration.EndOfTurn); effect.setText("<i>Domain</i> — All creatures get -1/-1 until end of turn for each basic land type among lands you control."); this.getSpellAbility().addEffect(effect); diff --git a/Mage.Sets/src/mage/cards/p/PowerArmor.java b/Mage.Sets/src/mage/cards/p/PowerArmor.java index 691283bce2..7c236b76b4 100644 --- a/Mage.Sets/src/mage/cards/p/PowerArmor.java +++ b/Mage.Sets/src/mage/cards/p/PowerArmor.java @@ -28,7 +28,7 @@ public final class PowerArmor extends CardImpl { // Domain - {3}, {tap}: Target creature gets +1/+1 until end of turn for each basic land type among lands you control. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect( - new DomainValue(), new DomainValue(), Duration.EndOfTurn), new TapSourceCost()); + DomainValue.REGULAR, DomainValue.REGULAR, Duration.EndOfTurn), new TapSourceCost()); ability.addCost(new ManaCostsImpl("{3}")); ability.addTarget(new TargetCreaturePermanent()); ability.setAbilityWord(AbilityWord.DOMAIN); diff --git a/Mage.Sets/src/mage/cards/p/PrismaticGeoscope.java b/Mage.Sets/src/mage/cards/p/PrismaticGeoscope.java index 9ac57bc9f9..eebdde8a12 100644 --- a/Mage.Sets/src/mage/cards/p/PrismaticGeoscope.java +++ b/Mage.Sets/src/mage/cards/p/PrismaticGeoscope.java @@ -28,7 +28,7 @@ public final class PrismaticGeoscope extends CardImpl { // <i>Domain</i> — {T}: Add X mana in any combination of colors, where X is the number of basic land types among lands you control. Ability ability = new DynamicManaAbility( - new Mana(0, 0, 0, 0, 0, 0, 1, 0), new DomainValue(), new TapSourceCost(), + new Mana(0, 0, 0, 0, 0, 0, 1, 0), DomainValue.REGULAR, new TapSourceCost(), "Add X mana in any combination of colors," + " where X is the number of basic land types among lands you control." ); diff --git a/Mage.Sets/src/mage/cards/s/SamitePilgrim.java b/Mage.Sets/src/mage/cards/s/SamitePilgrim.java index 7dc7467ba7..d5c30cbce2 100644 --- a/Mage.Sets/src/mage/cards/s/SamitePilgrim.java +++ b/Mage.Sets/src/mage/cards/s/SamitePilgrim.java @@ -65,7 +65,7 @@ class SamitePilgrimPreventDamageToTargetEffect extends PreventionEffectImpl { @Override public void init(Ability source, Game game) { super.init(source, game); - amountToPrevent = new DomainValue().calculate(game, source, this); + amountToPrevent = DomainValue.REGULAR.calculate(game, source, this); } @Override diff --git a/Mage.Sets/src/mage/cards/s/ScionOfDraco.java b/Mage.Sets/src/mage/cards/s/ScionOfDraco.java index 4e22d667d2..e33c1a013c 100644 --- a/Mage.Sets/src/mage/cards/s/ScionOfDraco.java +++ b/Mage.Sets/src/mage/cards/s/ScionOfDraco.java @@ -4,7 +4,6 @@ import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.DomainValue; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.cost.SpellCostReductionForEachSourceEffect; @@ -24,8 +23,6 @@ import java.util.UUID; */ public final class ScionOfDraco extends CardImpl { - private static final DynamicValue xValue = new DomainValue(); - public ScionOfDraco(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{12}"); @@ -35,7 +32,7 @@ public final class ScionOfDraco extends CardImpl { // Domain — This spell costs {2} less to cast for each basic land type among lands you control. this.addAbility(new SimpleStaticAbility(Zone.ALL, - new SpellCostReductionForEachSourceEffect(2, xValue) + new SpellCostReductionForEachSourceEffect(2, DomainValue.REGULAR) .setText("this spell costs {2} less to cast for each basic land type among lands you control") ).addHint(DomainHint.instance).setAbilityWord(AbilityWord.DOMAIN)); diff --git a/Mage.Sets/src/mage/cards/s/SporeBurst.java b/Mage.Sets/src/mage/cards/s/SporeBurst.java index c4becc06c7..1765f54726 100644 --- a/Mage.Sets/src/mage/cards/s/SporeBurst.java +++ b/Mage.Sets/src/mage/cards/s/SporeBurst.java @@ -22,7 +22,7 @@ public final class SporeBurst extends CardImpl { // Domain - Create a 1/1 green Saproling creature token for each basic land type among lands you control. - this.getSpellAbility().addEffect(new CreateTokenEffect(new SaprolingToken(), new DomainValue())); + this.getSpellAbility().addEffect(new CreateTokenEffect(new SaprolingToken(), DomainValue.REGULAR)); this.getSpellAbility().addHint(DomainHint.instance); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); } diff --git a/Mage.Sets/src/mage/cards/s/Stratadon.java b/Mage.Sets/src/mage/cards/s/Stratadon.java index c786703af2..8a49cb4b56 100644 --- a/Mage.Sets/src/mage/cards/s/Stratadon.java +++ b/Mage.Sets/src/mage/cards/s/Stratadon.java @@ -61,7 +61,7 @@ class StratadonCostReductionEffect extends CostModificationEffectImpl { @Override public boolean apply(Game game, Ability source, Ability abilityToModify) { - CardUtil.reduceCost(abilityToModify, new DomainValue().calculate(game, source, this)); + CardUtil.reduceCost(abilityToModify, DomainValue.REGULAR.calculate(game, source, this)); return true; } diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfUnity.java b/Mage.Sets/src/mage/cards/s/StrengthOfUnity.java index 324c9db937..fbd5f118e8 100644 --- a/Mage.Sets/src/mage/cards/s/StrengthOfUnity.java +++ b/Mage.Sets/src/mage/cards/s/StrengthOfUnity.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.DomainValue; @@ -13,21 +11,21 @@ import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; -/** - * - * @author LoneFox +import java.util.UUID; +/** + * @author LoneFox */ public final class StrengthOfUnity extends CardImpl { public StrengthOfUnity(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}"); this.subtype.add(SubType.AURA); // Enchant creature @@ -37,8 +35,7 @@ public final class StrengthOfUnity extends CardImpl { Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); // Domain - Enchanted creature gets +1/+1 for each basic land type among lands you control. - DomainValue dv = new DomainValue(); - Effect effect = new BoostEnchantedEffect(dv, dv); + Effect effect = new BoostEnchantedEffect(DomainValue.REGULAR, DomainValue.REGULAR); effect.setText("<i>Domain</i> — Enchanted creature gets +1/+1 for each basic land type among lands you control."); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect).addHint(DomainHint.instance)); } diff --git a/Mage.Sets/src/mage/cards/t/TerritorialKavu.java b/Mage.Sets/src/mage/cards/t/TerritorialKavu.java index 4b5ef1fee7..d8972a7d88 100644 --- a/Mage.Sets/src/mage/cards/t/TerritorialKavu.java +++ b/Mage.Sets/src/mage/cards/t/TerritorialKavu.java @@ -6,7 +6,6 @@ import mage.abilities.Mode; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.DiscardCardCost; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.DomainValue; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -25,8 +24,6 @@ import java.util.UUID; */ public final class TerritorialKavu extends CardImpl { - private static final DynamicValue xValue = new DomainValue(); - public TerritorialKavu(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{G}"); @@ -36,7 +33,7 @@ public final class TerritorialKavu extends CardImpl { // Domain — Territorial Kavu's power and toughness are each equal to the number of basic land types among lands you control. this.addAbility(new SimpleStaticAbility( - Zone.ALL, new SetPowerToughnessSourceEffect(xValue, Duration.EndOfGame) + Zone.ALL, new SetPowerToughnessSourceEffect(DomainValue.REGULAR, Duration.EndOfGame) ).addHint(DomainHint.instance).setAbilityWord(AbilityWord.DOMAIN)); // Whenever Territorial Kavu attacks, choose one — diff --git a/Mage.Sets/src/mage/cards/t/TribalFlames.java b/Mage.Sets/src/mage/cards/t/TribalFlames.java index dd8cebe2a1..252a4727c4 100644 --- a/Mage.Sets/src/mage/cards/t/TribalFlames.java +++ b/Mage.Sets/src/mage/cards/t/TribalFlames.java @@ -22,7 +22,7 @@ public final class TribalFlames extends CardImpl { // Domain - Tribal Flames deals X damage to any target, where X is the number of basic land types among lands you control. - this.getSpellAbility().addEffect(new DamageTargetEffect(new DomainValue())); + this.getSpellAbility().addEffect(new DamageTargetEffect(DomainValue.REGULAR)); this.getSpellAbility().addTarget(new TargetAnyTarget()); this.getSpellAbility().addHint(DomainHint.instance); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); diff --git a/Mage.Sets/src/mage/cards/t/TrompTheDomains.java b/Mage.Sets/src/mage/cards/t/TrompTheDomains.java index bea637c779..805ca2b6f6 100644 --- a/Mage.Sets/src/mage/cards/t/TrompTheDomains.java +++ b/Mage.Sets/src/mage/cards/t/TrompTheDomains.java @@ -1,22 +1,20 @@ - package mage.cards.t; -import java.util.UUID; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.DomainValue; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.hint.common.DomainHint; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.StaticFilters; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class TrompTheDomains extends CardImpl { @@ -25,15 +23,15 @@ public final class TrompTheDomains extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{G}"); // Domain - Until end of turn, creatures you control gain trample and get +1/+1 for each basic land type among lands you control. - Effect effect = new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn); - effect.setText("<i>Domain</i> — Until end of turn, creatures you control gain trample"); - this.getSpellAbility().addEffect(effect); - DynamicValue domain = new DomainValue(); - effect = new BoostControlledEffect(domain, domain, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false); - effect.setText("and get +1/+1 for each basic land type among lands you control"); - this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addEffect(new GainAbilityControlledEffect( + TrampleAbility.getInstance(), Duration.EndOfTurn + ).setText("until end of turn, creatures you control gain trample")); + this.getSpellAbility().addEffect(new BoostControlledEffect( + DomainValue.REGULAR, DomainValue.REGULAR, Duration.EndOfTurn, + StaticFilters.FILTER_PERMANENT_CREATURE, false + ).setText("and get +1/+1 for each basic land type among lands you control")); this.getSpellAbility().addHint(DomainHint.instance); - + this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); } private TrompTheDomains(final TrompTheDomains card) { diff --git a/Mage.Sets/src/mage/cards/v/VoicesFromTheVoid.java b/Mage.Sets/src/mage/cards/v/VoicesFromTheVoid.java index 8641a1a59c..497b1bae3b 100644 --- a/Mage.Sets/src/mage/cards/v/VoicesFromTheVoid.java +++ b/Mage.Sets/src/mage/cards/v/VoicesFromTheVoid.java @@ -1,6 +1,5 @@ package mage.cards.v; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.DomainValue; import mage.abilities.effects.common.discard.DiscardTargetEffect; import mage.abilities.hint.common.DomainHint; @@ -17,13 +16,11 @@ import java.util.UUID; */ public final class VoicesFromTheVoid extends CardImpl { - private static final DynamicValue xValue = new DomainValue(); - public VoicesFromTheVoid(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}"); // Domain - Target player discards a card for each basic land type among lands you control. - this.getSpellAbility().addEffect(new DiscardTargetEffect(xValue)); + this.getSpellAbility().addEffect(new DiscardTargetEffect(DomainValue.REGULAR)); this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addHint(DomainHint.instance); this.getSpellAbility().setAbilityWord(AbilityWord.DOMAIN); diff --git a/Mage.Sets/src/mage/cards/w/WanderingGoblins.java b/Mage.Sets/src/mage/cards/w/WanderingGoblins.java index fce3b923c0..a14d6b8a04 100644 --- a/Mage.Sets/src/mage/cards/w/WanderingGoblins.java +++ b/Mage.Sets/src/mage/cards/w/WanderingGoblins.java @@ -3,7 +3,6 @@ package mage.cards.w; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.DomainValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continuous.BoostSourceEffect; @@ -22,8 +21,6 @@ import java.util.UUID; */ public final class WanderingGoblins extends CardImpl { - private static final DynamicValue xValue = new DomainValue(); - public WanderingGoblins(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); this.subtype.add(SubType.GOBLIN); @@ -34,7 +31,7 @@ public final class WanderingGoblins extends CardImpl { // Domain - {3}: Wandering Goblins gets +1/+0 until end of turn for each basic land type among lands you control. this.addAbility(new SimpleActivatedAbility(new BoostSourceEffect( - xValue, StaticValue.get(0), Duration.EndOfTurn, true + DomainValue.REGULAR, StaticValue.get(0), Duration.EndOfTurn, true ), new GenericManaCost(3)).addHint(DomainHint.instance).setAbilityWord(AbilityWord.DOMAIN)); } diff --git a/Mage.Sets/src/mage/cards/w/WanderingStream.java b/Mage.Sets/src/mage/cards/w/WanderingStream.java index c876fde215..92f797f0c9 100644 --- a/Mage.Sets/src/mage/cards/w/WanderingStream.java +++ b/Mage.Sets/src/mage/cards/w/WanderingStream.java @@ -21,7 +21,7 @@ public final class WanderingStream extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}"); // Domain - You gain 2 life for each basic land type among lands you control. - Effect effect = new GainLifeEffect(new MultipliedValue(new DomainValue(), 2)); + Effect effect = new GainLifeEffect(new MultipliedValue(DomainValue.REGULAR, 2)); effect.setText("<i>Domain</i> — You gain 2 life for each basic land type among lands you control"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addHint(DomainHint.instance); diff --git a/Mage.Sets/src/mage/cards/w/WayfaringGiant.java b/Mage.Sets/src/mage/cards/w/WayfaringGiant.java index 93ba8004d7..cd0c0ae5a8 100644 --- a/Mage.Sets/src/mage/cards/w/WayfaringGiant.java +++ b/Mage.Sets/src/mage/cards/w/WayfaringGiant.java @@ -1,38 +1,35 @@ - package mage.cards.w; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.DomainValue; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.hint.common.DomainHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.SubType; + +import java.util.UUID; /** - * * @author LoneFox - */ public final class WayfaringGiant extends CardImpl { public WayfaringGiant(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}"); this.subtype.add(SubType.GIANT); this.power = new MageInt(1); this.toughness = new MageInt(3); // Domain - Wayfaring Giant gets +1/+1 for each basic land type among lands you control. - DomainValue dv = new DomainValue(); - Effect effect = new BoostSourceEffect(dv, dv, Duration.WhileOnBattlefield); - effect.setText("<i>Domain</i> — {this} gets +1/+1 for each basic land type among lands you control."); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect).addHint(DomainHint.instance)); + this.addAbility(new SimpleStaticAbility(new BoostSourceEffect( + DomainValue.REGULAR, DomainValue.REGULAR, Duration.WhileOnBattlefield + ).setText("{this} gets +1/+1 for each basic land type among lands you control.")) + .addHint(DomainHint.instance).setAbilityWord(AbilityWord.DOMAIN)); } private WayfaringGiant(final WayfaringGiant card) { diff --git a/Mage.Sets/src/mage/cards/w/WorldlyCounsel.java b/Mage.Sets/src/mage/cards/w/WorldlyCounsel.java index 204e8fa281..a1a10324ef 100644 --- a/Mage.Sets/src/mage/cards/w/WorldlyCounsel.java +++ b/Mage.Sets/src/mage/cards/w/WorldlyCounsel.java @@ -66,7 +66,7 @@ class WorldlyCounselEffect extends OneShotEffect { return false; } - Cards cards = new CardsImpl(controller.getLibrary().getTopCards(game, (new DomainValue()).calculate(game, source, this))); + Cards cards = new CardsImpl(controller.getLibrary().getTopCards(game, (DomainValue.REGULAR).calculate(game, source, this))); controller.lookAtCards(source, null, cards, game); if (!cards.isEmpty()) { diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/DomainValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/DomainValue.java index 374130420e..506438da00 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/DomainValue.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/DomainValue.java @@ -14,49 +14,26 @@ import java.util.stream.Collectors; /** * @author Loki */ -public class DomainValue implements DynamicValue { - - private final int amount; - private final boolean countTargetPlayer; - private UUID playerId; - - public DomainValue() { - this(1); - } - - public DomainValue(boolean countTargetPlayer) { - this(1, countTargetPlayer); - } - - public DomainValue(int amount) { - this(amount, false); - } - - public DomainValue(int amount, boolean countTargetPlayer) { - this.amount = amount; - this.countTargetPlayer = countTargetPlayer; - } - - public DomainValue(int amount, UUID playerId) { - this(amount, false); - this.playerId = playerId; - } - - public DomainValue(final DomainValue dynamicValue) { - this.amount = dynamicValue.amount; - this.countTargetPlayer = dynamicValue.countTargetPlayer; - this.playerId = dynamicValue.playerId; - } +public enum DomainValue implements DynamicValue { + REGULAR, + TARGET, + ACTIVE; @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { UUID targetPlayer; - if (playerId != null) { - targetPlayer = playerId; - } else if (countTargetPlayer) { - targetPlayer = effect.getTargetPointer().getFirst(game, sourceAbility); - } else { - targetPlayer = sourceAbility.getControllerId(); + switch (this) { + case ACTIVE: + targetPlayer = game.getActivePlayerId(); + break; + case TARGET: + targetPlayer = effect.getTargetPointer().getFirst(game, sourceAbility); + break; + case REGULAR: + targetPlayer = sourceAbility.getControllerId(); + break; + default: + targetPlayer = null; } return game.getBattlefield() .getActivePermanents( @@ -70,26 +47,26 @@ public class DomainValue implements DynamicValue { .collect(Collectors.toSet())) .flatMap(Collection::stream) .distinct() - .mapToInt(x -> amount) + .mapToInt(x -> 1) .sum(); } @Override public DomainValue copy() { - return new DomainValue(this); + return this; } @Override public String toString() { - return String.valueOf(amount); + return "1"; } public int getAmount() { - return amount; + return 1; } @Override public String getMessage() { - return "basic land type among lands " + (countTargetPlayer ? "they control" : "you control"); + return "basic land type among lands " + (this == TARGET ? "they control" : "you control"); } }