Reverted turn hints deletion (see 22a803a6fc)

This commit is contained in:
Oleg Agafonov 2025-05-24 00:21:44 +04:00
parent 3f1a02aa03
commit 8364271c31
113 changed files with 352 additions and 81 deletions

View file

@ -10,12 +10,14 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import java.util.UUID;
@ -44,7 +46,7 @@ public final class AhnCropInvader extends CardImpl {
"During your turn, "
+ "{this} has first strike."
)
));
).addHint(MyTurnHint.instance));
// {1}, Sacrifice another creature: Ahn-Crop Invader gets +2/+0 until end of turn.
Ability ability = new SimpleActivatedAbility(

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -41,7 +42,8 @@ public final class AngryMob extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new BoostSourceEffect(swamps, swamps, Duration.WhileOnBattlefield),
MyTurnCondition.instance,
"During your turn, {this}'s power and toughness are each equal to 2 plus the number of Swamps your opponents control. During turns other than yours, {this}'s power and toughness are each 2")));
"During your turn, {this}'s power and toughness are each equal to 2 plus the number of Swamps your opponents control. During turns other than yours, {this}'s power and toughness are each 2"))
.addHint(MyTurnHint.instance));
}

View file

@ -11,6 +11,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.HexproofAbility;
import mage.cards.CardImpl;
@ -44,7 +45,7 @@ public final class BilbosRing extends CardImpl {
new CantBeBlockedAttachedEffect(AttachmentType.EQUIPMENT),
MyTurnCondition.instance, "and can't be blocked"
));
this.addAbility(ability);
this.addAbility(ability.addHint(MyTurnHint.instance));
// Whenever equipped creature attacks alone, you draw a card and you lose 1 life.
ability = new AttacksAloneAttachedTriggeredAbility(

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -36,7 +37,7 @@ public final class BloodBurglar extends CardImpl {
), MyTurnCondition.instance,
"During your turn, {this} has lifelink."
)
));
).addHint(MyTurnHint.instance));
}
private BloodBurglar(final BloodBurglar card) {

View file

@ -6,6 +6,7 @@ import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.condition.common.OpponentsTurnCondition;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.effects.common.continuous.CastAsThoughItHadFlashAllEffect;
import mage.abilities.hint.common.OpponentsTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -41,7 +42,7 @@ public final class BreathOfTheSleepless extends CardImpl {
new TapTargetEffect(), StaticFilters.FILTER_SPELL_A_CREATURE, false
).withTriggerCondition(OpponentsTurnCondition.instance);
ability.addTarget(new TargetCreaturePermanent(0, 1));
this.addAbility(ability);
this.addAbility(ability.addHint(OpponentsTurnHint.instance));
}
private BreathOfTheSleepless(final BreathOfTheSleepless card) {

View file

@ -4,6 +4,7 @@ import mage.MageInt;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.condition.common.OpponentsTurnCondition;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.hint.common.OpponentsTurnHint;
import mage.abilities.keyword.FlashAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -32,7 +33,7 @@ public final class BrinebornCutthroat extends CardImpl {
// Whenever you cast a spell during an opponent's turn, put a +1/+1 counter on Brineborn Cutthroat.
this.addAbility(new SpellCastControllerTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false
).withTriggerCondition(OpponentsTurnCondition.instance));
).withTriggerCondition(OpponentsTurnCondition.instance).addHint(OpponentsTurnHint.instance));
}
private BrinebornCutthroat(final BrinebornCutthroat card) {

View file

@ -9,6 +9,7 @@ import mage.abilities.costs.common.PutCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -34,6 +35,7 @@ public final class CinderhazeWretch extends CardImpl {
// {T}: Target player discards a card. Activate this ability only during your turn.
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new TapSourceCost(), MyTurnCondition.instance);
ability.addHint(MyTurnHint.instance);
ability.addTarget(new TargetPlayer());
this.addAbility(ability);

View file

@ -10,6 +10,7 @@ import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainControlTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@ -57,6 +58,7 @@ public final class CrownOfDoom extends CardImpl {
new ManaCostsImpl<>("{2}"),
MyTurnCondition.instance);
ability.addTarget(new TargetPlayer(1, 1, false, filter));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -31,7 +32,7 @@ public final class DaggersailAeronaut extends CardImpl {
new ConditionalContinuousEffect(new GainAbilitySourceEffect(
FlyingAbility.getInstance(), Duration.WhileOnBattlefield
), MyTurnCondition.instance, "During your turn, {this} has flying.")
));
).addHint(MyTurnHint.instance));
}
private DaggersailAeronaut(final DaggersailAeronaut card) {

View file

@ -6,6 +6,7 @@ import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DrawCardAllEffect;
import mage.abilities.effects.common.EndTurnEffect;
import mage.abilities.effects.common.ShuffleHandGraveyardAllEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -26,6 +27,7 @@ public final class DaysUndoing extends CardImpl {
effect.setText(", then draws seven cards");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new EndTurnEffect(), MyTurnCondition.instance, "If it's your turn, end the turn"));
this.getSpellAbility().addHint(MyTurnHint.instance);
}
private DaysUndoing(final DaysUndoing card) {

View file

@ -12,6 +12,7 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.GetXValue;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.common.CreaturesYouControlHint;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -49,7 +50,7 @@ public final class DefendersOfHumanity extends CardImpl {
new CreateTokenEffect(
new WhiteAstartesWarriorToken(), mage.abilities.dynamicvalue.common.GetXValue.instance
), new ManaCostsImpl<>("{X}{2}{W}"), condition
).addHint(CreaturesYouControlHint.instance);
).addHint(CreaturesYouControlHint.instance).addHint(MyTurnHint.instance);
ability.addCost(new ExileSourceCost());
this.addAbility(ability);
}

View file

