* My turn condition - added card hints about turn;

This commit is contained in:
Oleg Agafonov 2020-01-12 21:59:56 +04:00
parent 1a82eba77c
commit 6736f5f3b8
24 changed files with 121 additions and 108 deletions

View file

@ -1,7 +1,5 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
@ -9,6 +7,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -16,8 +15,9 @@ import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class HardyVeteran extends CardImpl { public final class HardyVeteran extends CardImpl {
@ -36,6 +36,7 @@ public final class HardyVeteran extends CardImpl {
MyTurnCondition.instance, MyTurnCondition.instance,
"As long as it's your turn, {this} gets +0/+2"); "As long as it's your turn, {this} gets +0/+2");
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, boostEffect); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, boostEffect);
ability.addHint(MyTurnHint.instance);
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,8 +1,5 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
@ -13,6 +10,7 @@ import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -21,6 +19,8 @@ import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import java.util.UUID;
/** /**
* @author LevelX2 * @author LevelX2
*/ */
@ -41,7 +41,7 @@ public final class HermitOfTheNatterknolls extends CardImpl {
new SpellCastOpponentTriggeredAbility(new DrawCardSourceControllerEffect(1), new FilterSpell("a spell"), true), new SpellCastOpponentTriggeredAbility(new DrawCardSourceControllerEffect(1), new FilterSpell("a spell"), true),
MyTurnCondition.instance, MyTurnCondition.instance,
"Whenever an opponent casts a spell during your turn, draw a card." "Whenever an opponent casts a spell during your turn, draw a card."
)); ).addHint(MyTurnHint.instance));
// At the beginning of each upkeep, if no spells were cast last turn, transform Hermit of the Natterknolls. // At the beginning of each upkeep, if no spells were cast last turn, transform Hermit of the Natterknolls.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());

View file

