remove timing argument from ActivateIfConditionActivatedAbility

This commit is contained in:
theelk801 2025-06-16 15:49:41 -04:00
parent 72551143a3
commit fd371c8932
9 changed files with 35 additions and 78 deletions

View file

@ -41,8 +41,8 @@ public final class BalustradeWurm extends CardImpl {
this.addAbility(new ActivateIfConditionActivatedAbility(
Zone.GRAVEYARD,
new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(CounterType.FINALITY.createInstance(), false),
new ManaCostsImpl<>("{2}{G}{G}"), DeliriumCondition.instance, TimingRule.SORCERY
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
new ManaCostsImpl<>("{2}{G}{G}"), DeliriumCondition.instance
).setTiming(TimingRule.SORCERY).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private BalustradeWurm(final BalustradeWurm card) {

View file

@ -30,8 +30,8 @@ public final class ResurrectedCultist extends CardImpl {
this.addAbility(new ActivateIfConditionActivatedAbility(
Zone.GRAVEYARD,
new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(CounterType.FINALITY.createInstance(), false),
new ManaCostsImpl<>("{2}{B}{B}"), DeliriumCondition.instance, TimingRule.SORCERY
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
new ManaCostsImpl<>("{2}{B}{B}"), DeliriumCondition.instance
).setTiming(TimingRule.SORCERY).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private ResurrectedCultist(final ResurrectedCultist card) {

View file

@ -12,7 +12,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TimingRule;
import mage.constants.Zone;
import mage.game.permanent.token.AngelToken;
import java.util.UUID;
@ -38,10 +37,8 @@ public final class SpeakerOfTheHeavens extends CardImpl {
// {T}: Create a 4/4 white Angel creature token with flying. Activate only if you have at least 7 more life than your starting life total and only as a sorcery.
this.addAbility(new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD, new CreateTokenEffect(new AngelToken()),
new TapSourceCost(), MoreThanStartingLifeTotalCondition.SEVEN,
TimingRule.SORCERY
));
new CreateTokenEffect(new AngelToken()), new TapSourceCost(), MoreThanStartingLifeTotalCondition.SEVEN
).setTiming(TimingRule.SORCERY));
}
private SpeakerOfTheHeavens(final SpeakerOfTheHeavens card) {
@ -52,4 +49,4 @@ public final class SpeakerOfTheHeavens extends CardImpl {
public SpeakerOfTheHeavens copy() {
return new SpeakerOfTheHeavens(this);
}
}
}

View file

@ -11,7 +11,6 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.TimingRule;
import mage.constants.Zone;
import mage.game.Game;
import mage.watchers.common.PlayerAttackedWatcher;
@ -33,12 +32,8 @@ public final class TempleOfCivilization extends CardImpl {
// {2}{W}, {T}: Transform Temple of Civilization. Activate only if you attacked with three or more creatures this turn and only as a sorcery.
Ability ability = new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD,
new TransformSourceEffect(),
new ManaCostsImpl<>("{2}{W}"),
TempleOfCivilizationCondition.instance,
TimingRule.SORCERY
);
new TransformSourceEffect(), new ManaCostsImpl<>("{2}{W}"), TempleOfCivilizationCondition.instance
).setTiming(TimingRule.SORCERY);
ability.addCost(new TapSourceCost());
this.addAbility(ability, new PlayerAttackedWatcher());
}

View file

@ -2,20 +2,19 @@ package mage.cards.t;
import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.condition.IntCompareCondition;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.PermanentsYouControlCount;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.hint.common.PermanentsYouControlHint;
import mage.abilities.mana.GreenManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.TimingRule;
import mage.constants.Zone;
import mage.game.Game;
import mage.filter.common.FilterControlledPermanent;
import java.util.UUID;
@ -24,6 +23,10 @@ import java.util.UUID;
*/
public final class TempleOfCultivation extends CardImpl {
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
new FilterControlledPermanent("you control ten or more permanents"), ComparisonType.MORE_THAN, 9
);
public TempleOfCultivation(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
this.nightCard = true;
@ -35,15 +38,10 @@ public final class TempleOfCultivation extends CardImpl {
// {2}{G}, {T}: Transform Temple of Cultivation. Activate only if you control ten or more permanents and only as a sorcery.
Ability ability = new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD,
new TransformSourceEffect(),
new ManaCostsImpl<>("{2}{G}"),
new TempleOfCultivationCondition(),
TimingRule.SORCERY
);
new TransformSourceEffect(), new ManaCostsImpl<>("{2}{G}"), condition
).setTiming(TimingRule.SORCERY);
ability.addCost(new TapSourceCost());
ability.addHint(new ValueHint("controlled permanents", PermanentsYouControlCount.instance));
this.addAbility(ability);
this.addAbility(ability.addHint(PermanentsYouControlHint.instance));
}
private TempleOfCultivation(final TempleOfCultivation card) {
@ -55,20 +53,3 @@ public final class TempleOfCultivation extends CardImpl {
return new TempleOfCultivation(this);
}
}
class TempleOfCultivationCondition extends IntCompareCondition {
TempleOfCultivationCondition() {
super(ComparisonType.OR_GREATER, 10);
}
@Override
protected int getInputValue(Game game, Ability source) {
return PermanentsYouControlCount.instance.calculate(game, source, null);
}
@Override
public String toString() {
return "if you control ten or more permanents";
}
}