@ -2,7 +2,7 @@ package mage.cards.d;
import mage.abilities.Ability;
import mage.abilities.common.CastOnlyIfConditionIsTrueAbility;
import mage.abilities.condition.common.OpponentsTurnCondition;
import mage.abilities.condition.common.OnOpponentsTurnCondition;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.PreventDamageByTargetEffect;
import mage.abilities.effects.common.PreventDamageToTargetEffect;
@ -37,7 +37,7 @@ public final class Delirium extends CardImpl {
// Cast this spell only during an opponents turn.
this.addAbility(new CastOnlyIfConditionIsTrueAbility(OpponentsTurnCondition.instance, "Cast this spell only during an opponent's turn."));
this.addAbility(new CastOnlyIfConditionIsTrueAbility(OnOpponentsTurnCondition.instance, "Cast this spell only during an opponent's turn."));
// Tap target creature that player controls. That creature deals damage equal to its power to the player. Prevent all combat damage that would be dealt to and dealt by the creature this turn.
this.getSpellAbility().addEffect(new TapTargetEffect("tap target creature that player controls"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));

View file

@ -10,6 +10,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ChooseACardNameEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.*;
import mage.constants.*;
import mage.filter.FilterPermanent;
@ -41,6 +42,7 @@ public final class DementiaSliver extends CardImpl {
Ability gainedAbility = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ChooseACardNameEffect(ChooseACardNameEffect.TypeOfName.ALL), new TapSourceCost(), MyTurnCondition.instance);
gainedAbility.addEffect(new DementiaSliverEffect());
gainedAbility.addTarget(new TargetOpponent());
gainedAbility.addHint(MyTurnHint.instance);
this.addAbility(new SimpleStaticAbility(
new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, filter,
"All Slivers have \"{T}: Choose a card name. "

View file

@ -5,6 +5,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.EndTurnEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -24,7 +25,8 @@ public final class Discontinuity extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(
new ManaCostsImpl<>("{2}{U}{U}"), MyTurnCondition.instance
).setText("during your turn, this spell costs {2}{U}{U} less to cast"))
.setRuleAtTheTop(true));
.setRuleAtTheTop(true)
.addHint(MyTurnHint.instance));
// End the turn.
this.getSpellAbility().addEffect(new EndTurnEffect());

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -26,6 +27,7 @@ public final class DisruptingScepter extends CardImpl {
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new ManaCostsImpl<>("{3}"), MyTurnCondition.instance);
ability.addTarget(new TargetPlayer());
ability.addCost(new TapSourceCost());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.ToxicAbility;
import mage.cards.CardImpl;
@ -34,7 +35,7 @@ public final class DuelistOfDeepFaith extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()),
MyTurnCondition.instance, "during your turn, {this} has first strike"
)));
)).addHint(MyTurnHint.instance));
}
private DuelistOfDeepFaith(final DuelistOfDeepFaith card) {

View file

@ -11,6 +11,7 @@ import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -38,7 +39,7 @@ public final class EmberethSkyblazer extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "During your turn, {this} has flying."
)));
)).addHint(MyTurnHint.instance));
// Whenever Embereth Skyblazer attacks, you may pay {2}{R}. If you do, creatures you control get +X/+0 until end of turn, where X is the number of opponents you have.
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(

View file

@ -12,6 +12,7 @@ import mage.abilities.costs.mana.VariableManaCost;
import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.abilities.effects.mana.ManaEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.mana.ActivatedManaAbilityImpl;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -43,6 +44,7 @@ public final class EverythingamajigC extends CardImpl {
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new GenericManaCost(3), MyTurnCondition.instance);
ability.addTarget(new TargetPlayer());
ability.addCost(new TapSourceCost());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
// Chimeric Staff

View file

@ -7,6 +7,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -37,7 +38,7 @@ public final class FaithfulPikemaster extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "during your turn, {this} has first strike."
)));
)).addHint(MyTurnHint.instance));
}
private FaithfulPikemaster(final FaithfulPikemaster card) {

View file

@ -4,6 +4,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -24,6 +25,7 @@ public final class FatedConflagration extends CardImpl {
this.getSpellAbility().addEffect(new DamageTargetEffect(5));
this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new ScryEffect(2, false), MyTurnCondition.instance, "If it's your turn, scry 2"));
this.getSpellAbility().addHint(MyTurnHint.instance);
}
private FatedConflagration(final FatedConflagration card) {

View file

@ -4,6 +4,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -24,6 +25,7 @@ public final class FatedInfatuation extends CardImpl {
this.getSpellAbility().addEffect(new CreateTokenCopyTargetEffect());
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new ScryEffect(2), MyTurnCondition.instance, "If it's your turn, scry 2"));
this.getSpellAbility().addHint(MyTurnHint.instance);
}
private FatedInfatuation(final FatedInfatuation card) {

View file

@ -4,6 +4,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -22,6 +23,7 @@ public final class FatedIntervention extends CardImpl {
// Create two 3/3 green Centaur enchantment creature tokens. If it's your turn, scry 2.
this.getSpellAbility().addEffect(new CreateTokenEffect(new CentaurEnchantmentCreatureToken(), 2));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new ScryEffect(2, false), MyTurnCondition.instance, "If it's your turn, scry 2"));
this.getSpellAbility().addHint(MyTurnHint.instance);
}
private FatedIntervention(final FatedIntervention card) {

View file

@ -4,6 +4,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DestroyAllEffect;
import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -32,6 +33,7 @@ public final class FatedRetribution extends CardImpl {
// Destroy all creatures and planeswalkers. If it's your turn, scry 2.
this.getSpellAbility().addEffect(new DestroyAllEffect(filter, false));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new ScryEffect(2, false), MyTurnCondition.instance, "If it's your turn, scry 2"));
this.getSpellAbility().addHint(MyTurnHint.instance);
}
private FatedRetribution(final FatedRetribution card) {

View file

@ -5,12 +5,14 @@ import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreatureCard;
import mage.target.common.TargetCardInGraveyard;
import java.util.UUID;
@ -31,6 +33,7 @@ public final class FatedReturn extends CardImpl {
"It gains indestructible"));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new ScryEffect(2), MyTurnCondition.instance,
"If it's your turn, scry 2. <i>(Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)</i>"));
this.getSpellAbility().addHint(MyTurnHint.instance);
}
private FatedReturn(final FatedReturn card) {

View file

@ -9,6 +9,7 @@ import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.TrampleAbility;
import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
@ -18,6 +19,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.FoodToken;
import mage.target.common.TargetControlledPermanent;
import mage.watchers.common.CastFromHandWatcher;
import java.util.UUID;
@ -56,7 +58,7 @@ public final class FeastingTrollKing extends CardImpl {
new ReturnSourceFromGraveyardToBattlefieldEffect(false, false),
new SacrificeTargetCost(3, filter),
MyTurnCondition.instance
));
).addHint(MyTurnHint.instance));
}
private FeastingTrollKing(final FeastingTrollKing card) {

View file

@ -3,7 +3,7 @@ package mage.cards.f;
import java.util.UUID;
import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility;
import mage.abilities.condition.common.OpponentsTurnCondition;
import mage.abilities.condition.common.OnOpponentsTurnCondition;
import mage.abilities.effects.common.combat.CantAttackAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -22,7 +22,7 @@ public final class Festival extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
// Cast Festival only during an opponent's upkeep.
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, PhaseStep.UPKEEP, OpponentsTurnCondition.instance,
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, PhaseStep.UPKEEP, OnOpponentsTurnCondition.instance,
"Cast this spell only during an opponent's upkeep"));
// Creatures can't attack this turn.