@ -1,7 +1,5 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.common.DrawCardControllerTriggeredAbility; import mage.abilities.common.DrawCardControllerTriggeredAbility;
@ -10,6 +8,7 @@ import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -18,8 +17,9 @@ import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.game.permanent.token.WhiteElementalToken; import mage.game.permanent.token.WhiteElementalToken;
import java.util.UUID;
/** /**
*
* @author Loki * @author Loki
*/ */
public final class HoofprintsOfTheStag extends CardImpl { public final class HoofprintsOfTheStag extends CardImpl {
@ -30,9 +30,11 @@ public final class HoofprintsOfTheStag extends CardImpl {
// Whenever you draw a card, you may put a hoofprint counter on Hoofprints of the Stag. // Whenever you draw a card, you may put a hoofprint counter on Hoofprints of the Stag.
this.addAbility(new DrawCardControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.HOOFPRINT.createInstance(1)), true)); this.addAbility(new DrawCardControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.HOOFPRINT.createInstance(1)), true));
// {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. // {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 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.addCost(new RemoveCountersSourceCost(CounterType.HOOFPRINT.createInstance(4)));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.ActivateIfConditionActivatedAbility;
@ -10,28 +8,24 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.*;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Layer;
import mage.constants.Outcome;
import mage.constants.SubLayer;
import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetOpponent; import mage.target.common.TargetOpponent;
import java.util.UUID;
/** /**
*
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public final class HumbleDefector extends CardImpl { public final class HumbleDefector extends CardImpl {
public HumbleDefector(UUID ownerId, CardSetInfo setInfo) { public HumbleDefector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.ROGUE); this.subtype.add(SubType.ROGUE);
this.power = new MageInt(2); this.power = new MageInt(2);
@ -40,6 +34,7 @@ public final class HumbleDefector extends CardImpl {
// {T}: Draw two cards. Target opponent gains control of Humble Defector. Activate this ability only during your turn. // {T}: Draw two cards. Target opponent gains control of Humble Defector. Activate this ability only during your turn.
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new HumbleDefectorEffect(), new TapSourceCost(), MyTurnCondition.instance); Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new HumbleDefectorEffect(), new TapSourceCost(), MyTurnCondition.instance);
ability.addTarget(new TargetOpponent()); ability.addTarget(new TargetOpponent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
@ -10,22 +8,19 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.AsThoughEffectImpl;
import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.UntapEnchantedEffect; import mage.abilities.effects.common.UntapEnchantedEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AsThoughEffectType; import mage.constants.*;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author anonymous * @author anonymous
*/ */
public final class InstillEnergy extends CardImpl { public final class InstillEnergy extends CardImpl {
@ -40,10 +35,15 @@ public final class InstillEnergy extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
Ability ability = new EnchantAbility(auraTarget.getTargetName()); Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability); this.addAbility(ability);
// Enchanted creature can attack as though it had haste. // Enchanted creature can attack as though it had haste.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanAttackAsThoughItHadHasteEnchantedEffect(Duration.WhileOnBattlefield))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanAttackAsThoughItHadHasteEnchantedEffect(Duration.WhileOnBattlefield)));
// {0}: Untap enchanted creature. Activate this ability only during your turn and only once each turn. // {0}: Untap enchanted creature. Activate this ability only during your turn and only once each turn.
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapEnchantedEffect(), new GenericManaCost(0), 1, MyTurnCondition.instance)); this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD,
new UntapEnchantedEffect(),
new GenericManaCost(0), 1, MyTurnCondition.instance)
.addHint(MyTurnHint.instance));
} }
public InstillEnergy(final InstillEnergy card) { public InstillEnergy(final InstillEnergy card) {

View file

@ -1,7 +1,5 @@
package mage.cards.j; package mage.cards.j;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility; import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
@ -12,30 +10,33 @@ import mage.abilities.effects.Effect;
import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.continuous.GainControlTargetEffect; import mage.abilities.effects.common.continuous.GainControlTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.MorphAbility; import mage.abilities.keyword.MorphAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.AnotherPredicate; import mage.filter.predicate.permanent.AnotherPredicate;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author emerald000 * @author emerald000
*/ */
public final class JeeringInstigator extends CardImpl { public final class JeeringInstigator extends CardImpl {
static final private FilterCreaturePermanent filter = new FilterCreaturePermanent(); static final private FilterCreaturePermanent filter = new FilterCreaturePermanent();
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
} }
public JeeringInstigator(UUID ownerId, CardSetInfo setInfo) { public JeeringInstigator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
this.subtype.add(SubType.GOBLIN); this.subtype.add(SubType.GOBLIN);
this.subtype.add(SubType.ROGUE); this.subtype.add(SubType.ROGUE);
@ -47,7 +48,7 @@ public final class JeeringInstigator extends CardImpl {
// When Jeering Instigator is turned face up, if it's your turn, gain control of another target creature until end of turn. Untap it. That creature gains haste until end of turn. // When Jeering Instigator is turned face up, if it's your turn, gain control of another target creature until end of turn. Untap it. That creature gains haste until end of turn.
Ability ability = new ConditionalInterveningIfTriggeredAbility( Ability ability = new ConditionalInterveningIfTriggeredAbility(
new TurnedFaceUpSourceTriggeredAbility(new GainControlTargetEffect(Duration.EndOfTurn),false, false), new TurnedFaceUpSourceTriggeredAbility(new GainControlTargetEffect(Duration.EndOfTurn), false, false),
MyTurnCondition.instance, MyTurnCondition.instance,
"When {this} is turned face up, if it's your turn, gain control of another target creature until end of turn. Untap that creature. It gains haste until end of turn."); "When {this} is turned face up, if it's your turn, gain control of another target creature until end of turn. Untap that creature. It gains haste until end of turn.");
ability.setWorksFaceDown(true); ability.setWorksFaceDown(true);
@ -58,6 +59,7 @@ public final class JeeringInstigator extends CardImpl {
effect.setText("It gains haste until end of turn"); effect.setText("It gains haste until end of turn");
ability.addEffect(effect); ability.addEffect(effect);
ability.addTarget(new TargetCreaturePermanent(filter)); ability.addTarget(new TargetCreaturePermanent(filter));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,26 +1,21 @@
package mage.cards.j; package mage.cards.j;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition; import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect; import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AttachmentType; import mage.constants.*;
import mage.constants.CardType;
import mage.constants.Duration; import java.util.UUID;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class JoustingLance extends CardImpl { public final class JoustingLance extends CardImpl {
@ -32,11 +27,14 @@ public final class JoustingLance extends CardImpl {
// Equipped creature gets +2/+0. // Equipped creature gets +2/+0.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 0))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 0)));
// As long as it's your turn, equipped creature has first strike. // As long as it's your turn, equipped creature has first strike.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.EQUIPMENT, Duration.WhileOnBattlefield), new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.EQUIPMENT, Duration.WhileOnBattlefield),
MyTurnCondition.instance, MyTurnCondition.instance,
"As long as it's your turn, equipped creature has first strike."))); "As long as it's your turn, equipped creature has first strike."))
.addHint(MyTurnHint.instance));
// Equip {3} // Equip {3}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3))); this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3)));
} }

