use static upkeep method for IsStepCondition

This commit is contained in:
theelk801 2025-06-16 18:00:39 -04:00
parent e19f7c22b7
commit bbbc2e5baf
12 changed files with 71 additions and 86 deletions

View file

@ -1,4 +1,3 @@
package mage.cards.c; package mage.cards.c;
import mage.MageInt; import mage.MageInt;
@ -12,12 +11,10 @@ import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffec
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.PhaseStep;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetControlledPermanent;
import java.util.UUID; import java.util.UUID;
@ -38,7 +35,7 @@ public final class CoffinPuppets extends CardImpl {
private static final Condition condition = new CompoundCondition( private static final Condition condition = new CompoundCondition(
"during your upkeep and only if you control a Swamp", "during your upkeep and only if you control a Swamp",
new PermanentsOnTheBattlefieldCondition(filter), new PermanentsOnTheBattlefieldCondition(filter),
new IsStepCondition(PhaseStep.UPKEEP) IsStepCondition.getMyUpkeep()
); );
public CoffinPuppets(UUID ownerId, CardSetInfo setInfo) { public CoffinPuppets(UUID ownerId, CardSetInfo setInfo) {

View file

@ -2,7 +2,6 @@ package mage.cards.c;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.IsStepCondition; import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalActivatedAbility; import mage.abilities.decorator.ConditionalActivatedAbility;
@ -12,7 +11,6 @@ import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.PhaseStep;
import mage.constants.SubType; import mage.constants.SubType;
import java.util.UUID; import java.util.UUID;
@ -22,8 +20,6 @@ import java.util.UUID;
*/ */
public final class ColossusOfSardia extends CardImpl { public final class ColossusOfSardia extends CardImpl {
private static final Condition condition = new IsStepCondition(PhaseStep.UPKEEP);
public ColossusOfSardia(UUID ownerId, CardSetInfo setInfo) { public ColossusOfSardia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{9}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{9}");
this.subtype.add(SubType.GOLEM); this.subtype.add(SubType.GOLEM);
@ -38,7 +34,9 @@ public final class ColossusOfSardia extends CardImpl {
this.addAbility(new SimpleStaticAbility(new DontUntapInControllersUntapStepSourceEffect())); this.addAbility(new SimpleStaticAbility(new DontUntapInControllersUntapStepSourceEffect()));
// {9}: Untap Colossus of Sardia. Activate this ability only during your upkeep. // {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) { private ColossusOfSardia(final ColossusOfSardia card) {

View file

@ -5,7 +5,6 @@ import mage.abilities.Ability;
import mage.abilities.DelayedTriggeredAbility; import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility; import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility;
import mage.abilities.common.delayed.AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility; import mage.abilities.common.delayed.AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.IsStepCondition; import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
@ -44,14 +43,13 @@ public final class CyclopeanTomb extends CardImpl {
filter.add(Predicates.not(SubType.SWAMP.getPredicate())); filter.add(Predicates.not(SubType.SWAMP.getPredicate()));
} }
private static final Condition condition = new IsStepCondition(PhaseStep.UPKEEP);
public CyclopeanTomb(UUID ownerId, CardSetInfo setInfo) { public CyclopeanTomb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); 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. // {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( 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.addCost(new TapSourceCost());
ability.addTarget(new TargetPermanent(filter)); ability.addTarget(new TargetPermanent(filter));

View file

@ -1,10 +1,7 @@
package mage.cards.e; package mage.cards.e;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
import mage.abilities.condition.common.IsStepCondition; import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.costs.Cost; 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.effects.common.counter.RemoveCounterSourceEffect;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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.counters.CounterType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class EbonPraetor extends CardImpl { 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()))); 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. // 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()), Ability ability = new LimitedTimesPerTurnActivatedAbility(
new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE), 1, new IsStepCondition(PhaseStep.UPKEEP)); Zone.BATTLEFIELD, new RemoveCounterSourceEffect(CounterType.M2M2.createInstance()),
new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE),
1, IsStepCondition.getMyUpkeep()
);
ability.addEffect(new EbonPraetorEffect()); ability.addEffect(new EbonPraetorEffect());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.e; package mage.cards.e;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.ActivateIfConditionActivatedAbility;
@ -12,12 +10,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import mage.target.common.TargetPlayerOrPlaneswalker; import mage.target.common.TargetPlayerOrPlaneswalker;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class EmberwildeAugur extends CardImpl { 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. // Sacrifice Emberwilde Augur: Emberwilde Augur deals 3 damage to target player. Activate this ability only during your upkeep.
Ability ability = new ActivateIfConditionActivatedAbility( Ability ability = new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD,
new DamageTargetEffect(3, "it"), new DamageTargetEffect(3, "it"),
new SacrificeSourceCost(), new SacrificeSourceCost(), IsStepCondition.getMyUpkeep());
new IsStepCondition(PhaseStep.UPKEEP));
ability.addTarget(new TargetPlayerOrPlaneswalker()); ability.addTarget(new TargetPlayerOrPlaneswalker());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -15,7 +15,9 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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.counters.CounterType;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; 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. // {X}: Put X vortex counters on Energy Vortex. Activate this ability only during your upkeep.
this.addAbility(new ActivateIfConditionActivatedAbility( this.addAbility(new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD,
new AddCountersSourceEffect( new AddCountersSourceEffect(
CounterType.VORTEX.createInstance(), CounterType.VORTEX.createInstance(),
GetXValue.instance, true GetXValue.instance, true
), new ManaCostsImpl<>("{X}"), ), new ManaCostsImpl<>("{X}"),
new IsStepCondition(PhaseStep.UPKEEP) IsStepCondition.getMyUpkeep()
)); ));
} }