View file

@ -7,7 +7,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.CompoundCondition;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.condition.common.OpponentsTurnCondition;
import mage.abilities.condition.common.OnOpponentsTurnCondition;
import mage.abilities.decorator.ConditionalAsThoughEffect;
import mage.abilities.effects.common.continuous.CastAsThoughItHadFlashAllEffect;
import mage.constants.Duration;
@ -42,7 +42,7 @@ public final class FinalWordPhantom extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// During each opponent's end step, you may cast spells as though they had flash.
Condition condition = new CompoundCondition(OpponentsTurnCondition.instance, new IsStepCondition(PhaseStep.END_TURN, false));
Condition condition = new CompoundCondition(OnOpponentsTurnCondition.instance, new IsStepCondition(PhaseStep.END_TURN, false));
this.addAbility(new SimpleStaticAbility(
new ConditionalAsThoughEffect(new CastAsThoughItHadFlashAllEffect(Duration.WhileOnBattlefield, filter), condition)
.setText("during each opponent's end step, you may cast spells as though they had flash")));

View file

@ -9,6 +9,7 @@ import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FearAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -42,6 +43,7 @@ public final class Fleshformer extends CardImpl {
ability.addEffect(effect);
ability.addEffect(new BoostTargetEffect(-2, -2, Duration.EndOfTurn));
ability.addTarget(new TargetCreaturePermanent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -5,6 +5,7 @@ import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.costs.AlternativeCostSourceAbility;
import mage.abilities.costs.common.ExileFromHandCost;
import mage.abilities.effects.common.DestroyAllEffect;
import mage.abilities.hint.common.NotMyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -40,7 +41,7 @@ public final class ForceOfDespair extends CardImpl {
new ExileFromHandCost(new TargetCardInHand(filter)), NotMyTurnCondition.instance,
"If it's not your turn, you may exile a black card from " +
"your hand rather than pay this spell's mana cost."
));
).addHint(NotMyTurnHint.instance));
// Destroy all creatures that entered the battlefield this turn.
this.getSpellAbility().addEffect(new DestroyAllEffect(filter2));

View file

@ -5,6 +5,7 @@ import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.costs.AlternativeCostSourceAbility;
import mage.abilities.costs.common.ExileFromHandCost;
import mage.abilities.effects.common.CounterTargetWithReplacementEffect;
import mage.abilities.hint.common.NotMyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -36,7 +37,7 @@ public final class ForceOfNegation extends CardImpl {
new ExileFromHandCost(new TargetCardInHand(filter)), NotMyTurnCondition.instance,
"If it's not your turn, you may exile a blue card from " +
"your hand rather than pay this spell's mana cost."
));
).addHint(NotMyTurnHint.instance));
// Counter target noncreature spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard.
this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(PutCards.EXILED));

View file

@ -9,6 +9,7 @@ import mage.abilities.costs.common.ExileFromHandCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SacrificeTargetEffect;
import mage.abilities.hint.common.NotMyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -45,7 +46,7 @@ public final class ForceOfRage extends CardImpl {
new ExileFromHandCost(new TargetCardInHand(filter)), NotMyTurnCondition.instance,
"If it's not your turn, you may exile a red card from " +
"your hand rather than pay this spell's mana cost."
));
).addHint(NotMyTurnHint.instance));
// Create two 3/1 red Elemental creature tokens with trample and haste. Sacrifice those tokens at the beginning of your next upkeep.
this.getSpellAbility().addEffect(new ForceOfRageEffect());
@ -92,3 +93,4 @@ class ForceOfRageEffect extends OneShotEffect {
return true;
}
}

View file