View file

@ -14,7 +14,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.TimingRule;
import mage.constants.Zone;
import mage.counters.CounterType;
import java.util.UUID;
@ -39,9 +38,8 @@ public final class TempleOfCyclicalTime extends CardImpl {
// {2}{U}, {T}: Transform Temple of Cyclical Time. Activate only if it has no time counters on it and only as a sorcery.
ability = new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD, new TransformSourceEffect(),
new ManaCostsImpl<>("{2}{U}"), condition, TimingRule.SORCERY
);
new TransformSourceEffect(), new ManaCostsImpl<>("{2}{U}"), condition
).setTiming(TimingRule.SORCERY);
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}

View file

@ -14,7 +14,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.TimingRule;
import mage.constants.WatcherScope;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.command.CommandObject;
import mage.game.events.DamagedEvent;
@ -43,16 +42,10 @@ public final class TempleOfPower extends CardImpl {
// {2}{R}, {T}: Transform Temple of Power. Activate only if red sources you controlled dealt 4 or more noncombat damage this turn and only as a sorcery.
Ability ability = new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD,
new TransformSourceEffect(),
new ManaCostsImpl<>("{2}{R}"),
TempleOfPowerCondition.instance,
TimingRule.SORCERY
);
ability.addWatcher(new TempleOfPowerWatcher());
new TransformSourceEffect(), new ManaCostsImpl<>("{2}{R}"), TempleOfPowerCondition.instance
).setTiming(TimingRule.SORCERY);
ability.addCost(new TapSourceCost());
ability.addHint(TempleOfPowerHint.instance);
this.addAbility(ability);
this.addAbility(ability.addHint(TempleOfPowerHint.instance), new TempleOfPowerWatcher());
}
private TempleOfPower(final TempleOfPower card) {
@ -77,7 +70,7 @@ enum TempleOfPowerCondition implements Condition {
@Override
public String toString() {
return "if red sources you controlled dealt 4 or more noncombat damage this turn";
return "red sources you controlled dealt 4 or more noncombat damage this turn";
}
}

View file

@ -12,7 +12,10 @@ import mage.abilities.hint.Hint;
import mage.abilities.mana.BlackManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.TargetController;
import mage.constants.TimingRule;
import java.util.UUID;
@ -22,7 +25,7 @@ import java.util.UUID;
public final class TempleOfTheDead extends CardImpl {
private static final Condition condition = new CardsInHandCondition(ComparisonType.FEWER_THAN, 2, TargetController.ANY);
private static final Hint hint = new ConditionHint(condition, "a player has one or fewer cards in hand");
private static final Hint hint = new ConditionHint(condition);
public TempleOfTheDead(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
@ -35,15 +38,10 @@ public final class TempleOfTheDead extends CardImpl {
// {2}{B}, {T}: Transform Temple of the Dead. Activate only if a player has one or fewer cards in hand and only as a sorcery.
Ability ability = new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD,
new TransformSourceEffect(),
new ManaCostsImpl<>("{2}{B}"),
condition,
TimingRule.SORCERY
);
new TransformSourceEffect(), new ManaCostsImpl<>("{2}{B}"), condition
).setTiming(TimingRule.SORCERY);
ability.addCost(new TapSourceCost());
ability.addHint(hint);
this.addAbility(ability);
this.addAbility(ability.addHint(hint));
}
private TempleOfTheDead(final TempleOfTheDead card) {

View file

@ -14,17 +14,12 @@ import mage.constants.Zone;
public class ActivateIfConditionActivatedAbility extends ActivatedAbilityImpl {
public ActivateIfConditionActivatedAbility(Effect effect, Cost cost, Condition condition) {
this(Zone.BATTLEFIELD, effect, cost, condition, TimingRule.INSTANT);
this(Zone.BATTLEFIELD, effect, cost, condition);
}
public ActivateIfConditionActivatedAbility(Zone zone, Effect effect, Cost cost, Condition condition) {
this(zone, effect, cost, condition, TimingRule.INSTANT);
}
public ActivateIfConditionActivatedAbility(Zone zone, Effect effect, Cost cost, Condition condition, TimingRule timing) {
super(zone, effect, cost);
this.condition = condition;
this.timing = timing;
}
protected ActivateIfConditionActivatedAbility(final ActivateIfConditionActivatedAbility ability) {