View file

@ -1,7 +1,5 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
import mage.abilities.condition.common.IsStepCondition; import mage.abilities.condition.common.IsStepCondition;
@ -10,14 +8,13 @@ import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.PhaseStep;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetArtifactPermanent;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class GateToPhyrexia extends CardImpl { 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}"); 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. // 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), new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE),
1, new IsStepCondition(PhaseStep.UPKEEP)); 1, IsStepCondition.getMyUpkeep());
ability.addTarget(new TargetArtifactPermanent()); ability.addTarget(new TargetArtifactPermanent());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,6 +1,5 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
@ -16,21 +15,21 @@ import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.PhaseStep;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetOpponentOrPlaneswalker; import mage.target.common.TargetOpponentOrPlaneswalker;
import java.util.UUID;
/** /**
*
* @author Ketsuban * @author Ketsuban
*/ */
public final class InfernalSpawnOfEvil extends CardImpl { public final class InfernalSpawnOfEvil extends CardImpl {
public InfernalSpawnOfEvil(UUID ownerId, CardSetInfo setInfo) { 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.subtype.add(SubType.BEAST);
this.power = new MageInt(7); this.power = new MageInt(7);
@ -53,7 +52,7 @@ public final class InfernalSpawnOfEvil extends CardImpl {
new SayCost("It's coming!"), new SayCost("It's coming!"),
"Reveal {this} from your hand, Say \"It's coming!\""), "Reveal {this} from your hand, Say \"It's coming!\""),
"{1}{B}, 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)); 1, IsStepCondition.getMyUpkeep());
ability.addTarget(new TargetOpponentOrPlaneswalker()); ability.addTarget(new TargetOpponentOrPlaneswalker());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -3,6 +3,7 @@ package mage.cards.k;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.condition.CompoundCondition; import mage.abilities.condition.CompoundCondition;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.IsStepCondition; import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.condition.common.MetalcraftCondition; import mage.abilities.condition.common.MetalcraftCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
@ -13,7 +14,10 @@ import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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; import java.util.UUID;
@ -22,6 +26,11 @@ import java.util.UUID;
*/ */
public final class KuldothaPhoenix extends CardImpl { 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) { public KuldothaPhoenix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}{R}");
this.subtype.add(SubType.PHOENIX); 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. // Activate this ability only during your upkeep and only if you control three or more artifacts.
Ability ability = new ConditionalActivatedAbility(Zone.GRAVEYARD, Ability ability = new ConditionalActivatedAbility(Zone.GRAVEYARD,
new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), new ReturnSourceFromGraveyardToBattlefieldEffect(false, false),
new ManaCostsImpl<>("{4}"), new ManaCostsImpl<>("{4}"), condition
new CompoundCondition("during your upkeep and only if you control three or more artifacts",
new IsStepCondition(PhaseStep.UPKEEP), MetalcraftCondition.instance)
); );
ability.setAbilityWord(AbilityWord.METALCRAFT); ability.setAbilityWord(AbilityWord.METALCRAFT);
ability.addHint(MetalcraftHint.instance); ability.addHint(MetalcraftHint.instance);
@ -54,5 +61,4 @@ public final class KuldothaPhoenix extends CardImpl {
public KuldothaPhoenix copy() { public KuldothaPhoenix copy() {
return new KuldothaPhoenix(this); return new KuldothaPhoenix(this);
} }
} }