@ -5,6 +5,7 @@ import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.costs.AlternativeCostSourceAbility;
import mage.abilities.costs.common.ExileFromHandCost;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.hint.common.NotMyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -39,7 +40,7 @@ public final class ForceOfVigor extends CardImpl {
new ExileFromHandCost(new TargetCardInHand(filter)), NotMyTurnCondition.instance,
"If it's not your turn, you may exile a green card from " +
"your hand rather than pay this spell's mana cost."
));
).addHint(NotMyTurnHint.instance));
// Destroy up to two target artifacts and/or enchantments.
this.getSpellAbility().addEffect(new DestroyTargetEffect());

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.costs.AlternativeCostSourceAbility;
import mage.abilities.costs.common.ExileFromHandCost;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.hint.common.NotMyTurnHint;
import mage.abilities.keyword.FlashAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -36,7 +37,7 @@ public final class ForceOfVirtue extends CardImpl {
new ExileFromHandCost(new TargetCardInHand(filter)), NotMyTurnCondition.instance,
"If it's not your turn, you may exile a white card from " +
"your hand rather than pay this spell's mana cost."
));
).addHint(NotMyTurnHint.instance));
// Flash
this.addAbility(FlashAbility.getInstance());

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -31,7 +32,7 @@ public final class FreshFacedRecruit extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "During your turn, {this} has first strike."
)));
)).addHint(MyTurnHint.instance));
}
private FreshFacedRecruit(final FreshFacedRecruit card) {

View file

@ -4,6 +4,7 @@ import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.hint.common.NotMyTurnHint;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -25,7 +26,8 @@ public final class GhostTown extends CardImpl {
// {0}: Return Ghost Town to its owner's hand. Activate this ability only if it's not your turn.
this.addAbility(new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true),
new GenericManaCost(0), NotMyTurnCondition.instance));
new GenericManaCost(0), NotMyTurnCondition.instance)
.addHint(NotMyTurnHint.instance));
}
private GhostTown(final GhostTown card) {

View file

@ -11,6 +11,7 @@ import mage.abilities.effects.common.ExileTargetEffect;
import mage.abilities.effects.common.GainsChoiceOfAbilitiesEffect;
import mage.abilities.effects.common.PreventAllDamageToSourceEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.IndestructibleAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.abilities.keyword.VigilanceAbility;
@ -53,7 +54,7 @@ public final class GideonBlackblade extends CardImpl {
new GideonBlackbladeToken(), CardType.PLANESWALKER, Duration.WhileOnBattlefield
), MyTurnCondition.instance, "During your turn, " +
"{this} is a 4/4 Human Soldier creature with indestructible that's still a planeswalker."
)));
)).addHint(MyTurnHint.instance));
// Prevent all damage that would be dealt to Gideon Blackblade during your turn.
this.addAbility(new SimpleStaticAbility(new ConditionalPreventionEffect(

View file

@ -5,10 +5,12 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import java.util.UUID;
@ -24,7 +26,8 @@ public final class GloryOfWarfare extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new BoostControlledEffect(2, 0, Duration.WhileOnBattlefield),
MyTurnCondition.instance,
"During your turn, creatures you control get +2/+0")));
"During your turn, creatures you control get +2/+0"))
.addHint(MyTurnHint.instance));
// As long as its not your turn, creatures you control get +0/+2.
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(

View file

@ -7,6 +7,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.HexproofAbility;
import mage.abilities.keyword.RiotAbility;
import mage.abilities.keyword.TrampleAbility;
@ -15,6 +16,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import java.util.UUID;
@ -52,6 +54,7 @@ public final class GruulSpellbreaker extends CardImpl {
Duration.WhileOnBattlefield
), MyTurnCondition.instance, "and {this} have hexproof."
));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -6,6 +6,7 @@ import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -32,6 +33,7 @@ public final class GwendlynDiCorci extends CardImpl {
// {T}: Target player discards a card at random. Activate this ability only during your turn.
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1, true), new TapSourceCost(), MyTurnCondition.instance);
ability.addTarget(new TargetPlayer());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -7,11 +7,13 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import java.util.UUID;
@ -34,6 +36,7 @@ public final class HardyVeteran extends CardImpl {
MyTurnCondition.instance,
"During your turn, {this} gets +0/+2");
Ability ability = new SimpleStaticAbility(boostEffect);
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -8,6 +8,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.TrampleAbility;
@ -41,7 +42,7 @@ public final class HexgoldHalberd extends CardImpl {
new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.EQUIPMENT),
MyTurnCondition.instance, "and trample"
));
this.addAbility(ability);
this.addAbility(ability.addHint(MyTurnHint.instance));
// Equip {2}{R}
this.addAbility(new EquipAbility(Outcome.AddAbility, new ManaCostsImpl<>("{2}{R}"), false));

View file

@ -8,6 +8,7 @@ import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -33,6 +34,7 @@ public final class HoofprintsOfTheStag extends CardImpl {
// {2}{w}, Remove four hoofprint counters from Hoofprints of the Stag: Create a 4/4 white Elemental creature token with flying. Activate this ability only during your turn.
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new WhiteElementalToken(), 1), new ManaCostsImpl<>("{2}{W}"), MyTurnCondition.instance);
ability.addCost(new RemoveCountersSourceCost(CounterType.HOOFPRINT.createInstance(4)));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
@ -36,7 +37,7 @@ public final class Hookblade extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilityAttachedEffect(FlyingAbility.getInstance().getInstance(), AttachmentType.EQUIPMENT),
MyTurnCondition.instance, "during your turn, equipped creature has flying"
)));
)).addHint(MyTurnHint.instance));
// Equip {2}
this.addAbility(new EquipAbility(2));

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -31,7 +32,7 @@ public final class HookbladeVeteran extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "during your turn, {this} has flying"
)));
)).addHint(MyTurnHint.instance));
}
private HookbladeVeteran(final HookbladeVeteran card) {

View file

@ -7,6 +7,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.TargetPlayerGainControlSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -33,6 +34,7 @@ public final class HumbleDefector extends CardImpl {
new DrawCardSourceControllerEffect(2), new TapSourceCost(), MyTurnCondition.instance);
ability.addEffect(new TargetPlayerGainControlSourceEffect());
ability.addTarget(new TargetOpponent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -2,7 +2,7 @@ package mage.cards.i;
import mage.abilities.Ability;
import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility;
import mage.abilities.condition.common.OpponentsTurnCondition;
import mage.abilities.condition.common.OnOpponentsTurnCondition;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.RequirementEffect;
@ -28,7 +28,7 @@ public final class IllusionistsGambit extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{U}");
// Cast Illusionist's Gambit only during the declare blockers step on an opponent's turn.
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(PhaseStep.DECLARE_BLOCKERS, OpponentsTurnCondition.instance));
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(PhaseStep.DECLARE_BLOCKERS, OnOpponentsTurnCondition.instance));
// Remove all attacking creatures from combat and untap them. After this phase, there is an additional combat phase. Each of those creatures attacks that combat if able. They can't attack you or a planeswalker you control that combat.
this.getSpellAbility().addEffect(new IllusionistsGambitRemoveFromCombatEffect());

View file