View file

@ -1,7 +1,5 @@
package mage.cards.l; package mage.cards.l;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.SpellAbility; import mage.abilities.SpellAbility;
@ -13,25 +11,21 @@ import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.cost.CostModificationEffectImpl; import mage.abilities.effects.common.cost.CostModificationEffectImpl;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.LifelinkAbility; import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.*;
import mage.constants.CostModificationType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.util.CardUtil; import mage.util.CardUtil;
import mage.watchers.common.PlayerGainedLifeWatcher; import mage.watchers.common.PlayerGainedLifeWatcher;
import java.util.UUID;
/** /**
*
* @author TheElk801 * @author TheElk801
*/ */
public final class LiciaSanguineTribune extends CardImpl { public final class LiciaSanguineTribune extends CardImpl {
@ -55,7 +49,8 @@ public final class LiciaSanguineTribune extends CardImpl {
this.addAbility(LifelinkAbility.getInstance()); this.addAbility(LifelinkAbility.getInstance());
// Pay 5 life: Put three +1/+1 counters on Licia. Activate this ability only on your turn and only once each turn. // Pay 5 life: Put three +1/+1 counters on Licia. Activate this ability only on your turn and only once each turn.
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), new PayLifeCost(5), 1, MyTurnCondition.instance)); this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), new PayLifeCost(5), 1, MyTurnCondition.instance)
.addHint(MyTurnHint.instance));
} }
public LiciaSanguineTribune(final LiciaSanguineTribune card) { public LiciaSanguineTribune(final LiciaSanguineTribune card) {

View file

@ -1,7 +1,5 @@
package mage.cards.l; package mage.cards.l;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Abilities; import mage.abilities.Abilities;
import mage.abilities.AbilitiesImpl; import mage.abilities.AbilitiesImpl;
@ -10,6 +8,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.common.NotMyTurnCondition; import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.turn.AddExtraTurnControllerEffect; import mage.abilities.effects.common.turn.AddExtraTurnControllerEffect;
import mage.abilities.hint.common.NotMyTurnHint;
import mage.abilities.keyword.LevelUpAbility; import mage.abilities.keyword.LevelUpAbility;
import mage.abilities.keyword.LevelerCardBuilder; import mage.abilities.keyword.LevelerCardBuilder;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -19,14 +18,15 @@ import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import java.util.UUID;
/** /**
*
* @author BetaSteward_at_googlemail.com, noxx * @author BetaSteward_at_googlemail.com, noxx
*/ */
public final class LighthouseChronologist extends LevelerCard { public final class LighthouseChronologist extends LevelerCard {
public LighthouseChronologist(UUID ownerId, CardSetInfo setInfo) { public LighthouseChronologist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WIZARD); this.subtype.add(SubType.WIZARD);
this.color.setBlue(true); this.color.setBlue(true);
@ -44,7 +44,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. // 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<>(); Abilities<Ability> abilities2 = new AbilitiesImpl<>();
abilities2.add(new BeginningOfEndStepTriggeredAbility( abilities2.add(new BeginningOfEndStepTriggeredAbility(
Zone.BATTLEFIELD, new AddExtraTurnControllerEffect(false), TargetController.ANY, NotMyTurnCondition.instance, false)); Zone.BATTLEFIELD, new AddExtraTurnControllerEffect(false), TargetController.ANY, NotMyTurnCondition.instance, false)
.addHint(NotMyTurnHint.instance));
this.addAbilities(LevelerCardBuilder.construct( this.addAbilities(LevelerCardBuilder.construct(
new LevelerCardBuilder.LevelAbility(4, 6, abilities1, 2, 4), new LevelerCardBuilder.LevelAbility(4, 6, abilities1, 2, 4),

View file

@ -1,7 +1,5 @@
package mage.cards.l; package mage.cards.l;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
@ -12,6 +10,7 @@ import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -20,14 +19,15 @@ import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class LoneWolfOfTheNatterknolls extends CardImpl { public final class LoneWolfOfTheNatterknolls extends CardImpl {
public LoneWolfOfTheNatterknolls(UUID ownerId, CardSetInfo setInfo) { public LoneWolfOfTheNatterknolls(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(3); this.power = new MageInt(3);
this.toughness = new MageInt(5); this.toughness = new MageInt(5);
@ -41,7 +41,7 @@ public final class LoneWolfOfTheNatterknolls extends CardImpl {
new SpellCastOpponentTriggeredAbility(new DrawCardSourceControllerEffect(2), new FilterSpell("a spell"), true), new SpellCastOpponentTriggeredAbility(new DrawCardSourceControllerEffect(2), new FilterSpell("a spell"), true),
MyTurnCondition.instance, MyTurnCondition.instance,
"Whenever an opponent casts a spell during your turn, draw two cards." "Whenever an opponent casts a spell during your turn, draw two cards."
)); ).addHint(MyTurnHint.instance));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Lone Wolf of the Natterknolls. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Lone Wolf of the Natterknolls.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false);

View file

@ -1,4 +1,3 @@
package mage.cards.m; package mage.cards.m;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -14,6 +13,7 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
import mage.abilities.effects.common.RemoveFromCombatTargetEffect; import mage.abilities.effects.common.RemoveFromCombatTargetEffect;
import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -42,7 +42,8 @@ public final class Melee extends CardImpl {
Condition condition = new CompoundCondition(BeforeBlockersAreDeclaredCondition.instance, Condition condition = new CompoundCondition(BeforeBlockersAreDeclaredCondition.instance,
new IsPhaseCondition(TurnPhase.COMBAT), new IsPhaseCondition(TurnPhase.COMBAT),
MyTurnCondition.instance); MyTurnCondition.instance);
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, null, condition, "Cast this spell only during your turn and only during combat before blockers are declared")); this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, null, condition, "Cast this spell only during your turn and only during combat before blockers are declared")
.addHint(new ConditionHint(condition, "Can cast melee (it's combat phase on your turn)")));
// You choose which creatures block this combat and how those creatures block. // You choose which creatures block this combat and how those creatures block.
// (only the last resolved Melee spell's blocking effect applies) // (only the last resolved Melee spell's blocking effect applies)

View file

@ -14,6 +14,7 @@ import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.cost.AbilitiesCostReductionControllerEffect; import mage.abilities.effects.common.cost.AbilitiesCostReductionControllerEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -62,6 +63,7 @@ public final class NahiriStormOfStone extends CardImpl {
EquipAbility.class, "Equip" EquipAbility.class, "Equip"
), MyTurnCondition.instance, "and equip abilities you activate cost {1} less to activate" ), MyTurnCondition.instance, "and equip abilities you activate cost {1} less to activate"
)); ));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability); this.addAbility(ability);
// -X: Nahiri, Storm of Stone deals X damage to target tapped creature. // -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.condition.common.NotMyTurnCondition;
import mage.abilities.decorator.ConditionalCostModificationEffect; import mage.abilities.decorator.ConditionalCostModificationEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -30,7 +31,7 @@ public final class NaiadOfHiddenCoves extends CardImpl {
new SpellsCostReductionControllerEffect(StaticFilters.FILTER_CARD, 1), new SpellsCostReductionControllerEffect(StaticFilters.FILTER_CARD, 1),
NotMyTurnCondition.instance, "As long as it's not your turn, " + NotMyTurnCondition.instance, "As long as it's not your turn, " +
"spells you cast cost {1} less to cast." "spells you cast cost {1} less to cast."
))); )).addHint(MyTurnHint.instance));
} }
private NaiadOfHiddenCoves(final NaiadOfHiddenCoves card) { private NaiadOfHiddenCoves(final NaiadOfHiddenCoves card) {

View file

@ -1,7 +1,5 @@
package mage.cards.n; package mage.cards.n;
import java.util.UUID;
import mage.ObjectColor; import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
@ -13,12 +11,13 @@ import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.UntapEnchantedEffect; import mage.abilities.effects.common.UntapEnchantedEffect;
import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
@ -28,8 +27,9 @@ import mage.filter.predicate.permanent.TappedPredicate;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author L_J * @author L_J
*/ */
public final class NaturesChosen extends CardImpl { public final class NaturesChosen extends CardImpl {
@ -62,7 +62,8 @@ public final class NaturesChosen extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
// {0}: Untap enchanted creature. Activate this ability only during your turn and only once each turn. // {0}: Untap enchanted creature. Activate this ability only during your turn and only once each turn.
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapEnchantedEffect(), new GenericManaCost(0), 1, MyTurnCondition.instance)); this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapEnchantedEffect(), 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. // 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(); Effect effect = new UntapTargetEffect();

View file

@ -1,6 +1,5 @@
package mage.cards.n; package mage.cards.n;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.MageObject; import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -10,18 +9,16 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ChooseACardNameEffect; import mage.abilities.effects.common.ChooseACardNameEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.*; import mage.cards.*;
import mage.constants.CardType; import mage.constants.*;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetOpponent; import mage.target.common.TargetOpponent;
import java.util.UUID;
/** /**
*
* @author fireshoes & L_J * @author fireshoes & L_J
*/ */
public final class Nebuchadnezzar extends CardImpl { public final class Nebuchadnezzar extends CardImpl {
@ -39,6 +36,7 @@ public final class Nebuchadnezzar extends CardImpl {
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addEffect(new NebuchadnezzarEffect()); ability.addEffect(new NebuchadnezzarEffect());
ability.addTarget(new TargetOpponent()); ability.addTarget(new TargetOpponent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,7 +1,5 @@
package mage.cards.n; package mage.cards.n;
import java.util.UUID;
import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility; import mage.abilities.common.CastOnlyDuringPhaseStepSourceAbility;
import mage.abilities.condition.common.MyTurnCondition; import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.PayVariableLifeCost; import mage.abilities.costs.common.PayVariableLifeCost;
@ -12,14 +10,15 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.PhaseStep; import mage.constants.PhaseStep;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class Necrologia extends CardImpl { public final class Necrologia extends CardImpl {
public Necrologia(UUID ownerId, CardSetInfo setInfo) { public Necrologia(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{B}{B}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}{B}");
// Cast Necrologia only during your end step. // Cast Necrologia only during your end step.
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, PhaseStep.END_TURN, MyTurnCondition.instance, this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(null, PhaseStep.END_TURN, MyTurnCondition.instance,

View file

@ -1,36 +1,37 @@
package mage.cards.o; package mage.cards.o;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.NotMyTurnCondition; import mage.abilities.condition.common.NotMyTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.hint.common.NotMyTurnHint;
import mage.abilities.keyword.HexproofAbility; import mage.abilities.keyword.HexproofAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.TappedPredicate; import mage.filter.predicate.permanent.TappedPredicate;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class OakStreetInnkeeper extends CardImpl { public final class OakStreetInnkeeper extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("tapped creatures you control"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("tapped creatures you control");
static { static {
filter.add(TappedPredicate.instance); filter.add(TappedPredicate.instance);
} }
public OakStreetInnkeeper(UUID ownerId, CardSetInfo setInfo) { public OakStreetInnkeeper(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
this.subtype.add(SubType.ELF); this.subtype.add(SubType.ELF);
this.power = new MageInt(1); this.power = new MageInt(1);
@ -40,7 +41,8 @@ public final class OakStreetInnkeeper extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filter), new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filter),
NotMyTurnCondition.instance, NotMyTurnCondition.instance,
"As long as it's not your turn, tapped creatures you control have hexproof"))); "As long as it's not your turn, 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.RequirementEffect;
import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.RestrictionEffect;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; 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. // 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 ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new OracleEnVecEffect(), new TapSourceCost(), MyTurnCondition.instance);
ability.addTarget(new TargetOpponent()); ability.addTarget(new TargetOpponent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability, new AttackedThisTurnWatcher()); this.addAbility(ability, new AttackedThisTurnWatcher());
} }

View file

@ -6,6 +6,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.cards.Cards; import mage.cards.Cards;
@ -36,6 +37,7 @@ public final class PortalOfSanctuary extends CardImpl {
); );
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addTarget(new TargetControlledCreaturePermanent()); ability.addTarget(new TargetControlledCreaturePermanent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability); this.addAbility(ability);
} }

View file

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

View file

@ -1,7 +1,5 @@
package mage.cards.p; package mage.cards.p;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
@ -10,22 +8,24 @@ import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import java.util.UUID;
/** /**
*
* @author Wehk * @author Wehk
*/ */
public final class Prickleboar extends CardImpl { public final class Prickleboar extends CardImpl {
public Prickleboar(UUID ownerId, CardSetInfo setInfo) { public Prickleboar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
this.subtype.add(SubType.BOAR); this.subtype.add(SubType.BOAR);
this.power = new MageInt(3); this.power = new MageInt(3);
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
@ -42,6 +42,7 @@ public final class Prickleboar extends CardImpl {
"and has first strike"); "and has first strike");
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, boostEffect); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, boostEffect);
ability.addEffect(gainAbilityEffect); ability.addEffect(gainAbilityEffect);
ability.addHint(MyTurnHint.instance);
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,6 +1,5 @@
package mage.cards.r; package mage.cards.r;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.ActivateIfConditionActivatedAbility;
@ -9,6 +8,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.RevealHandTargetEffect; import mage.abilities.effects.common.RevealHandTargetEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.*; import mage.cards.*;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
@ -19,6 +19,8 @@ import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetOpponent; import mage.target.common.TargetOpponent;
import java.util.UUID;
/** /**
* @author Quercitron * @author Quercitron
*/ */
@ -32,11 +34,12 @@ public final class RagMan extends CardImpl {
this.power = new MageInt(2); this.power = new MageInt(2);
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// {B}{B}{B}, {tap}: Target opponent reveals their hand and discards a creature card at random. Activate this ability only during your turn. // {B}{B}{B}, {T}: Target opponent reveals their hand and discards a creature card at random. Activate this ability only during your turn.
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new RevealHandTargetEffect(), new ManaCostsImpl("{B}{B}{B}"), MyTurnCondition.instance); Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new RevealHandTargetEffect(), new ManaCostsImpl("{B}{B}{B}"), MyTurnCondition.instance);
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addEffect(new RagManDiscardEffect()); ability.addEffect(new RagManDiscardEffect());
ability.addTarget(new TargetOpponent()); ability.addTarget(new TargetOpponent());
ability.addHint(MyTurnHint.instance);
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,4 +1,3 @@
package mage.abilities.common; package mage.abilities.common;
import mage.abilities.ActivatedAbilityImpl; import mage.abilities.ActivatedAbilityImpl;
@ -11,7 +10,6 @@ import mage.game.Game;
import mage.util.CardUtil; import mage.util.CardUtil;
/** /**
*
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
*/ */
public class LimitedTimesPerTurnActivatedAbility extends ActivatedAbilityImpl { public class LimitedTimesPerTurnActivatedAbility extends ActivatedAbilityImpl {
@ -24,6 +22,7 @@ public class LimitedTimesPerTurnActivatedAbility extends ActivatedAbilityImpl {
this(zone, effect, cost, maxActivationsPerTurn, null); this(zone, effect, cost, maxActivationsPerTurn, null);
} }
// TODO: add card hint about times activated, see https://github.com/magefree/mage/issues/5497
public LimitedTimesPerTurnActivatedAbility(Zone zone, Effect effect, Cost cost, int maxActivationsPerTurn, Condition condition) { public LimitedTimesPerTurnActivatedAbility(Zone zone, Effect effect, Cost cost, int maxActivationsPerTurn, Condition condition) {
super(zone, effect, cost); super(zone, effect, cost);
this.maxActivationsPerTurn = maxActivationsPerTurn; this.maxActivationsPerTurn = maxActivationsPerTurn;

View file

@ -10,6 +10,13 @@ import java.io.Serializable;
*/ */
public interface Hint extends Serializable { public interface Hint extends Serializable {
// TODO: add card hint for ActivateIfConditionActivatedAbility
// * remove my turn condition from cards construction
// * test condition texts (add alternative texts to donditions like getHintText?)
// * add auto-capitalize of first symbol
// * add support of compound conditions
// see https://github.com/magefree/mage/issues/5497
String getText(Game game, Ability ability); String getText(Game game, Ability ability);
Hint copy(); Hint copy();