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;
+ }
+}