@ -6,12 +6,14 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.common.FilterControlledCreaturePermanent;
@ -47,7 +49,7 @@ public final class InspiringPaladin extends CardImpl {
), MyTurnCondition.instance,
"During your turn, this creature has first strike."
)
));
).addHint(MyTurnHint.instance));
// During your turn, creatures you control with +1/+1 counters on them have first strike.
this.addAbility(new SimpleStaticAbility(

View file

@ -8,6 +8,7 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.AsThoughEffectImpl;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.UntapAttachedEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -41,7 +42,8 @@ public final class InstillEnergy extends CardImpl {
// {0}: Untap enchanted creature. Activate this ability only during your turn and only once each turn.
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD,
new UntapAttachedEffect(),
new GenericManaCost(0), 1, MyTurnCondition.instance));
new GenericManaCost(0), 1, MyTurnCondition.instance)
.addHint(MyTurnHint.instance));
}
private InstillEnergy(final InstillEnergy card) {

View file

@ -7,6 +7,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.FlashAbility;
@ -41,7 +42,7 @@ public final class JavelinOfLightning extends CardImpl {
ability.addEffect(new ConditionalContinuousEffect(new GainAbilityAttachedEffect(
FirstStrikeAbility.getInstance(), AttachmentType.EQUIPMENT
), MyTurnCondition.instance, "and has first strike"));
this.addAbility(ability);
this.addAbility(ability.addHint(MyTurnHint.instance));
// Equip {4}
this.addAbility(new EquipAbility(4));

View file

@ -10,6 +10,7 @@ import mage.abilities.effects.Effect;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.continuous.GainControlTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.MorphAbility;
import mage.cards.CardImpl;
@ -58,6 +59,7 @@ public final class JeeringInstigator extends CardImpl {
effect.setText("It gains haste until end of turn");
ability.addEffect(effect);
ability.addTarget(new TargetCreaturePermanent(filter));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -6,6 +6,7 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
@ -31,7 +32,8 @@ public final class JoustingLance extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.EQUIPMENT, Duration.WhileOnBattlefield),
MyTurnCondition.instance,
"During your turn, equipped creature has first strike.")));
"During your turn, equipped creature has first strike."))
.addHint(MyTurnHint.instance));
// Equip {3}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3)));

View file

