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;
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) {

View file

@ -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) {

View file

@ -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));

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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()
));
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -1,29 +1,24 @@
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 {
@ -32,10 +27,10 @@ public final class MtendaGriffin extends CardImpl {
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);
@ -44,16 +39,13 @@ public final class MtendaGriffin extends CardImpl {
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);
}

View file

@ -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"));
}

View file

@ -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());
}