diff --git a/Mage.Sets/src/mage/cards/u/UrzasMine.java b/Mage.Sets/src/mage/cards/u/UrzasMine.java index ed1530503e9..f4b4470351a 100644 --- a/Mage.Sets/src/mage/cards/u/UrzasMine.java +++ b/Mage.Sets/src/mage/cards/u/UrzasMine.java @@ -1,8 +1,6 @@ - package mage.cards.u; import mage.Mana; -import mage.abilities.Ability; import mage.abilities.dynamicvalue.common.UrzaTerrainValue; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; @@ -13,21 +11,22 @@ import mage.constants.SubType; import java.util.UUID; /** - * * @author Melkhior */ public final class UrzasMine extends CardImpl { + public UrzasMine(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.LAND},""); + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); this.subtype.add(SubType.URZAS, SubType.MINE); // {T}: Add {C}. If you control an Urza's Power-Plant and an Urza's Tower, add {C}{C} instead. - Ability urzaManaAbility = new DynamicManaAbility(Mana.ColorlessMana(1), new UrzaTerrainValue(2), - "Add {C}. If you control an Urza's Power-Plant and an Urza's Tower, add {C}{C} instead"); - this.addAbility(urzaManaAbility); + this.addAbility(new DynamicManaAbility( + Mana.ColorlessMana(1), UrzaTerrainValue.MINE, + "Add {C}. If you control an Urza's Power-Plant and an Urza's Tower, add {C}{C} instead" + )); } - public UrzasMine(final UrzasMine card) { + private UrzasMine(final UrzasMine card) { super(card); } diff --git a/Mage.Sets/src/mage/cards/u/UrzasPowerPlant.java b/Mage.Sets/src/mage/cards/u/UrzasPowerPlant.java index bb10e205dca..1ed40cbcc9c 100644 --- a/Mage.Sets/src/mage/cards/u/UrzasPowerPlant.java +++ b/Mage.Sets/src/mage/cards/u/UrzasPowerPlant.java @@ -1,8 +1,6 @@ - package mage.cards.u; import mage.Mana; -import mage.abilities.Ability; import mage.abilities.dynamicvalue.common.UrzaTerrainValue; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; @@ -13,21 +11,22 @@ import mage.constants.SubType; import java.util.UUID; /** - * * @author Melkhior */ public final class UrzasPowerPlant extends CardImpl { + public UrzasPowerPlant(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.LAND},""); + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); this.subtype.add(SubType.URZAS, SubType.POWER_PLANT); // {T}: Add {C}. If you control an Urza's Mine and an Urza's Tower, add {C}{C} instead. - Ability urzaManaAbility = new DynamicManaAbility(Mana.ColorlessMana(1), new UrzaTerrainValue(2), - "Add {C}. If you control an Urza's Mine and an Urza's Tower, add {C}{C} instead"); - this.addAbility(urzaManaAbility); + this.addAbility(new DynamicManaAbility( + Mana.ColorlessMana(1), UrzaTerrainValue.POWER_PLANT, + "Add {C}. If you control an Urza's Mine and an Urza's Tower, add {C}{C} instead" + )); } - public UrzasPowerPlant(final UrzasPowerPlant card) { + private UrzasPowerPlant(final UrzasPowerPlant card) { super(card); } diff --git a/Mage.Sets/src/mage/cards/u/UrzasTower.java b/Mage.Sets/src/mage/cards/u/UrzasTower.java index 230c5711a71..33660e89813 100644 --- a/Mage.Sets/src/mage/cards/u/UrzasTower.java +++ b/Mage.Sets/src/mage/cards/u/UrzasTower.java @@ -1,8 +1,6 @@ - package mage.cards.u; import mage.Mana; -import mage.abilities.Ability; import mage.abilities.dynamicvalue.common.UrzaTerrainValue; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; @@ -13,21 +11,22 @@ import mage.constants.SubType; import java.util.UUID; /** - * * @author Melkhior */ public final class UrzasTower extends CardImpl { + public UrzasTower(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.LAND},""); + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); this.subtype.add(SubType.URZAS, SubType.TOWER); // {T}: Add {C}. If you control an Urza's Mine and an Urza's Power-Plant, add {C}{C}{C} instead. - Ability urzaManaAbility = new DynamicManaAbility(Mana.ColorlessMana(1), new UrzaTerrainValue(3), - "Add {C}. If you control an Urza's Mine and an Urza's Power-Plant, add {C}{C}{C} instead"); - this.addAbility(urzaManaAbility); + this.addAbility(new DynamicManaAbility( + Mana.ColorlessMana(1), UrzaTerrainValue.TOWER, + "Add {C}. If you control an Urza's Mine and an Urza's Power-Plant, add {C}{C}{C} instead" + )); } - public UrzasTower(final UrzasTower card) { + private UrzasTower(final UrzasTower card) { super(card); } diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java index d5d6fbbdc0a..597376efe20 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java @@ -4,49 +4,55 @@ import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; import mage.constants.SubType; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.FilterPermanent; import mage.game.Game; -public class UrzaTerrainValue implements DynamicValue { +public enum UrzaTerrainValue implements DynamicValue { + MINE(2, SubType.MINE), + TOWER(3, SubType.TOWER), + POWER_PLANT(2, SubType.POWER_PLANT); private final int value; + private final SubType subType; - public UrzaTerrainValue(int value) { + private static final FilterPermanent mineFilter = new FilterPermanent(SubType.MINE, ""); + private static final FilterPermanent towerFilter = new FilterPermanent(SubType.MINE, ""); + private static final FilterPermanent powerPlantFilter = new FilterPermanent(SubType.POWER_PLANT, ""); + + static { + mineFilter.add(SubType.URZAS.getPredicate()); + towerFilter.add(SubType.URZAS.getPredicate()); + powerPlantFilter.add(SubType.URZAS.getPredicate()); + } + + UrzaTerrainValue(int value, SubType subType) { this.value = value; + this.subType = subType; } @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { - FilterControlledPermanent pp = new FilterControlledPermanent("Urza's Power Plant"); - pp.add(SubType.URZAS.getPredicate()); - pp.add(SubType.POWER_PLANT.getPredicate()); - PermanentsOnBattlefieldCount ppP = new PermanentsOnBattlefieldCount(pp); - if (ppP.calculate(game, sourceAbility, effect) < 1) { + if (subType == SubType.MINE || game.getBattlefield().countAll( + mineFilter, sourceAbility.getControllerId(), game + ) < 1) { return 1; } - - FilterControlledPermanent to = new FilterControlledPermanent("Urza's Tower"); - to.add(SubType.URZAS.getPredicate()); - to.add(SubType.TOWER.getPredicate()); - PermanentsOnBattlefieldCount toP = new PermanentsOnBattlefieldCount(to); - if (toP.calculate(game, sourceAbility, effect) < 1) { + if (subType == SubType.TOWER || game.getBattlefield().countAll( + towerFilter, sourceAbility.getControllerId(), game + ) < 1) { return 1; } - - FilterControlledPermanent mi = new FilterControlledPermanent("Urza's Mine"); - mi.add(SubType.URZAS.getPredicate()); - mi.add(SubType.MINE.getPredicate()); - PermanentsOnBattlefieldCount miP = new PermanentsOnBattlefieldCount(mi); - if (miP.calculate(game, sourceAbility, effect) < 1) { + if (subType == SubType.POWER_PLANT || game.getBattlefield().countAll( + powerPlantFilter, sourceAbility.getControllerId(), game + ) < 1) { return 1; } - return value; } @Override public UrzaTerrainValue copy() { - return new UrzaTerrainValue(value); + return this; } @Override