* Choose from outside - added card hints about sideboard stats and howto view a cards list;

This commit is contained in:
Oleg Agafonov 2021-07-21 20:40:31 +04:00
parent e330ed6c7b
commit 5985e6cfcc
41 changed files with 151 additions and 12 deletions

View file

@ -7,6 +7,7 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.combat.BlocksIfAbleTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -34,6 +35,7 @@ public final class AcademicDispute extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private AcademicDispute(final AcademicDispute card) {

View file

@ -2,6 +2,7 @@ package mage.cards.a;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -23,6 +24,7 @@ public final class ArcaneSubtraction extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private ArcaneSubtraction(final ArcaneSubtraction card) {

View file

@ -4,6 +4,7 @@ package mage.cards.b;
import java.util.UUID;
import mage.abilities.effects.common.ExileSpellEffect;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -26,6 +27,7 @@ public final class BurningWish extends CardImpl {
// You may choose a sorcery card you own from outside the game, reveal that card, and put it into your hand.
this.getSpellAbility().addEffect(new WishEffect(filter));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
// Exile Burning Wish.
this.getSpellAbility().addEffect(new ExileSpellEffect());

View file

@ -3,6 +3,7 @@ package mage.cards.c;
import java.util.UUID;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -26,6 +27,7 @@ public final class CoaxFromTheBlindEternities extends CardImpl {
// You may choose an Eldrazi card you own from outside the game or in exile, reveal that card, and put it into your hand.
this.getSpellAbility().addEffect(new WishEffect(filter, true, true));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private CoaxFromTheBlindEternities(final CoaxFromTheBlindEternities card) {

View file

@ -2,6 +2,7 @@ package mage.cards.c;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -21,6 +22,7 @@ public final class CramSession extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private CramSession(final CramSession card) {

View file

@ -4,6 +4,7 @@ package mage.cards.c;
import java.util.UUID;
import mage.abilities.effects.common.ExileSpellEffect;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -26,6 +27,7 @@ public final class CunningWish extends CardImpl {
// You may choose an instant card you own from outside the game, reveal that card, and put it into your hand.
this.getSpellAbility().addEffect(new WishEffect(filter));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
// Exile Cunning Wish.
this.getSpellAbility().addEffect(new ExileSpellEffect());

View file

@ -3,6 +3,7 @@ package mage.cards.d;
import mage.abilities.effects.common.ExileSpellEffect;
import mage.abilities.effects.common.LoseHalfLifeEffect;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -20,6 +21,7 @@ public final class DeathWish extends CardImpl {
// You may choose a card you own from outside the game and put it into your hand.
this.getSpellAbility().addEffect(new WishEffect(StaticFilters.FILTER_CARD_A, false));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
// You lose half your life, rounded up.
this.getSpellAbility().addEffect(new LoseHalfLifeEffect());

View file

@ -2,6 +2,7 @@ package mage.cards.d;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -37,6 +38,7 @@ public final class DivideByZero extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private DivideByZero(final DivideByZero card) {

View file

@ -6,6 +6,7 @@ import mage.abilities.common.BecomesTargetTriggeredAbility;
import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.SacrificeSourceEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.constants.SubType;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
@ -36,7 +37,8 @@ public final class DreamStrix extends CardImpl {
));
// When Dream Strix dies, learn.
this.addAbility(new DiesSourceTriggeredAbility(new LearnEffect()));
this.addAbility(new DiesSourceTriggeredAbility(new LearnEffect())
.addHint(OpenSideboardHint.instance));
}
private DreamStrix(final DreamStrix card) {

View file

@ -3,6 +3,7 @@ package mage.cards.e;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -31,6 +32,7 @@ public final class EnthusiasticStudy extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private EnthusiasticStudy(final EnthusiasticStudy card) {

View file

@ -3,6 +3,7 @@ package mage.cards.e;
import mage.MageInt;
import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -28,7 +29,8 @@ public final class Eyetwitch extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// When Eyetwitch dies, learn.
this.addAbility(new DiesSourceTriggeredAbility(new LearnEffect()));
this.addAbility(new DiesSourceTriggeredAbility(new LearnEffect())
.addHint(OpenSideboardHint.instance));
}
private Eyetwitch(final Eyetwitch card) {

View file

@ -7,6 +7,7 @@ import mage.abilities.costs.common.DiscardTargetCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.AdventureCard;
import mage.cards.CardSetInfo;
@ -46,6 +47,7 @@ public final class FaeOfWishes extends AdventureCard {
// Granted
// You may choose a noncreature card you own from outside the game, reveal it, and put it into your hand.
this.getSpellCard().getSpellAbility().addEffect(new WishEffect(StaticFilters.FILTER_CARD_A_NON_CREATURE));
this.getSpellCard().getSpellAbility().addHint(OpenSideboardHint.instance);
}
private FaeOfWishes(final FaeOfWishes card) {

View file

@ -2,6 +2,7 @@ package mage.cards.f;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -32,6 +33,7 @@ public final class FieldTrip extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private FieldTrip(final FieldTrip card) {

View file

@ -5,6 +5,7 @@ import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -32,6 +33,7 @@ public final class FirstDayOfClass extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private FirstDayOfClass(final FirstDayOfClass card) {

View file

@ -4,6 +4,7 @@ package mage.cards.g;
import java.util.UUID;
import mage.abilities.effects.common.ExileSpellEffect;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -27,6 +28,7 @@ public final class GlitteringWish extends CardImpl {
// You may choose a multicolored card you own from outside the game, reveal that card, and put it into your hand.
this.getSpellAbility().addEffect(new WishEffect(filter));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
// Exile Glittering Wish.
this.getSpellAbility().addEffect(new ExileSpellEffect());

View file

@ -3,6 +3,7 @@ package mage.cards.g;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -28,7 +29,8 @@ public final class GnarledProfessor extends CardImpl {
this.addAbility(TrampleAbility.getInstance());
// When Gnarled Professor enters the battlefield, learn.
this.addAbility(new EntersBattlefieldTriggeredAbility(new LearnEffect()));
this.addAbility(new EntersBattlefieldTriggeredAbility(new LearnEffect())
.addHint(OpenSideboardHint.instance));
}
private GnarledProfessor(final GnarledProfessor card) {

View file

@ -4,6 +4,7 @@ package mage.cards.g;
import java.util.UUID;
import mage.abilities.effects.common.ExileSpellEffect;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -29,6 +30,7 @@ public final class GoldenWish extends CardImpl {
// You may choose an artifact or enchantment card you own from outside the game, reveal that card, and put it into your hand.
this.getSpellAbility().addEffect(new WishEffect(filter));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
// Exile Golden Wish.
this.getSpellAbility().addEffect(new ExileSpellEffect());

View file

@ -2,6 +2,7 @@ package mage.cards.g;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -24,6 +25,7 @@ public final class GuidingVoice extends CardImpl {
// Learn (You may reveal a Lesson card you own from outside the game and put it into your hand, or discard a card to draw a card.)
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private GuidingVoice(final GuidingVoice card) {

View file

@ -2,6 +2,7 @@ package mage.cards.h;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -22,6 +23,7 @@ public final class HuntForSpecimens extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private HuntForSpecimens(final HuntForSpecimens card) {

View file

@ -2,6 +2,7 @@ package mage.cards.i;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -23,6 +24,7 @@ public final class IgneousInspiration extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private IgneousInspiration(final IgneousInspiration card) {

View file

@ -7,6 +7,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.RestrictionEffect;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@ -50,7 +51,7 @@ public final class KarnTheGreatCreator extends CardImpl {
// -2: You may choose an artifact card you own from outside the game or in exile, reveal that card, and put it into your hand.
this.addAbility(new LoyaltyAbility(new WishEffect(
StaticFilters.FILTER_CARD_ARTIFACT_AN, true, true
), -2));
), -2).addHint(OpenSideboardHint.instance));
}
private KarnTheGreatCreator(final KarnTheGreatCreator card) {

View file

@ -5,6 +5,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.constants.SubType;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
@ -37,7 +38,8 @@ public final class LegionAngel extends CardImpl {
// When Legion Angel enters the battlefield, you may reveal a card you own named Legion Angel from outside the game and put it into your hand.
this.addAbility(new EntersBattlefieldTriggeredAbility(new WishEffect(filter, true, false)
.setText("you may reveal a card you own named Legion Angel from outside the game and put it into your hand")));
.setText("you may reveal a card you own named Legion Angel from outside the game and put it into your hand"))
.addHint(OpenSideboardHint.instance));
}
private LegionAngel(final LegionAngel card) {

View file

@ -4,6 +4,7 @@ package mage.cards.l;
import java.util.UUID;
import mage.abilities.effects.common.ExileSpellEffect;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -29,6 +30,7 @@ public final class LivingWish extends CardImpl {
// You may choose a creature or land card you own from outside the game, reveal that card, and put it into your hand.
this.getSpellAbility().addEffect(new WishEffect(filter));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
// Exile Living Wish.
this.getSpellAbility().addEffect(new ExileSpellEffect());

View file

@ -3,6 +3,7 @@ package mage.cards.m;
import mage.abilities.Mode;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -27,6 +28,7 @@ public final class MastermindsAcquisition extends CardImpl {
Mode mode = new Mode(new WishEffect(StaticFilters.FILTER_CARD_A, false)
.setText("Put a card you own from outside the game into your hand"));
this.getSpellAbility().addMode(mode);
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private MastermindsAcquisition(final MastermindsAcquisition card) {

View file

@ -8,6 +8,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.DefenderAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -38,6 +39,7 @@ public final class OvergrownArch extends CardImpl {
// {2}, Sacrifice Overgrown Arch: Learn.
Ability ability = new SimpleActivatedAbility(new LearnEffect(), new GenericManaCost(2));
ability.addCost(new SacrificeSourceCost());
ability.addHint(OpenSideboardHint.instance);
this.addAbility(ability);
}

View file

@ -7,6 +7,7 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.EquipAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
@ -29,7 +30,8 @@ public final class PoetsQuill extends CardImpl {
this.subtype.add(SubType.EQUIPMENT);
// When Poet's Quill enters the battlefield, learn.
this.addAbility(new EntersBattlefieldTriggeredAbility(new LearnEffect()));
this.addAbility(new EntersBattlefieldTriggeredAbility(new LearnEffect())
.addHint(OpenSideboardHint.instance));
// Equipped creature gets +1/+1 and has lifelink.
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(1, 1));

View file

@ -2,6 +2,7 @@ package mage.cards.p;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -21,6 +22,7 @@ public final class PopQuiz extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private PopQuiz(final PopQuiz card) {

View file

@ -3,6 +3,7 @@ package mage.cards.p;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -24,7 +25,8 @@ public final class ProfessorOfSymbology extends CardImpl {
this.toughness = new MageInt(1);
// When Professor of Symbology enters the battlefield, learn.
this.addAbility(new EntersBattlefieldTriggeredAbility(new LearnEffect()));
this.addAbility(new EntersBattlefieldTriggeredAbility(new LearnEffect())
.addHint(OpenSideboardHint.instance));
}
private ProfessorOfSymbology(final ProfessorOfSymbology card) {

View file

@ -5,6 +5,7 @@ import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.*;
import mage.constants.CardType;
import mage.constants.Outcome;
@ -26,6 +27,7 @@ public final class ResearchDevelopment extends SplitCard {
// Choose up to four cards you own from outside the game and shuffle them into your library.
getLeftHalfCard().getSpellAbility().addEffect(new ResearchEffect());
getLeftHalfCard().getSpellAbility().addHint(OpenSideboardHint.instance);
// Create a 3/1 red Elemental creature token unless any opponent has you draw a card. Repeat this process two more times.
getRightHalfCard().getSpellAbility().addEffect(new DevelopmentEffect());

View file

@ -9,6 +9,7 @@ import mage.abilities.condition.common.CastFromEverywhereSourceCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.HasteAbility;
import mage.cards.Card;
@ -43,7 +44,7 @@ public final class RetrieverPhoenix extends CardImpl {
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new LearnEffect()), CastFromEverywhereSourceCondition.instance,
"When {this} enters the battlefield, if you cast it, " + LearnEffect.getDefaultText()
));
).addHint(OpenSideboardHint.instance));
// As long as Retriever Phoenix is in your graveyard, if you would learn, you may instead return Retriever Phoenix to the battlefield.
this.addAbility(new SimpleStaticAbility(Zone.GRAVEYARD, new RetrieverPhoenixEffect()));

View file

@ -9,6 +9,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.effects.common.WishEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -33,6 +34,7 @@ public final class RingOfMaruf extends CardImpl {
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RingOfMarufEffect(), new ManaCostsImpl("{5}"));
ability.addCost(new TapSourceCost());
ability.addCost(new ExileSourceCost());
ability.addHint(OpenSideboardHint.instance);
this.addAbility(ability);
}

View file

@ -2,6 +2,7 @@ package mage.cards.r;
import mage.abilities.effects.common.ExileTargetEffect;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -29,6 +30,7 @@ public final class RiseOfExtus extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private RiseOfExtus(final RiseOfExtus card) {

View file

@ -6,6 +6,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -23,7 +24,8 @@ public final class SparringRegimen extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
// When Sparring Regimen enters the battlefield, learn.
this.addAbility(new EntersBattlefieldTriggeredAbility(new LearnEffect()));
this.addAbility(new EntersBattlefieldTriggeredAbility(new LearnEffect())
.addHint(OpenSideboardHint.instance));
// Whenever you attack, put a +1/+1 counter on target attacking creature and untap it.
Ability ability = new AttacksWithCreaturesTriggeredAbility(

View file

@ -7,6 +7,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.CastCardFromOutsideTheGameEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.AnnihilatorAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -43,7 +44,9 @@ public final class SpawnsireOfUlamog extends CardImpl {
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new EldraziSpawnToken(), 2), new GenericManaCost(4)));
// {20}: Cast any number of Eldrazi cards you own from outside the game without paying their mana costs.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CastCardFromOutsideTheGameEffect(filter, ruleText), new GenericManaCost(20)));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
new CastCardFromOutsideTheGameEffect(filter, ruleText), new GenericManaCost(20)
).addHint(OpenSideboardHint.instance));
}
private SpawnsireOfUlamog(final SpawnsireOfUlamog card) {

View file

@ -2,6 +2,7 @@ package mage.cards.s;
import mage.abilities.effects.common.LearnEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -23,6 +24,7 @@ public final class StudyBreak extends CardImpl {
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private StudyBreak(final StudyBreak card) {

View file

@ -7,6 +7,7 @@ import java.util.UUID;
import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.common.SagaAbility;
import mage.abilities.effects.common.*;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.constants.Duration;
import mage.constants.SagaChapter;
@ -51,6 +52,7 @@ public final class TheRavensWarning extends CardImpl {
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III,
new WishEffect(StaticFilters.FILTER_CARD_A, false, false, true)
);
sagaAbility.addHint(OpenSideboardHint.instance);
this.addAbility(sagaAbility);
}

View file

@ -7,6 +7,7 @@ import mage.abilities.effects.common.DamageWithPowerFromOneToAnotherTargetEffect
import mage.abilities.effects.common.WishEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.counter.DistributeCountersEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -58,7 +59,8 @@ public final class VivienArkbowRanger extends CardImpl {
this.addAbility(ability);
// 5: You may choose a creature card you own from outside the game, reveal it, and put it into your hand.
this.addAbility(new LoyaltyAbility(new WishEffect(StaticFilters.FILTER_CARD_CREATURE_A), -5));
this.addAbility(new LoyaltyAbility(new WishEffect(StaticFilters.FILTER_CARD_CREATURE_A), -5)
.addHint(OpenSideboardHint.instance));
}
private VivienArkbowRanger(final VivienArkbowRanger card) {

View file

@ -10,6 +10,7 @@ import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.effects.AsThoughEffectImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.OpenSideboardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@ -32,6 +33,7 @@ public final class Wish extends CardImpl {
this.getSpellAbility().addEffect(new WishEffect());
this.getSpellAbility().setIdentifier(MageIdentifier.WishWatcher);
this.getSpellAbility().addWatcher(new WishWatcher());
this.getSpellAbility().addHint(OpenSideboardHint.instance);
}
private Wish(final Wish card) {

View file

@ -0,0 +1,39 @@
package mage.abilities.dynamicvalue.common;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.game.Game;
import mage.players.Player;
/**
* @author JayDi85
*/
public enum SideboardCardsYouControlCount implements DynamicValue {
instance;
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
Player player = game.getPlayer(sourceAbility.getControllerId());
if (player == null) {
return 0;
}
return player.getSideboard().size();
}
@Override
public SideboardCardsYouControlCount copy() {
return instance;
}
@Override
public String toString() {
return "1";
}
@Override
public String getMessage() {
return "cards in your sideboard";
}
}

View file

@ -1,4 +1,3 @@
package mage.abilities.effects.common;
import java.util.Set;

View file

@ -0,0 +1,26 @@
package mage.abilities.hint.common;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.SideboardCardsYouControlCount;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.game.Game;
/**
* @author JayDi85
*/
public enum OpenSideboardHint implements Hint {
instance;
private static final Hint hint = new ValueHint("Cards in your sideboard", SideboardCardsYouControlCount.instance);
@Override
public String getText(Game game, Ability ability) {
return hint.getText(game, ability) + " (<i>Right click on battlefield to open player's sideboard at any time</i>)";
}
@Override
public Hint copy() {
return instance;
}
}