diff --git a/Mage.Sets/src/mage/cards/c/CoffinPuppets.java b/Mage.Sets/src/mage/cards/c/CoffinPuppets.java index 7ca089511df..4e8fa10b7e7 100644 --- a/Mage.Sets/src/mage/cards/c/CoffinPuppets.java +++ b/Mage.Sets/src/mage/cards/c/CoffinPuppets.java @@ -1,4 +1,3 @@ - package mage.cards.c; import mage.MageInt; @@ -12,12 +11,10 @@ import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffec import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.PhaseStep; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledPermanent; -import mage.target.common.TargetControlledPermanent; import java.util.UUID; @@ -38,7 +35,7 @@ public final class CoffinPuppets extends CardImpl { private static final Condition condition = new CompoundCondition( "during your upkeep and only if you control a Swamp", new PermanentsOnTheBattlefieldCondition(filter), - new IsStepCondition(PhaseStep.UPKEEP) + IsStepCondition.getMyUpkeep() ); public CoffinPuppets(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ColossusOfSardia.java b/Mage.Sets/src/mage/cards/c/ColossusOfSardia.java index 1e96f57f515..2556f9c3dd9 100644 --- a/Mage.Sets/src/mage/cards/c/ColossusOfSardia.java +++ b/Mage.Sets/src/mage/cards/c/ColossusOfSardia.java @@ -2,7 +2,6 @@ package mage.cards.c; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.condition.Condition; import mage.abilities.condition.common.IsStepCondition; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.decorator.ConditionalActivatedAbility; @@ -12,7 +11,6 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.PhaseStep; import mage.constants.SubType; import java.util.UUID; @@ -22,8 +20,6 @@ import java.util.UUID; */ public final class ColossusOfSardia extends CardImpl { - private static final Condition condition = new IsStepCondition(PhaseStep.UPKEEP); - public ColossusOfSardia(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{9}"); this.subtype.add(SubType.GOLEM); @@ -38,7 +34,9 @@ public final class ColossusOfSardia extends CardImpl { this.addAbility(new SimpleStaticAbility(new DontUntapInControllersUntapStepSourceEffect())); // {9}: Untap Colossus of Sardia. Activate this ability only during your upkeep. - this.addAbility(new ConditionalActivatedAbility(new UntapSourceEffect(), new GenericManaCost(9), condition)); + this.addAbility(new ConditionalActivatedAbility( + new UntapSourceEffect(), new GenericManaCost(9), IsStepCondition.getMyUpkeep() + )); } private ColossusOfSardia(final ColossusOfSardia card) { diff --git a/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java b/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java index 7c084f8a557..1922f676a54 100644 --- a/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java +++ b/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java @@ -5,7 +5,6 @@ import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility; import mage.abilities.common.delayed.AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility; -import mage.abilities.condition.Condition; import mage.abilities.condition.common.IsStepCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; @@ -44,14 +43,13 @@ public final class CyclopeanTomb extends CardImpl { filter.add(Predicates.not(SubType.SWAMP.getPredicate())); } - private static final Condition condition = new IsStepCondition(PhaseStep.UPKEEP); - public CyclopeanTomb(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); // {2}, {tap}: Put a mire counter on target non-Swamp land. That land is a Swamp for as long as it has a mire counter on it. Activate this ability only during your upkeep. Ability ability = new ConditionalActivatedAbility( - new AddCountersTargetEffect(CounterType.MIRE.createInstance()), new GenericManaCost(2), condition + new AddCountersTargetEffect(CounterType.MIRE.createInstance()), + new GenericManaCost(2), IsStepCondition.getMyUpkeep() ); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetPermanent(filter)); diff --git a/Mage.Sets/src/mage/cards/e/EbonPraetor.java b/Mage.Sets/src/mage/cards/e/EbonPraetor.java index 46fbd45637e..40c076b68fe 100644 --- a/Mage.Sets/src/mage/cards/e/EbonPraetor.java +++ b/Mage.Sets/src/mage/cards/e/EbonPraetor.java @@ -1,10 +1,7 @@ - package mage.cards.e; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.condition.common.IsStepCondition; import mage.abilities.costs.Cost; @@ -14,16 +11,21 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.TrampleAbility; +import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author fireshoes */ public final class EbonPraetor extends CardImpl { @@ -45,8 +47,11 @@ public final class EbonPraetor extends CardImpl { this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.M2M2.createInstance()))); // Sacrifice a creature: Remove a -2/-2 counter from Ebon Praetor. If the sacrificed creature was a Thrull, put a +1/+0 counter on Ebon Praetor. Activate this ability only during your upkeep and only once each turn. - Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new RemoveCounterSourceEffect(CounterType.M2M2.createInstance()), - new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE), 1, new IsStepCondition(PhaseStep.UPKEEP)); + Ability ability = new LimitedTimesPerTurnActivatedAbility( + Zone.BATTLEFIELD, new RemoveCounterSourceEffect(CounterType.M2M2.createInstance()), + new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE), + 1, IsStepCondition.getMyUpkeep() + ); ability.addEffect(new EbonPraetorEffect()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java b/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java index f4fd107c7d4..f922013091a 100644 --- a/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java +++ b/Mage.Sets/src/mage/cards/e/EmberwildeAugur.java @@ -1,7 +1,5 @@ - package mage.cards.e; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; @@ -12,12 +10,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.PhaseStep; -import mage.constants.Zone; import mage.target.common.TargetPlayerOrPlaneswalker; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class EmberwildeAugur extends CardImpl { @@ -32,10 +29,8 @@ public final class EmberwildeAugur extends CardImpl { // Sacrifice Emberwilde Augur: Emberwilde Augur deals 3 damage to target player. Activate this ability only during your upkeep. Ability ability = new ActivateIfConditionActivatedAbility( - Zone.BATTLEFIELD, new DamageTargetEffect(3, "it"), - new SacrificeSourceCost(), - new IsStepCondition(PhaseStep.UPKEEP)); + new SacrificeSourceCost(), IsStepCondition.getMyUpkeep()); ability.addTarget(new TargetPlayerOrPlaneswalker()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EnergyVortex.java b/Mage.Sets/src/mage/cards/e/EnergyVortex.java index 017a8a5e11a..daf465e579b 100644 --- a/Mage.Sets/src/mage/cards/e/EnergyVortex.java +++ b/Mage.Sets/src/mage/cards/e/EnergyVortex.java @@ -15,7 +15,9 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.TargetController; import mage.counters.CounterType; import mage.game.Game; import mage.game.permanent.Permanent; @@ -49,12 +51,11 @@ public final class EnergyVortex extends CardImpl { // {X}: Put X vortex counters on Energy Vortex. Activate this ability only during your upkeep. this.addAbility(new ActivateIfConditionActivatedAbility( - Zone.BATTLEFIELD, new AddCountersSourceEffect( CounterType.VORTEX.createInstance(), GetXValue.instance, true ), new ManaCostsImpl<>("{X}"), - new IsStepCondition(PhaseStep.UPKEEP) + IsStepCondition.getMyUpkeep() )); } diff --git a/Mage.Sets/src/mage/cards/g/GateToPhyrexia.java b/Mage.Sets/src/mage/cards/g/GateToPhyrexia.java index fee42e3c657..1ac461a9523 100644 --- a/Mage.Sets/src/mage/cards/g/GateToPhyrexia.java +++ b/Mage.Sets/src/mage/cards/g/GateToPhyrexia.java @@ -1,7 +1,5 @@ - package mage.cards.g; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.condition.common.IsStepCondition; @@ -10,14 +8,13 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.PhaseStep; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.target.common.TargetArtifactPermanent; -import mage.target.common.TargetControlledCreaturePermanent; + +import java.util.UUID; /** - * * @author fireshoes */ public final class GateToPhyrexia extends CardImpl { @@ -26,9 +23,10 @@ public final class GateToPhyrexia extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}"); // Sacrifice a creature: Destroy target artifact. Activate this ability only during your upkeep and only once each turn. - Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), + Ability ability = new LimitedTimesPerTurnActivatedAbility( + Zone.BATTLEFIELD, new DestroyTargetEffect(), new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE), - 1, new IsStepCondition(PhaseStep.UPKEEP)); + 1, IsStepCondition.getMyUpkeep()); ability.addTarget(new TargetArtifactPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/InfernalSpawnOfEvil.java b/Mage.Sets/src/mage/cards/i/InfernalSpawnOfEvil.java index fed4b3f46ec..d4f5c352f5f 100644 --- a/Mage.Sets/src/mage/cards/i/InfernalSpawnOfEvil.java +++ b/Mage.Sets/src/mage/cards/i/InfernalSpawnOfEvil.java @@ -1,6 +1,5 @@ package mage.cards.i; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; @@ -16,21 +15,21 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.PhaseStep; import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetOpponentOrPlaneswalker; +import java.util.UUID; + /** - * * @author Ketsuban */ public final class InfernalSpawnOfEvil extends CardImpl { public InfernalSpawnOfEvil(UUID ownerId, CardSetInfo setInfo) { - super(ownerId, setInfo, new CardType[] { CardType.CREATURE }, "{6}{B}{B}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{B}{B}{B}"); this.subtype.add(SubType.BEAST); this.power = new MageInt(7); @@ -47,13 +46,13 @@ public final class InfernalSpawnOfEvil extends CardImpl { // Activate this ability only during your upkeep and only once each turn. Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.HAND, new DamageTargetEffect(1), new CompositeCost( - new ManaCostsImpl<>("{1}{B}"), - new CompositeCost( - new RevealSourceFromYourHandCost(), - new SayCost("It's coming!"), - "Reveal {this} from your hand, Say \"It's coming!\""), - "{1}{B}, Reveal {this} from your hand, Say \"It's coming!\""), - 1, new IsStepCondition(PhaseStep.UPKEEP, true)); + new ManaCostsImpl<>("{1}{B}"), + new CompositeCost( + new RevealSourceFromYourHandCost(), + new SayCost("It's coming!"), + "Reveal {this} from your hand, Say \"It's coming!\""), + "{1}{B}, Reveal {this} from your hand, Say \"It's coming!\""), + 1, IsStepCondition.getMyUpkeep()); ability.addTarget(new TargetOpponentOrPlaneswalker()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java b/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java index cebeb77a74d..4699697a4d8 100644 --- a/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java +++ b/Mage.Sets/src/mage/cards/k/KuldothaPhoenix.java @@ -3,6 +3,7 @@ package mage.cards.k; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.condition.CompoundCondition; +import mage.abilities.condition.Condition; import mage.abilities.condition.common.IsStepCondition; import mage.abilities.condition.common.MetalcraftCondition; import mage.abilities.costs.mana.ManaCostsImpl; @@ -13,7 +14,10 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.AbilityWord; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.Zone; import java.util.UUID; @@ -22,6 +26,11 @@ import java.util.UUID; */ public final class KuldothaPhoenix extends CardImpl { + private static final Condition condition = new CompoundCondition( + "during your upkeep and only if you control three or more artifacts", + IsStepCondition.getMyUpkeep(), MetalcraftCondition.instance + ); + public KuldothaPhoenix(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}{R}"); this.subtype.add(SubType.PHOENIX); @@ -37,9 +46,7 @@ public final class KuldothaPhoenix extends CardImpl { // Activate this ability only during your upkeep and only if you control three or more artifacts. Ability ability = new ConditionalActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), - new ManaCostsImpl<>("{4}"), - new CompoundCondition("during your upkeep and only if you control three or more artifacts", - new IsStepCondition(PhaseStep.UPKEEP), MetalcraftCondition.instance) + new ManaCostsImpl<>("{4}"), condition ); ability.setAbilityWord(AbilityWord.METALCRAFT); ability.addHint(MetalcraftHint.instance); @@ -54,5 +61,4 @@ public final class KuldothaPhoenix extends CardImpl { public KuldothaPhoenix copy() { return new KuldothaPhoenix(this); } - -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/m/MtendaGriffin.java b/Mage.Sets/src/mage/cards/m/MtendaGriffin.java index d79901ea18b..1813bd7cea5 100644 --- a/Mage.Sets/src/mage/cards/m/MtendaGriffin.java +++ b/Mage.Sets/src/mage/cards/m/MtendaGriffin.java @@ -1,59 +1,51 @@ - package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.condition.common.IsStepCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.Effect; +import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; -import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.PhaseStep; import mage.constants.SubType; -import mage.constants.Zone; import mage.filter.FilterCard; -import mage.target.Target; import mage.target.common.TargetCardInYourGraveyard; +import java.util.UUID; + /** - * * @author fireshoes */ public final class MtendaGriffin extends CardImpl { - + private static final FilterCard filter = new FilterCard("Griffin card from your graveyard"); static { filter.add(SubType.GRIFFIN.getPredicate()); -} + } public MtendaGriffin(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); this.subtype.add(SubType.GRIFFIN); this.power = new MageInt(2); this.toughness = new MageInt(2); // Flying this.addAbility(FlyingAbility.getInstance()); - + // {W}, {tap}: Return Mtenda Griffin to its owner's hand and return target Griffin card from your graveyard to your hand. Activate this ability only during your upkeep. - Effect effect = new ReturnToHandSourceEffect(true); - effect.setText("Return Mtenda Griffin to its owner's hand"); - Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, - effect, new ManaCostsImpl<>("{W}"), new IsStepCondition(PhaseStep.UPKEEP)); - effect = new ReturnToHandTargetEffect(); + Ability ability = new ActivateIfConditionActivatedAbility( + new ReturnToHandSourceEffect(true), + new ManaCostsImpl<>("{W}"), IsStepCondition.getMyUpkeep() + ); ability.addCost(new TapSourceCost()); - effect.setText("and return target Griffin card from your graveyard to your hand"); - ability.addEffect(effect); - Target target = new TargetCardInYourGraveyard(filter); - ability.addTarget(target); + ability.addEffect(new ReturnFromGraveyardToHandTargetEffect().concatBy("and")); + ability.addTarget(new TargetCardInYourGraveyard(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TheNinthDoctor.java b/Mage.Sets/src/mage/cards/t/TheNinthDoctor.java index 9b791bfdeb7..eaa7ab95595 100644 --- a/Mage.Sets/src/mage/cards/t/TheNinthDoctor.java +++ b/Mage.Sets/src/mage/cards/t/TheNinthDoctor.java @@ -2,14 +2,16 @@ package mage.cards.t; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.condition.Condition; import mage.abilities.condition.common.IsStepCondition; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.InspiredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.game.Game; import mage.game.turn.TurnMod; import mage.game.turn.UpkeepStep; @@ -21,8 +23,6 @@ import java.util.UUID; */ public final class TheNinthDoctor extends CardImpl { - private static final Condition condition = new IsStepCondition(PhaseStep.UNTAP); - public TheNinthDoctor(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}"); this.supertype.add(SuperType.LEGENDARY); @@ -35,7 +35,7 @@ public final class TheNinthDoctor extends CardImpl { // Into the TARDIS — Whenever The Ninth Doctor becomes untapped during your untap step, you get an additional upkeep step after this step. this.addAbility(new InspiredAbility(new TheNinthDoctorEffect(), false, false) - .withTriggerCondition(condition) + .withTriggerCondition(IsStepCondition.getMyUpkeep()) .withFlavorWord("Into the TARDIS")); } diff --git a/Mage/src/main/java/mage/abilities/keyword/ForecastAbility.java b/Mage/src/main/java/mage/abilities/keyword/ForecastAbility.java index 00e28429ab3..e4eb9ddb428 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ForecastAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ForecastAbility.java @@ -2,12 +2,10 @@ package mage.abilities.keyword; import mage.abilities.ActivatedAbilityImpl; -import mage.abilities.condition.Condition; import mage.abilities.condition.common.IsStepCondition; import mage.abilities.costs.Cost; import mage.abilities.costs.common.RevealSourceFromYourHandCost; import mage.abilities.effects.Effect; -import mage.constants.PhaseStep; import mage.constants.Zone; /** @@ -26,12 +24,10 @@ import mage.constants.Zone; */ public class ForecastAbility extends ActivatedAbilityImpl { - private static final Condition upkeepCondition = new IsStepCondition(PhaseStep.UPKEEP, true); - public ForecastAbility(Effect effect, Cost cost) { super(Zone.HAND, effect, cost); this.maxActivationsPerTurn = 1; - this.condition = upkeepCondition; + this.condition = IsStepCondition.getMyUpkeep(); this.addCost(new RevealSourceFromYourHandCost()); }