diff --git a/Mage.Sets/src/mage/cards/a/AcademicDispute.java b/Mage.Sets/src/mage/cards/a/AcademicDispute.java index 2e35b10d99f..580f41daeb8 100644 --- a/Mage.Sets/src/mage/cards/a/AcademicDispute.java +++ b/Mage.Sets/src/mage/cards/a/AcademicDispute.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private AcademicDispute(final AcademicDispute card) { diff --git a/Mage.Sets/src/mage/cards/a/ArcaneSubtraction.java b/Mage.Sets/src/mage/cards/a/ArcaneSubtraction.java index 91310eeee2a..ea2f815b30b 100644 --- a/Mage.Sets/src/mage/cards/a/ArcaneSubtraction.java +++ b/Mage.Sets/src/mage/cards/a/ArcaneSubtraction.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private ArcaneSubtraction(final ArcaneSubtraction card) { diff --git a/Mage.Sets/src/mage/cards/b/BurningWish.java b/Mage.Sets/src/mage/cards/b/BurningWish.java index 1d2bf6d72b0..39f191083a5 100644 --- a/Mage.Sets/src/mage/cards/b/BurningWish.java +++ b/Mage.Sets/src/mage/cards/b/BurningWish.java @@ -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()); diff --git a/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java b/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java index cf2975bbf43..8c94e731250 100644 --- a/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java +++ b/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/c/CramSession.java b/Mage.Sets/src/mage/cards/c/CramSession.java index fd6f3574255..dec38d8d71b 100644 --- a/Mage.Sets/src/mage/cards/c/CramSession.java +++ b/Mage.Sets/src/mage/cards/c/CramSession.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private CramSession(final CramSession card) { diff --git a/Mage.Sets/src/mage/cards/c/CunningWish.java b/Mage.Sets/src/mage/cards/c/CunningWish.java index cc61a71f38a..1b085f99d38 100644 --- a/Mage.Sets/src/mage/cards/c/CunningWish.java +++ b/Mage.Sets/src/mage/cards/c/CunningWish.java @@ -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()); diff --git a/Mage.Sets/src/mage/cards/d/DeathWish.java b/Mage.Sets/src/mage/cards/d/DeathWish.java index 6b133b73fae..526112d3cf8 100644 --- a/Mage.Sets/src/mage/cards/d/DeathWish.java +++ b/Mage.Sets/src/mage/cards/d/DeathWish.java @@ -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()); diff --git a/Mage.Sets/src/mage/cards/d/DivideByZero.java b/Mage.Sets/src/mage/cards/d/DivideByZero.java index 4852b204f0e..5a8161ecff4 100644 --- a/Mage.Sets/src/mage/cards/d/DivideByZero.java +++ b/Mage.Sets/src/mage/cards/d/DivideByZero.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private DivideByZero(final DivideByZero card) { diff --git a/Mage.Sets/src/mage/cards/d/DreamStrix.java b/Mage.Sets/src/mage/cards/d/DreamStrix.java index 68382471fbe..f0a4a8c08c2 100644 --- a/Mage.Sets/src/mage/cards/d/DreamStrix.java +++ b/Mage.Sets/src/mage/cards/d/DreamStrix.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/e/EnthusiasticStudy.java b/Mage.Sets/src/mage/cards/e/EnthusiasticStudy.java index 6a283b1a70d..c08e92fa4b8 100644 --- a/Mage.Sets/src/mage/cards/e/EnthusiasticStudy.java +++ b/Mage.Sets/src/mage/cards/e/EnthusiasticStudy.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private EnthusiasticStudy(final EnthusiasticStudy card) { diff --git a/Mage.Sets/src/mage/cards/e/Eyetwitch.java b/Mage.Sets/src/mage/cards/e/Eyetwitch.java index 335438d0d14..3927db7680c 100644 --- a/Mage.Sets/src/mage/cards/e/Eyetwitch.java +++ b/Mage.Sets/src/mage/cards/e/Eyetwitch.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/f/FaeOfWishes.java b/Mage.Sets/src/mage/cards/f/FaeOfWishes.java index 473bcb4a062..ab1a4ce4652 100644 --- a/Mage.Sets/src/mage/cards/f/FaeOfWishes.java +++ b/Mage.Sets/src/mage/cards/f/FaeOfWishes.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/f/FieldTrip.java b/Mage.Sets/src/mage/cards/f/FieldTrip.java index a76ce68b19d..34cd8fc8709 100644 --- a/Mage.Sets/src/mage/cards/f/FieldTrip.java +++ b/Mage.Sets/src/mage/cards/f/FieldTrip.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private FieldTrip(final FieldTrip card) { diff --git a/Mage.Sets/src/mage/cards/f/FirstDayOfClass.java b/Mage.Sets/src/mage/cards/f/FirstDayOfClass.java index 48c8052b6bb..14562d20848 100644 --- a/Mage.Sets/src/mage/cards/f/FirstDayOfClass.java +++ b/Mage.Sets/src/mage/cards/f/FirstDayOfClass.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private FirstDayOfClass(final FirstDayOfClass card) { diff --git a/Mage.Sets/src/mage/cards/g/GlitteringWish.java b/Mage.Sets/src/mage/cards/g/GlitteringWish.java index 9a68a3525a0..4faed702145 100644 --- a/Mage.Sets/src/mage/cards/g/GlitteringWish.java +++ b/Mage.Sets/src/mage/cards/g/GlitteringWish.java @@ -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()); diff --git a/Mage.Sets/src/mage/cards/g/GnarledProfessor.java b/Mage.Sets/src/mage/cards/g/GnarledProfessor.java index 7d17ce9c005..43bedb8dc24 100644 --- a/Mage.Sets/src/mage/cards/g/GnarledProfessor.java +++ b/Mage.Sets/src/mage/cards/g/GnarledProfessor.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/g/GoldenWish.java b/Mage.Sets/src/mage/cards/g/GoldenWish.java index 276d79134d9..b7e35b52e1d 100644 --- a/Mage.Sets/src/mage/cards/g/GoldenWish.java +++ b/Mage.Sets/src/mage/cards/g/GoldenWish.java @@ -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()); diff --git a/Mage.Sets/src/mage/cards/g/GuidingVoice.java b/Mage.Sets/src/mage/cards/g/GuidingVoice.java index 6c0dce88a95..1095588c6fd 100644 --- a/Mage.Sets/src/mage/cards/g/GuidingVoice.java +++ b/Mage.Sets/src/mage/cards/g/GuidingVoice.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private GuidingVoice(final GuidingVoice card) { diff --git a/Mage.Sets/src/mage/cards/h/HuntForSpecimens.java b/Mage.Sets/src/mage/cards/h/HuntForSpecimens.java index 4d2878f0ffc..9c27136c097 100644 --- a/Mage.Sets/src/mage/cards/h/HuntForSpecimens.java +++ b/Mage.Sets/src/mage/cards/h/HuntForSpecimens.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private HuntForSpecimens(final HuntForSpecimens card) { diff --git a/Mage.Sets/src/mage/cards/i/IgneousInspiration.java b/Mage.Sets/src/mage/cards/i/IgneousInspiration.java index ab28922c5b6..e300cb28cea 100644 --- a/Mage.Sets/src/mage/cards/i/IgneousInspiration.java +++ b/Mage.Sets/src/mage/cards/i/IgneousInspiration.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private IgneousInspiration(final IgneousInspiration card) { diff --git a/Mage.Sets/src/mage/cards/k/KarnTheGreatCreator.java b/Mage.Sets/src/mage/cards/k/KarnTheGreatCreator.java index 9a25f543317..9b03477534b 100644 --- a/Mage.Sets/src/mage/cards/k/KarnTheGreatCreator.java +++ b/Mage.Sets/src/mage/cards/k/KarnTheGreatCreator.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LegionAngel.java b/Mage.Sets/src/mage/cards/l/LegionAngel.java index 7b4398ea5ad..c9ed5e7a014 100644 --- a/Mage.Sets/src/mage/cards/l/LegionAngel.java +++ b/Mage.Sets/src/mage/cards/l/LegionAngel.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LivingWish.java b/Mage.Sets/src/mage/cards/l/LivingWish.java index 8302027b299..b6c62a9977d 100644 --- a/Mage.Sets/src/mage/cards/l/LivingWish.java +++ b/Mage.Sets/src/mage/cards/l/LivingWish.java @@ -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()); diff --git a/Mage.Sets/src/mage/cards/m/MastermindsAcquisition.java b/Mage.Sets/src/mage/cards/m/MastermindsAcquisition.java index da1af878cc5..d1324c9b0c1 100644 --- a/Mage.Sets/src/mage/cards/m/MastermindsAcquisition.java +++ b/Mage.Sets/src/mage/cards/m/MastermindsAcquisition.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/o/OvergrownArch.java b/Mage.Sets/src/mage/cards/o/OvergrownArch.java index fca357f306c..9d05efaa4d9 100644 --- a/Mage.Sets/src/mage/cards/o/OvergrownArch.java +++ b/Mage.Sets/src/mage/cards/o/OvergrownArch.java @@ -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); } diff --git a/Mage.Sets/src/mage/cards/p/PoetsQuill.java b/Mage.Sets/src/mage/cards/p/PoetsQuill.java index a77aa3f4f75..7895c32a99e 100644 --- a/Mage.Sets/src/mage/cards/p/PoetsQuill.java +++ b/Mage.Sets/src/mage/cards/p/PoetsQuill.java @@ -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)); diff --git a/Mage.Sets/src/mage/cards/p/PopQuiz.java b/Mage.Sets/src/mage/cards/p/PopQuiz.java index 719da61d175..0b32b6d700c 100644 --- a/Mage.Sets/src/mage/cards/p/PopQuiz.java +++ b/Mage.Sets/src/mage/cards/p/PopQuiz.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private PopQuiz(final PopQuiz card) { diff --git a/Mage.Sets/src/mage/cards/p/ProfessorOfSymbology.java b/Mage.Sets/src/mage/cards/p/ProfessorOfSymbology.java index a81f4db5759..a606ff80cbd 100644 --- a/Mage.Sets/src/mage/cards/p/ProfessorOfSymbology.java +++ b/Mage.Sets/src/mage/cards/p/ProfessorOfSymbology.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/r/ResearchDevelopment.java b/Mage.Sets/src/mage/cards/r/ResearchDevelopment.java index 28280a74b19..9381fc18d83 100644 --- a/Mage.Sets/src/mage/cards/r/ResearchDevelopment.java +++ b/Mage.Sets/src/mage/cards/r/ResearchDevelopment.java @@ -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()); diff --git a/Mage.Sets/src/mage/cards/r/RetrieverPhoenix.java b/Mage.Sets/src/mage/cards/r/RetrieverPhoenix.java index 518e2e28397..ea75c81b534 100644 --- a/Mage.Sets/src/mage/cards/r/RetrieverPhoenix.java +++ b/Mage.Sets/src/mage/cards/r/RetrieverPhoenix.java @@ -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())); diff --git a/Mage.Sets/src/mage/cards/r/RingOfMaruf.java b/Mage.Sets/src/mage/cards/r/RingOfMaruf.java index aa46e2d060c..b0e284423d7 100644 --- a/Mage.Sets/src/mage/cards/r/RingOfMaruf.java +++ b/Mage.Sets/src/mage/cards/r/RingOfMaruf.java @@ -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); } diff --git a/Mage.Sets/src/mage/cards/r/RiseOfExtus.java b/Mage.Sets/src/mage/cards/r/RiseOfExtus.java index e3de6d030ea..1f9769c771d 100644 --- a/Mage.Sets/src/mage/cards/r/RiseOfExtus.java +++ b/Mage.Sets/src/mage/cards/r/RiseOfExtus.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private RiseOfExtus(final RiseOfExtus card) { diff --git a/Mage.Sets/src/mage/cards/s/SparringRegimen.java b/Mage.Sets/src/mage/cards/s/SparringRegimen.java index ee78fc10596..ef7ef8a13e5 100644 --- a/Mage.Sets/src/mage/cards/s/SparringRegimen.java +++ b/Mage.Sets/src/mage/cards/s/SparringRegimen.java @@ -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( diff --git a/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java b/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java index 3a0bf92581c..2abbb5e5ce8 100644 --- a/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java +++ b/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/s/StudyBreak.java b/Mage.Sets/src/mage/cards/s/StudyBreak.java index 7ee654547fd..08077090057 100644 --- a/Mage.Sets/src/mage/cards/s/StudyBreak.java +++ b/Mage.Sets/src/mage/cards/s/StudyBreak.java @@ -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("
")); + this.getSpellAbility().addHint(OpenSideboardHint.instance); } private StudyBreak(final StudyBreak card) { diff --git a/Mage.Sets/src/mage/cards/t/TheRavensWarning.java b/Mage.Sets/src/mage/cards/t/TheRavensWarning.java index 832b944f9a9..f6aeef0abb0 100644 --- a/Mage.Sets/src/mage/cards/t/TheRavensWarning.java +++ b/Mage.Sets/src/mage/cards/t/TheRavensWarning.java @@ -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); } diff --git a/Mage.Sets/src/mage/cards/v/VivienArkbowRanger.java b/Mage.Sets/src/mage/cards/v/VivienArkbowRanger.java index e1c24f89b50..1bab419d820 100644 --- a/Mage.Sets/src/mage/cards/v/VivienArkbowRanger.java +++ b/Mage.Sets/src/mage/cards/v/VivienArkbowRanger.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/w/Wish.java b/Mage.Sets/src/mage/cards/w/Wish.java index bb2354d7d33..7b0d8ab81cf 100644 --- a/Mage.Sets/src/mage/cards/w/Wish.java +++ b/Mage.Sets/src/mage/cards/w/Wish.java @@ -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) { diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/SideboardCardsYouControlCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SideboardCardsYouControlCount.java new file mode 100644 index 00000000000..71e09969397 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/SideboardCardsYouControlCount.java @@ -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"; + } +} diff --git a/Mage/src/main/java/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java index 5ca6bc1e486..a566afcc6ac 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common; import java.util.Set; diff --git a/Mage/src/main/java/mage/abilities/hint/common/OpenSideboardHint.java b/Mage/src/main/java/mage/abilities/hint/common/OpenSideboardHint.java new file mode 100644 index 00000000000..f99a83bedc9 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/hint/common/OpenSideboardHint.java @@ -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) + " (Right click on battlefield to open player's sideboard at any time)"; + } + + @Override + public Hint copy() { + return instance; + } +}