@ -14,6 +14,7 @@ import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.effects.keyword.SurveilEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.HexproofAbility;
import mage.abilities.keyword.NinjutsuAbility;
import mage.cards.CardImpl;
@ -55,7 +56,7 @@ public final class KaitoBaneOfNightmares extends CardImpl {
.withAbility(HexproofAbility.getInstance()), null, Duration.WhileOnBattlefield
), KaitoBaneOfNightmaresCondition.instance, "During your turn, as long as {this} has one or more loyalty counters on him, " +
"he's a 3/4 Ninja creature and has hexproof."
)));
)).addHint(MyTurnHint.instance));
// +1: You get an emblem with "Ninjas you control get +1/+1."
this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new KaitoBaneOfNightmaresEmblem()), 1));

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -31,7 +32,7 @@ public final class LeechFanatic extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(LifelinkAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "during your turn, {this} has lifelink"
)));
)).addHint(MyTurnHint.instance));
}
private LeechFanatic(final LeechFanatic card) {

View file

@ -10,6 +10,7 @@ import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
@ -53,7 +54,7 @@ public final class LiciaSanguineTribune extends CardImpl {
Zone.BATTLEFIELD,
new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)),
new PayLifeCost(5), 1, MyTurnCondition.instance
));
).addHint(MyTurnHint.instance));
}
private LiciaSanguineTribune(final LiciaSanguineTribune card) {

View file

@ -8,6 +8,7 @@ import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.turn.AddExtraTurnControllerEffect;
import mage.abilities.hint.common.NotMyTurnHint;
import mage.abilities.keyword.LevelUpAbility;
import mage.abilities.keyword.LevelerCardBuilder;
import mage.cards.CardSetInfo;
@ -42,7 +43,8 @@ public final class LighthouseChronologist extends LevelerCard {
// At the beginning of each end step, if it's not your turn, take an extra turn after this one.
Abilities<Ability> abilities2 = new AbilitiesImpl<>();
abilities2.add(new BeginningOfEndStepTriggeredAbility(
TargetController.ANY, new AddExtraTurnControllerEffect(false), false, NotMyTurnCondition.instance));
TargetController.ANY, new AddExtraTurnControllerEffect(false), false, NotMyTurnCondition.instance)
.addHint(NotMyTurnHint.instance));
this.addAbilities(LevelerCardBuilder.construct(
new LevelerCardBuilder.LevelAbility(4, 6, abilities1, 2, 4),

View file

@ -6,11 +6,13 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.AlternativeCostSourceAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreatureOrPlaneswalker;
/**
@ -29,7 +31,7 @@ public final class MineCollapse extends CardImpl {
new SacrificeTargetCost(filter),
MyTurnCondition.instance,
"If it's your turn, you may sacrifice a Mountain rather than pay this spell's mana cost."
));
).addHint(MyTurnHint.instance));
// Mine Collapse deals 5 damage to target creature or planeswalker.
this.getSpellAbility().addEffect(new DamageTargetEffect(5));

View file

@ -12,6 +12,7 @@ import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.abilities.keyword.FirstStrikeAbility;
@ -44,7 +45,7 @@ public final class MiteOverseer extends CardImpl {
ability.addEffect(new ConditionalContinuousEffect(new GainAbilityControlledEffect(
FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_CREATURE_TOKEN
), MyTurnCondition.instance, "and have first strike"));
this.addAbility(ability);
this.addAbility(ability.addHint(MyTurnHint.instance));
// {3}{W/P}: Create a 1/1 colorless Phyrexian Mite artifact creature token with toxic 1 and "This creature can't block."
this.addAbility(new SimpleActivatedAbility(

View file

@ -10,6 +10,7 @@ import mage.abilities.dynamicvalue.common.GetXValue;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.cost.AbilitiesCostReductionControllerEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
@ -57,6 +58,7 @@ public final class NahiriStormOfStone extends CardImpl {
EquipAbility.class, "Equip"
), MyTurnCondition.instance, "and equip abilities you activate cost {1} less to activate"
));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
// -X: Nahiri, Storm of Stone deals X damage to target tapped creature.

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.decorator.ConditionalCostModificationEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -30,7 +31,7 @@ public final class NaiadOfHiddenCoves extends CardImpl {
new SpellsCostReductionControllerEffect(StaticFilters.FILTER_CARD, 1),
NotMyTurnCondition.instance, "During turns other than yours, " +
"spells you cast cost {1} less to cast."
)));
)).addHint(MyTurnHint.instance));
}
private NaiadOfHiddenCoves(final NaiadOfHiddenCoves card) {

View file

@ -11,6 +11,7 @@ import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.UntapAttachedEffect;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -61,7 +62,8 @@ public final class NaturesChosen extends CardImpl {
this.addAbility(ability);
// {0}: Untap enchanted creature. Activate this ability only during your turn and only once each turn.
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapAttachedEffect(), new GenericManaCost(0), 1, MyTurnCondition.instance));
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapAttachedEffect(), new GenericManaCost(0), 1, MyTurnCondition.instance)
.addHint(MyTurnHint.instance));
// Tap enchanted creature: Untap target artifact, creature, or land. Activate this ability only if enchanted creature is white and is untapped and only once each turn.
Effect effect = new UntapTargetEffect();

View file

@ -9,6 +9,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ChooseACardNameEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.*;
import mage.constants.*;
import mage.game.Game;
@ -36,6 +37,7 @@ public final class Nebuchadnezzar extends CardImpl {
ability.addCost(new TapSourceCost());
ability.addEffect(new NebuchadnezzarEffect());
ability.addTarget(new TargetOpponent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -5,12 +5,14 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.hint.common.NotMyTurnHint;
import mage.abilities.keyword.HexproofAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.TappedPredicate;
@ -39,7 +41,8 @@ public final class OakStreetInnkeeper extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filter),
NotMyTurnCondition.instance,
"During turns other than yours, tapped creatures you control have hexproof")));
"During turns other than yours, tapped creatures you control have hexproof"))
.addHint(NotMyTurnHint.instance));
}

View file

@ -13,6 +13,7 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.RequirementEffect;
import mage.abilities.effects.RestrictionEffect;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@ -47,6 +48,7 @@ public final class OracleEnVec extends CardImpl {
// destroy each of the chosen creatures that didnt attack this turn. Activate this ability only during your turn.
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new OracleEnVecEffect(), new TapSourceCost(), MyTurnCondition.instance);
ability.addTarget(new TargetOpponent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.HexproofAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -43,7 +44,7 @@ public final class PompousGadabout extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "during your turn, {this} has hexproof"
)));
)).addHint(MyTurnHint.instance));
// Pompous Gadabout can't be blocked by creatures that don't have a name.
this.addAbility(new SimpleStaticAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield)));

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.Cards;
@ -36,6 +37,7 @@ public final class PortalOfSanctuary extends CardImpl {
);
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetControlledCreaturePermanent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}
@ -81,4 +83,4 @@ class PortalOfSanctuaryEffect extends OneShotEffect {
.forEach(perm -> cards.add(perm));
return player.moveCards(cards, Zone.HAND, source, game);
}
}
}

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -36,7 +37,7 @@ public final class PouncingLynx extends CardImpl {
"During your turn, "
+ "{this} has first strike."
)
));
).addHint(MyTurnHint.instance));
}
private PouncingLynx(final PouncingLynx card) {

View file

@ -8,12 +8,14 @@ import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import java.util.UUID;
@ -40,6 +42,7 @@ public final class Prickleboar extends CardImpl {
"and has first strike");
Ability ability = new SimpleStaticAbility(boostEffect);
ability.addEffect(gainAbilityEffect);
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -12,6 +12,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.common.continuous.LookAtTopCardOfLibraryAnyTimeEffect;
import mage.abilities.effects.common.continuous.PlayFromTopOfLibraryEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -42,7 +43,7 @@ public final class RadhaHeartOfKeld extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "During your turn, {this} has first strike."
)));
)).addHint(MyTurnHint.instance));
// You may look at the top card of your library any time, and you may play lands from the top of your library.
LookAtTopCardOfLibraryAnyTimeEffect lookEffect = new LookAtTopCardOfLibraryAnyTimeEffect();

View file

@ -8,6 +8,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.RevealHandTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.*;
import mage.constants.CardType;
import mage.constants.Outcome;
@ -38,6 +39,7 @@ public final class RagMan extends CardImpl {
ability.addCost(new TapSourceCost());
ability.addEffect(new RagManDiscardEffect());
ability.addTarget(new TargetOpponent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.AdventureCard;
import mage.cards.CardSetInfo;
@ -33,7 +34,7 @@ public final class RatcatcherTrainee extends AdventureCard {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "During your turn, {this} has first strike."
)));
)).addHint(MyTurnHint.instance));
// Pest Problem
// Create two 1/1 black Rat creature tokens with "This creature cant block."

View file

@ -5,7 +5,7 @@ import java.util.UUID;
import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility;
import mage.abilities.condition.CompoundCondition;
import mage.abilities.condition.common.AfterUpkeepStepCondtion;
import mage.abilities.condition.common.OpponentsTurnCondition;
import mage.abilities.condition.common.OnOpponentsTurnCondition;
import mage.abilities.effects.common.UntapAllLandsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -21,7 +21,7 @@ public final class Reset extends CardImpl {
// Cast Reset only during an opponent's turn after their upkeep step.
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, null,
new CompoundCondition(OpponentsTurnCondition.instance, AfterUpkeepStepCondtion.instance),
new CompoundCondition(OnOpponentsTurnCondition.instance, AfterUpkeepStepCondtion.instance),
"Cast this spell only during an opponent's turn after their upkeep step"));
// Untap all lands you control.

View file

@ -10,6 +10,7 @@ import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.RedManaAbility;
@ -44,7 +45,7 @@ public final class RestlessSpire extends CardImpl {
.withAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "During your turn, this creature has first strike."
))),
)).addHint(MyTurnHint.instance)),
CardType.LAND, Duration.EndOfTurn
).withDurationRuleAtStart(true), new ManaCostsImpl<>("{U}{R}")));

View file

@ -3,6 +3,7 @@ package mage.cards.r;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FlashbackAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
@ -25,7 +26,7 @@ public final class ReturnThePast extends CardImpl {
// As long as it's your turn, each instant and sorcery card in your graveyard has flashback. Its flashback cost is equal to its mana cost.
this.addAbility(new SimpleStaticAbility(new ReturnThePastEffect()));
this.addAbility(new SimpleStaticAbility(new ReturnThePastEffect()).addHint(MyTurnHint.instance));
}
private ReturnThePast(final ReturnThePast card) {

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -44,6 +45,7 @@ public final class SanctumOfEternity extends CardImpl {
);
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPermanent(filter));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -27,6 +28,7 @@ public final class ScepterOfFugue extends CardImpl {
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new ManaCostsImpl<>("{1}{B}"), MyTurnCondition.instance);
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPlayer());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.Condition;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.turn.AddExtraTurnControllerEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -28,7 +29,8 @@ public final class Seedtime extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
// Cast Seedtime only during your turn.
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, null, MyTurnCondition.instance, rule));
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, null, MyTurnCondition.instance, rule)
.addHint(MyTurnHint.instance));
// Take an extra turn after this one if an opponent cast a blue spell this turn.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new AddExtraTurnControllerEffect(), OpponentCastBlueSpellThisTurnCondition.instance, rule2));

View file

@ -8,7 +8,7 @@ import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility;
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
import mage.abilities.condition.CompoundCondition;
import mage.abilities.condition.common.BeforeAttackersAreDeclaredCondition;
import mage.abilities.condition.common.OpponentsTurnCondition;
import mage.abilities.condition.common.OnOpponentsTurnCondition;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.RequirementEffect;
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
@ -34,7 +34,7 @@ public final class SirensCall extends CardImpl {
// Cast Siren's Call only during an opponent's turn, before attackers are declared.
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, null,
new CompoundCondition(OpponentsTurnCondition.instance, BeforeAttackersAreDeclaredCondition.instance),
new CompoundCondition(OnOpponentsTurnCondition.instance, BeforeAttackersAreDeclaredCondition.instance),
"Cast this spell only during an opponent's turn, before attackers are declared"));
// Creatures the active player controls attack this turn if able.

View file

@ -7,6 +7,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.MillThenPutInHandEffect;
import mage.abilities.effects.common.continuous.GainRetraceYourGraveyardEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -55,7 +56,7 @@ public final class Six extends CardImpl {
MyTurnCondition.instance,
"During your turn, nonland permanent cards in your graveyard have retrace."
)
));
).addHint(MyTurnHint.instance));
}
private Six(final Six card) {

View file

@ -9,6 +9,7 @@ import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -41,7 +42,7 @@ public final class SorinVengefulBloodlord extends CardImpl {
StaticFilters.FILTER_PERMANENT_CREATURE_OR_PLANESWALKER_A
), MyTurnCondition.instance, "During your turn, " +
"creatures and planeswalkers you control have lifelink"
)));
)).addHint(MyTurnHint.instance));
// +2: Sorin, Vengeful Bloodlord deals 1 damage to target player or planeswalker.
Ability ability = new LoyaltyAbility(new DamageTargetEffect(1), 2);

View file

@ -8,6 +8,7 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -34,7 +35,7 @@ public final class SpartanVeteran extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "During your turn, {this} has first strike."
)));
)).addHint(MyTurnHint.instance));
// {2}: Spartan Veteran gets +1/+0 until end of turn.
this.addAbility(new SimpleActivatedAbility(new BoostSourceEffect(1, 0, Duration.EndOfTurn), new GenericManaCost(2)));

View file

@ -8,6 +8,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -34,7 +35,7 @@ public final class SpitefulPrankster extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "During your turn, {this} has first strike."
)));
)).addHint(MyTurnHint.instance));
// Whenever another creature dies, Spiteful Prankster deals 1 damage to target player or planeswalker.
Ability ability = new DiesCreatureTriggeredAbility(

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -29,7 +30,7 @@ public final class SporebackWolf extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new BoostSourceEffect(0, 2, Duration.WhileOnBattlefield),
MyTurnCondition.instance, "during your turn, {this} gets +0/+2."
)));
)).addHint(MyTurnHint.instance));
}
private SporebackWolf(final SporebackWolf card) {

View file

@ -7,6 +7,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -39,7 +40,7 @@ public final class SteadfastUnicorn extends CardImpl {
VigilanceAbility.getInstance(), Duration.EndOfTurn,
StaticFilters.FILTER_PERMANENT_CREATURE
).setText("and gain vigilance until end of turn"));
this.addAbility(ability);
this.addAbility(ability.addHint(MyTurnHint.instance));
}
private SteadfastUnicorn(final SteadfastUnicorn card) {

View file

@ -6,11 +6,13 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import java.util.UUID;
@ -39,6 +41,7 @@ public final class StreetRiot extends CardImpl {
StaticFilters.FILTER_CONTROLLED_CREATURES
), MyTurnCondition.instance, "and have trample"
));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.EndTurnEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -24,6 +25,7 @@ public final class SundialOfTheInfinite extends CardImpl {
// {1}, {T}: End the turn. Activate this ability only during your turn.
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new EndTurnEffect(), new GenericManaCost(1), MyTurnCondition.instance);
ability.addCost(new TapSourceCost());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}
@ -35,4 +37,4 @@ public final class SundialOfTheInfinite extends CardImpl {
public SundialOfTheInfinite copy() {
return new SundialOfTheInfinite(this);
}
}
}

View file

@ -9,6 +9,7 @@ import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -40,7 +41,7 @@ public final class SunlitHoplite extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "During your turn, {this} has first strike."
)));
)).addHint(MyTurnHint.instance));
// Sunlit Hoplite gets +1/+0 as long as you control an Elspeth planeswalker.
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(

View file

@ -9,6 +9,7 @@ import mage.abilities.costs.common.RevealSourceFromYourHandCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DestroyAllEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -47,6 +48,7 @@ public final class TetzimocPrimalDeath extends CardImpl {
Ability ability = new ActivateIfConditionActivatedAbility(Zone.HAND, new AddCountersTargetEffect(CounterType.PREY.createInstance()), new ManaCostsImpl<>("{B}"), MyTurnCondition.instance);
ability.addTarget(new TargetCreaturePermanent());
ability.addCost(new RevealSourceFromYourHandCost());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
// When Tetzimoc, Primal Death enters the battlefield, destroy each creature your opponents control with a prey counter on it.

View file

@ -9,6 +9,7 @@ import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
import mage.abilities.effects.common.CantBeCounteredSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.Card;
import mage.constants.*;
@ -46,7 +47,8 @@ public final class ThrunBreakerOfSilence extends CardImpl {
this.addAbility(new SimpleStaticAbility(
new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance,
"During your turn, {this} has indestructible")));
"During your turn, {this} has indestructible"))
.addHint(MyTurnHint.instance));
}
private ThrunBreakerOfSilence(final ThrunBreakerOfSilence card) {

View file

@ -6,6 +6,7 @@ import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.continuous.BecomesBasicLandTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -32,6 +33,7 @@ public final class TideshaperMystic extends CardImpl {
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
new BecomesBasicLandTargetEffect(Duration.EndOfTurn), new TapSourceCost(), MyTurnCondition.instance);
ability.addTarget(new TargetLandPermanent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -6,6 +6,7 @@ import mage.abilities.SpellAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.AfterlifeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -29,7 +30,8 @@ public final class TitheTaker extends CardImpl {
this.toughness = new MageInt(1);
// During your turn, spells your opponents cast cost {1} more to cast and abilities your opponents activate cost {1} more to activate unless they're mana abilities.
this.addAbility(new SimpleStaticAbility(new TitheTakerCostReductionEffect()));
this.addAbility(new SimpleStaticAbility(new TitheTakerCostReductionEffect())
.addHint(MyTurnHint.instance));
// Afterlife 1
this.addAbility(new AfterlifeAbility(1));

View file

@ -16,6 +16,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardAtRandomEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@ -66,7 +67,7 @@ public final class TombTyrant extends CardImpl {
);
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE));
this.addAbility(ability.addHint(hint));
this.addAbility(ability.addHint(MyTurnHint.instance).addHint(hint));
}
private TombTyrant(final TombTyrant card) {

View file

@ -7,7 +7,7 @@ import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.CompoundCondition;
import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.condition.common.OpponentsTurnCondition;
import mage.abilities.condition.common.OnOpponentsTurnCondition;
import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.effects.common.UntapTargetEffect;
@ -46,7 +46,7 @@ public final class TradeCaravan extends CardImpl {
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.CURRENCY.createInstance())));
// Remove two currency counters from Trade Caravan: Untap target basic land. Activate this ability only during an opponent's upkeep.
Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new RemoveCountersSourceCost(CounterType.CURRENCY.createInstance(2)),
new CompoundCondition(OpponentsTurnCondition.instance, new IsStepCondition(PhaseStep.UPKEEP, false)),
new CompoundCondition(OnOpponentsTurnCondition.instance, new IsStepCondition(PhaseStep.UPKEEP, false)),
"Remove two currency counters from {this}: Untap target basic land. Activate only during an opponent's upkeep.");
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);

View file

@ -9,6 +9,7 @@ import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect;
import mage.abilities.hint.common.CurrentDungeonHint;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.constants.Duration;
import mage.constants.SubType;
@ -39,7 +40,7 @@ public final class TriumphantAdventurer extends CardImpl {
new ConditionalContinuousEffect(new GainAbilitySourceEffect(
FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield
), MyTurnCondition.instance, "During your turn, {this} has first strike.")
));
).addHint(MyTurnHint.instance));
// Whenever Triumphant Adventurer attacks, venture into the dungeon.
this.addAbility(new AttacksTriggeredAbility(new VentureIntoTheDungeonEffect(), false)

View file

@ -11,6 +11,7 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.UntapAllControllerEffect;
import mage.abilities.effects.common.counter.AddCountersAllEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@ -50,6 +51,7 @@ public final class UrtetRemnantOfMemnarch extends CardImpl {
// {W}{U}{B}{R}{G}, {T}: Put three +1/+1 counters on each Myr you control. Activate only during your turn.
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new AddCountersAllEffect(CounterType.P1P1.createInstance(3), filter2), new ManaCostsImpl<>("{W}{U}{B}{R}{G}"), MyTurnCondition.instance);
ability.addCost(new TapSourceCost());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -5,10 +5,12 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import java.util.UUID;
@ -24,7 +26,8 @@ public final class VibratingSphere extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new BoostControlledEffect(2, 0, Duration.WhileOnBattlefield),
MyTurnCondition.instance,
"During your turn, creatures you control get +2/+0")));
"During your turn, creatures you control get +2/+0"))
.addHint(MyTurnHint.instance));
// As long as it's not your turn, creatures you control get -0/-2.
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(

View file

@ -6,6 +6,7 @@ import mage.abilities.common.SpellCastOpponentTriggeredAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.common.CreaturesYouControlHint;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.meta.OrTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -37,7 +38,7 @@ public final class VoiceOfResurgence extends CardImpl {
new DiesSourceTriggeredAbility(null, false)
);
ability.setLeavesTheBattlefieldTrigger(true);
this.addAbility(ability.addHint(CreaturesYouControlHint.instance));
this.addAbility(ability.addHint(MyTurnHint.instance).addHint(CreaturesYouControlHint.instance));
}
private VoiceOfResurgence(final VoiceOfResurgence card) {

View file

@ -7,6 +7,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.LifelinkAbility;
import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
@ -43,6 +44,7 @@ public final class VonaButcherOfMagan extends CardImpl {
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new TapSourceCost(), MyTurnCondition.instance);
ability.addCost(new PayLifeCost(7));
ability.addTarget(new TargetNonlandPermanent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

View file

@ -5,7 +5,7 @@ import mage.abilities.Ability;
import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility;
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
import mage.abilities.condition.common.OpponentsTurnCondition;
import mage.abilities.condition.common.OnOpponentsTurnCondition;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SacrificeTargetEffect;
@ -38,7 +38,7 @@ public final class WakeTheDead extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{B}{B}");
// Cast Wake the Dead only during combat on an opponent's turn.
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(TurnPhase.COMBAT, OpponentsTurnCondition.instance));
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(TurnPhase.COMBAT, OnOpponentsTurnCondition.instance));
// Return X target creature cards from your graveyard to the battlefield. Sacrifice those creatures at the beginning of the next end step.
this.getSpellAbility().addEffect(new WakeTheDeadReturnFromGraveyardToBattlefieldTargetEffect());

View file

@ -8,6 +8,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.NinjutsuAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -46,6 +47,7 @@ public final class WalkerOfSecretWays extends CardImpl {
// {1}{U}: Return target Ninja you control to its owner's hand. Activate this ability only during your turn.
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(), new ManaCostsImpl<>("{1}{U}"), MyTurnCondition.instance);
ability.addTarget(new TargetControlledPermanent(filterCreature));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);

View file

@ -7,6 +7,7 @@ import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.*;
import mage.constants.CardType;
import mage.constants.Outcome;
@ -30,6 +31,7 @@ public final class WandOfIth extends CardImpl {
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new WandOfIthEffect(), new GenericManaCost(3), MyTurnCondition.instance);
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPlayer());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
}

Some files were not shown because too many files have changed in this diff Show more