View file

@ -1,29 +1,24 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.condition.common.IsStepCondition; import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; 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.ReturnToHandSourceEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.PhaseStep;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.target.Target;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class MtendaGriffin extends CardImpl { public final class MtendaGriffin extends CardImpl {
@ -32,10 +27,10 @@ public final class MtendaGriffin extends CardImpl {
static { static {
filter.add(SubType.GRIFFIN.getPredicate()); filter.add(SubType.GRIFFIN.getPredicate());
} }
public MtendaGriffin(UUID ownerId, CardSetInfo setInfo) { 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.subtype.add(SubType.GRIFFIN);
this.power = new MageInt(2); this.power = new MageInt(2);
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
@ -44,16 +39,13 @@ public final class MtendaGriffin extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); 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. // {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); Ability ability = new ActivateIfConditionActivatedAbility(
effect.setText("Return Mtenda Griffin to its owner's hand"); new ReturnToHandSourceEffect(true),
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ManaCostsImpl<>("{W}"), IsStepCondition.getMyUpkeep()
effect, new ManaCostsImpl<>("{W}"), new IsStepCondition(PhaseStep.UPKEEP)); );
effect = new ReturnToHandTargetEffect();
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
effect.setText("and return target Griffin card from your graveyard to your hand"); ability.addEffect(new ReturnFromGraveyardToHandTargetEffect().concatBy("and"));
ability.addEffect(effect); ability.addTarget(new TargetCardInYourGraveyard(filter));
Target target = new TargetCardInYourGraveyard(filter);
ability.addTarget(target);
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -2,14 +2,16 @@ package mage.cards.t;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.IsStepCondition; import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.InspiredAbility; import mage.abilities.keyword.InspiredAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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.Game;
import mage.game.turn.TurnMod; import mage.game.turn.TurnMod;
import mage.game.turn.UpkeepStep; import mage.game.turn.UpkeepStep;
@ -21,8 +23,6 @@ import java.util.UUID;
*/ */
public final class TheNinthDoctor extends CardImpl { public final class TheNinthDoctor extends CardImpl {
private static final Condition condition = new IsStepCondition(PhaseStep.UNTAP);
public TheNinthDoctor(UUID ownerId, CardSetInfo setInfo) { public TheNinthDoctor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}");
this.supertype.add(SuperType.LEGENDARY); 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. // 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) this.addAbility(new InspiredAbility(new TheNinthDoctorEffect(), false, false)
.withTriggerCondition(condition) .withTriggerCondition(IsStepCondition.getMyUpkeep())
.withFlavorWord("Into the TARDIS")); .withFlavorWord("Into the TARDIS"));
} }

View file

@ -2,12 +2,10 @@
package mage.abilities.keyword; package mage.abilities.keyword;
import mage.abilities.ActivatedAbilityImpl; import mage.abilities.ActivatedAbilityImpl;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.IsStepCondition; import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.costs.Cost; import mage.abilities.costs.Cost;
import mage.abilities.costs.common.RevealSourceFromYourHandCost; import mage.abilities.costs.common.RevealSourceFromYourHandCost;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.constants.PhaseStep;
import mage.constants.Zone; import mage.constants.Zone;
/** /**
@ -26,12 +24,10 @@ import mage.constants.Zone;
*/ */
public class ForecastAbility extends ActivatedAbilityImpl { public class ForecastAbility extends ActivatedAbilityImpl {
private static final Condition upkeepCondition = new IsStepCondition(PhaseStep.UPKEEP, true);
public ForecastAbility(Effect effect, Cost cost) { public ForecastAbility(Effect effect, Cost cost) {
super(Zone.HAND, effect, cost); super(Zone.HAND, effect, cost);
this.maxActivationsPerTurn = 1; this.maxActivationsPerTurn = 1;
this.condition = upkeepCondition; this.condition = IsStepCondition.getMyUpkeep();
this.addCost(new RevealSourceFromYourHandCost()); this.addCost(new RevealSourceFromYourHandCost());
} }