diff --git a/Mage.Sets/src/mage/cards/a/AragornKingOfGondor.java b/Mage.Sets/src/mage/cards/a/AragornKingOfGondor.java index 8dfb6dc8500..07a660c62b9 100644 --- a/Mage.Sets/src/mage/cards/a/AragornKingOfGondor.java +++ b/Mage.Sets/src/mage/cards/a/AragornKingOfGondor.java @@ -10,6 +10,7 @@ import mage.abilities.effects.common.AddContinuousEffectToGame; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.combat.CantBlockAllEffect; import mage.abilities.effects.common.combat.CantBlockTargetEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.LifelinkAbility; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; @@ -44,7 +45,7 @@ public final class AragornKingOfGondor extends CardImpl { this.addAbility(LifelinkAbility.getInstance()); // When Aragorn, King of Gondor enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // Whenever Aragorn attacks, up to one target creature can't block this turn. If you're the monarch, creatures can't block this turn. Ability ability = new AttacksTriggeredAbility(new CantBlockTargetEffect(Duration.EndOfTurn)); diff --git a/Mage.Sets/src/mage/cards/a/ArchivistOfGondor.java b/Mage.Sets/src/mage/cards/a/ArchivistOfGondor.java index f5e69f6aef5..f71bd25f7ae 100644 --- a/Mage.Sets/src/mage/cards/a/ArchivistOfGondor.java +++ b/Mage.Sets/src/mage/cards/a/ArchivistOfGondor.java @@ -6,6 +6,7 @@ import mage.abilities.common.DealsDamageToAPlayerAllTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.DrawCardTargetEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -44,7 +45,7 @@ public final class ArchivistOfGondor extends CardImpl { SetTargetPointer.NONE, true ), (game, source) -> game.getMonarchId() == null, "When your commander " + "deals combat damage to a player, if there is no monarch, you become the monarch." - )); + ).addHint(MonarchHint.instance)); // At the beginning of the monarch's end step, that player draws a card. this.addAbility(new BeginningOfEndStepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/a/ArchonOfCoronation.java b/Mage.Sets/src/mage/cards/a/ArchonOfCoronation.java index 91159f4bb74..ac3c43346e5 100644 --- a/Mage.Sets/src/mage/cards/a/ArchonOfCoronation.java +++ b/Mage.Sets/src/mage/cards/a/ArchonOfCoronation.java @@ -6,6 +6,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -34,7 +35,7 @@ public final class ArchonOfCoronation extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Archon of Coronation enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // As long as you're the monarch, damage doesn't cause you to lose life. this.addAbility(new SimpleStaticAbility(new ArchonOfCoronationEffect())); diff --git a/Mage.Sets/src/mage/cards/a/AzureFleetAdmiral.java b/Mage.Sets/src/mage/cards/a/AzureFleetAdmiral.java index 13ecea64a75..50de91ed814 100644 --- a/Mage.Sets/src/mage/cards/a/AzureFleetAdmiral.java +++ b/Mage.Sets/src/mage/cards/a/AzureFleetAdmiral.java @@ -5,6 +5,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.combat.CantBeBlockedByAllSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -38,7 +39,7 @@ public final class AzureFleetAdmiral extends CardImpl { this.toughness = new MageInt(3); // When Azure Fleet Admiral enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // Azure Fleet Admiral can't be blocked by creatures the monarch controls. this.addAbility(new SimpleStaticAbility( diff --git a/Mage.Sets/src/mage/cards/c/CanalCourier.java b/Mage.Sets/src/mage/cards/c/CanalCourier.java index 3d6e589b19e..2e28abbe903 100644 --- a/Mage.Sets/src/mage/cards/c/CanalCourier.java +++ b/Mage.Sets/src/mage/cards/c/CanalCourier.java @@ -9,6 +9,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -35,7 +36,7 @@ public final class CanalCourier extends CardImpl { this.toughness = new MageInt(5); // When Canal Courier enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // Whenever Canal Courier and another creature attack different players, Canal Courier can't be blocked this combat. Effect effect = new CantBeBlockedSourceEffect(Duration.EndOfCombat); diff --git a/Mage.Sets/src/mage/cards/c/ChampionsOfMinasTirith.java b/Mage.Sets/src/mage/cards/c/ChampionsOfMinasTirith.java index 391ee8adb97..c50d98295c4 100644 --- a/Mage.Sets/src/mage/cards/c/ChampionsOfMinasTirith.java +++ b/Mage.Sets/src/mage/cards/c/ChampionsOfMinasTirith.java @@ -13,6 +13,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.combat.TargetPlayerCantAttackYouEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -36,7 +37,7 @@ public final class ChampionsOfMinasTirith extends CardImpl { this.toughness = new MageInt(6); // When Champions of Minas Tirith enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of combat on each opponent's turn, if you're the monarch, that opponent may pay {X}, where X is the number of cards in their hand. If they don't, they can't attack you this combat. this.addAbility(new ConditionalTriggeredAbility( @@ -50,7 +51,7 @@ public final class ChampionsOfMinasTirith extends CardImpl { MonarchIsSourceControllerCondition.instance, "At the beginning of combat on each opponent's turn, if you're the monarch, that opponent may pay {X}, " + "where X is the number of cards in their hand. If they don't, they can't attack you this combat." - )); + ).addHint(MonarchHint.instance)); } private ChampionsOfMinasTirith(final ChampionsOfMinasTirith card) { diff --git a/Mage.Sets/src/mage/cards/c/CourtOfAmbition.java b/Mage.Sets/src/mage/cards/c/CourtOfAmbition.java index 9cf70bf1ce5..e865d8c1d6a 100644 --- a/Mage.Sets/src/mage/cards/c/CourtOfAmbition.java +++ b/Mage.Sets/src/mage/cards/c/CourtOfAmbition.java @@ -5,6 +5,7 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.Cards; @@ -31,7 +32,7 @@ public final class CourtOfAmbition extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}"); // When Court of Ambition enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, each opponent loses 3 life unless they discard a card. If you're the monarch, instead each opponent loses 6 life unless they discard two cards. this.addAbility(new BeginningOfUpkeepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/c/CourtOfArdenvale.java b/Mage.Sets/src/mage/cards/c/CourtOfArdenvale.java index b25f479b642..70b8c1f7e15 100644 --- a/Mage.Sets/src/mage/cards/c/CourtOfArdenvale.java +++ b/Mage.Sets/src/mage/cards/c/CourtOfArdenvale.java @@ -10,6 +10,7 @@ import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -36,7 +37,7 @@ public final class CourtOfArdenvale extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}"); // When Court of Ardenvale enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, return target permanent card with mana value 3 or less from your graveyard to your hand. If you're the monarch, return that permanent card to the battlefield instead. Ability ability = new BeginningOfUpkeepTriggeredAbility(new ConditionalOneShotEffect( @@ -47,6 +48,7 @@ public final class CourtOfArdenvale extends CardImpl { ), TargetController.YOU, false ); ability.addTarget(new TargetCardInYourGraveyard(filter)); + ability.addHint(MonarchHint.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CourtOfBounty.java b/Mage.Sets/src/mage/cards/c/CourtOfBounty.java index 392ba066553..c520edf528d 100644 --- a/Mage.Sets/src/mage/cards/c/CourtOfBounty.java +++ b/Mage.Sets/src/mage/cards/c/CourtOfBounty.java @@ -6,6 +6,7 @@ import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -23,7 +24,7 @@ public final class CourtOfBounty extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}"); // When Court of Bounty enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, you may put a land card from your hand onto the battlefield. If you're the monarch, instead you may put a creature or land card from your hand onto the battlefield. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new ConditionalOneShotEffect( @@ -32,7 +33,8 @@ public final class CourtOfBounty extends CardImpl { MonarchIsSourceControllerCondition.instance, "you may put a land card " + "from your hand onto the battlefield. If you're the monarch, " + "instead you may put a creature or land card from your hand onto the battlefield" - ), TargetController.YOU, false)); + ), TargetController.YOU, false) + .addHint(MonarchHint.instance)); } private CourtOfBounty(final CourtOfBounty card) { diff --git a/Mage.Sets/src/mage/cards/c/CourtOfCunning.java b/Mage.Sets/src/mage/cards/c/CourtOfCunning.java index 1fe2533eac1..a4574433e27 100644 --- a/Mage.Sets/src/mage/cards/c/CourtOfCunning.java +++ b/Mage.Sets/src/mage/cards/c/CourtOfCunning.java @@ -5,6 +5,7 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -29,7 +30,7 @@ public final class CourtOfCunning extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{U}"); // When Court of Cunning enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, any number of target players each mill two cards. If you're the monarch, each of those players mills ten cards instead. Ability ability = new BeginningOfUpkeepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/c/CourtOfEmbereth.java b/Mage.Sets/src/mage/cards/c/CourtOfEmbereth.java index dc51260eb86..e1bbb5962d2 100644 --- a/Mage.Sets/src/mage/cards/c/CourtOfEmbereth.java +++ b/Mage.Sets/src/mage/cards/c/CourtOfEmbereth.java @@ -10,6 +10,7 @@ import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.hint.common.CreaturesYouControlHint; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -28,7 +29,7 @@ public final class CourtOfEmbereth extends CardImpl { // When Court of Embereth enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, create a 3/1 red Knight creature token. Then if you're the monarch, Court of Embereth deals X damage to each opponent, where X is the number of creatures you control. Ability ability = new BeginningOfUpkeepTriggeredAbility( @@ -41,6 +42,7 @@ public final class CourtOfEmbereth extends CardImpl { MonarchIsSourceControllerCondition.instance ).concatBy("Then")); ability.addHint(CreaturesYouControlHint.instance); + ability.addHint(MonarchHint.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CourtOfGarenbrig.java b/Mage.Sets/src/mage/cards/c/CourtOfGarenbrig.java index 80aa562178e..2a2858c2837 100644 --- a/Mage.Sets/src/mage/cards/c/CourtOfGarenbrig.java +++ b/Mage.Sets/src/mage/cards/c/CourtOfGarenbrig.java @@ -8,6 +8,7 @@ import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.counter.DistributeCountersEffect; import mage.abilities.effects.common.counter.DoubleCounterOnEachPermanentEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -28,7 +29,7 @@ public final class CourtOfGarenbrig extends CardImpl { // When Court of Garenbrig enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, distribute two +1/+1 counters among up to two target creatures. Then if you're the monarch, double the number of +1/+1 counters on each creature you control. Ability ability = new BeginningOfUpkeepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/c/CourtOfGrace.java b/Mage.Sets/src/mage/cards/c/CourtOfGrace.java index afc27ca7734..8b6b55d88c3 100644 --- a/Mage.Sets/src/mage/cards/c/CourtOfGrace.java +++ b/Mage.Sets/src/mage/cards/c/CourtOfGrace.java @@ -6,6 +6,7 @@ import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -24,7 +25,7 @@ public final class CourtOfGrace extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}"); // When Court of Grace enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, create a 1/1 white Spirit creature token with flying. If you're the monarch, create a 4/4 white Angel creature token with flying instead. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new ConditionalOneShotEffect( diff --git a/Mage.Sets/src/mage/cards/c/CourtOfIre.java b/Mage.Sets/src/mage/cards/c/CourtOfIre.java index ccc4d65ecaf..4e6dab3a50f 100644 --- a/Mage.Sets/src/mage/cards/c/CourtOfIre.java +++ b/Mage.Sets/src/mage/cards/c/CourtOfIre.java @@ -7,6 +7,7 @@ import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -24,7 +25,7 @@ public final class CourtOfIre extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}{R}"); // When Court of Ire enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, Court of Ire deals 2 damage to any target. If you're the monarch, it deals 7 damage to that player or permanent instead. Ability ability = new BeginningOfUpkeepTriggeredAbility(new ConditionalOneShotEffect( diff --git a/Mage.Sets/src/mage/cards/c/CourtOfLocthwain.java b/Mage.Sets/src/mage/cards/c/CourtOfLocthwain.java index f9cde78a8dc..e3d9bcf489f 100644 --- a/Mage.Sets/src/mage/cards/c/CourtOfLocthwain.java +++ b/Mage.Sets/src/mage/cards/c/CourtOfLocthwain.java @@ -11,6 +11,7 @@ import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -41,7 +42,7 @@ public final class CourtOfLocthwain extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}{B}"); // When Court of Locthwain enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, exile the top card of target opponent's library. You may play that card for as long as it remains exiled, and mana of any type can be spent to cast it. If you're the monarch, until end of turn, you may cast a spell from among cards exiled with Court of Locthwain without paying its mana cost. Ability ability = new BeginningOfUpkeepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/c/CourtOfVantress.java b/Mage.Sets/src/mage/cards/c/CourtOfVantress.java index 5ed183df876..f34793a4c9d 100644 --- a/Mage.Sets/src/mage/cards/c/CourtOfVantress.java +++ b/Mage.Sets/src/mage/cards/c/CourtOfVantress.java @@ -7,6 +7,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.CreateTokenCopyTargetEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -40,7 +41,7 @@ public final class CourtOfVantress extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}"); // When Court of Vantress enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, choose up to one other target enchantment or artifact. If you're the monarch, you may create a token that's a copy of it. If you're not the monarch, you may have Court of Vantress become a copy of it, except it has this ability. this.addAbility(makeAbility()); diff --git a/Mage.Sets/src/mage/cards/c/CrimsonFleetCommodore.java b/Mage.Sets/src/mage/cards/c/CrimsonFleetCommodore.java index 72da0f176b1..acf1cb36735 100644 --- a/Mage.Sets/src/mage/cards/c/CrimsonFleetCommodore.java +++ b/Mage.Sets/src/mage/cards/c/CrimsonFleetCommodore.java @@ -3,6 +3,7 @@ package mage.cards.c; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -28,7 +29,7 @@ public final class CrimsonFleetCommodore extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // When Crimson Fleet Commodore enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); } private CrimsonFleetCommodore(final CrimsonFleetCommodore card) { diff --git a/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java b/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java index 2397815b64c..17a6c0156b6 100644 --- a/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java +++ b/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java @@ -6,6 +6,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -31,7 +32,7 @@ public final class CrownHunterHireling extends CardImpl { this.toughness = new MageInt(4); // When Crown-Hunter Hireling enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // Crown-Hunter Hireling can't attack unless defending player is the monarch. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CrownHunterHirelingCantAttackEffect())); diff --git a/Mage.Sets/src/mage/cards/c/CrownOfGondor.java b/Mage.Sets/src/mage/cards/c/CrownOfGondor.java index fbe6ff63914..0e4027da0ac 100644 --- a/Mage.Sets/src/mage/cards/c/CrownOfGondor.java +++ b/Mage.Sets/src/mage/cards/c/CrownOfGondor.java @@ -11,6 +11,7 @@ import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.continuous.BoostEquippedEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -48,7 +49,7 @@ public final class CrownOfGondor extends CardImpl { ), MonarchIsNotSetCondition.instance, "When a legendary creature enters the battlefield under your control, if there is no monarch, you become the monarch." - )); + ).addHint(MonarchHint.instance)); // Equip {4}. This ability costs {3} less to activate if you're the monarch. EquipAbility equip = new EquipAbility(4, false); diff --git a/Mage.Sets/src/mage/cards/c/CustodiLich.java b/Mage.Sets/src/mage/cards/c/CustodiLich.java index e4b20769f40..fe7a3b09173 100644 --- a/Mage.Sets/src/mage/cards/c/CustodiLich.java +++ b/Mage.Sets/src/mage/cards/c/CustodiLich.java @@ -7,6 +7,7 @@ import mage.abilities.common.BecomesMonarchSourceControllerTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.SacrificeEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -31,7 +32,7 @@ public final class CustodiLich extends CardImpl { this.toughness = new MageInt(2); // When Custodi Lich enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // Whenever you become the monarch, target player sacrifices a creature. Ability ability = new BecomesMonarchSourceControllerTriggeredAbility(new SacrificeEffect(new FilterControlledCreaturePermanent("creature"), 1, "target player")); diff --git a/Mage.Sets/src/mage/cards/d/DawngladeRegent.java b/Mage.Sets/src/mage/cards/d/DawngladeRegent.java index 58c08d6c3ae..fc56d256dda 100644 --- a/Mage.Sets/src/mage/cards/d/DawngladeRegent.java +++ b/Mage.Sets/src/mage/cards/d/DawngladeRegent.java @@ -7,6 +7,7 @@ import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -29,7 +30,7 @@ public final class DawngladeRegent extends CardImpl { this.toughness = new MageInt(8); // When Dawnglade Regent enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // As long as you're the monarch, permanents you control have hexproof. this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( diff --git a/Mage.Sets/src/mage/cards/d/DenethorStoneSeer.java b/Mage.Sets/src/mage/cards/d/DenethorStoneSeer.java index 07b776b6d91..1273ea92438 100644 --- a/Mage.Sets/src/mage/cards/d/DenethorStoneSeer.java +++ b/Mage.Sets/src/mage/cards/d/DenethorStoneSeer.java @@ -9,6 +9,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.keyword.ScryEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -45,6 +46,7 @@ public final class DenethorStoneSeer extends CardImpl { ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetPlayer()); ability.addTarget(new TargetAnyTarget()); + ability.addHint(MonarchHint.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EmberwildeCaptain.java b/Mage.Sets/src/mage/cards/e/EmberwildeCaptain.java index fa2ab170478..e2add83eea9 100644 --- a/Mage.Sets/src/mage/cards/e/EmberwildeCaptain.java +++ b/Mage.Sets/src/mage/cards/e/EmberwildeCaptain.java @@ -6,6 +6,7 @@ import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -33,7 +34,7 @@ public final class EmberwildeCaptain extends CardImpl { this.toughness = new MageInt(2); // When Emberwilde Captain enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // Whenever an opponent attacks you while you're the monarch, Emberwilde Captain deals damage to that player equal to the number of cards in their hand. this.addAbility(new EmberwildeCaptainTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/e/EntourageOfTrest.java b/Mage.Sets/src/mage/cards/e/EntourageOfTrest.java index a0c0cdfedeb..bd84dde45c9 100644 --- a/Mage.Sets/src/mage/cards/e/EntourageOfTrest.java +++ b/Mage.Sets/src/mage/cards/e/EntourageOfTrest.java @@ -9,6 +9,7 @@ import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.combat.CanBlockAdditionalCreatureEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -30,7 +31,7 @@ public final class EntourageOfTrest extends CardImpl { this.toughness = new MageInt(4); // When Entourage of Trest enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // Entourage of Trest can block an additional creature each combat as long as you're the monarch. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( diff --git a/Mage.Sets/src/mage/cards/e/EomerKingOfRohan.java b/Mage.Sets/src/mage/cards/e/EomerKingOfRohan.java index ddf24bdbf60..9286bfbbc32 100644 --- a/Mage.Sets/src/mage/cards/e/EomerKingOfRohan.java +++ b/Mage.Sets/src/mage/cards/e/EomerKingOfRohan.java @@ -8,6 +8,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.DoubleStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -65,6 +66,7 @@ public final class EomerKingOfRohan extends CardImpl { ); trigger.addTarget(new TargetPlayer()); trigger.addTarget(new TargetAnyTarget()); + trigger.addHint(MonarchHint.instance); this.addAbility(trigger); } diff --git a/Mage.Sets/src/mage/cards/f/FallFromFavor.java b/Mage.Sets/src/mage/cards/f/FallFromFavor.java index ed410c2819b..174febb30f0 100644 --- a/Mage.Sets/src/mage/cards/f/FallFromFavor.java +++ b/Mage.Sets/src/mage/cards/f/FallFromFavor.java @@ -9,6 +9,7 @@ import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect; import mage.abilities.effects.common.TapEnchantedEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -40,6 +41,7 @@ public final class FallFromFavor extends CardImpl { // When Fall from Favor enters the battlefield, tap enchanted creature and you become the monarch. ability = new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()); ability.addEffect(new BecomesMonarchSourceEffect().concatBy("and")); + ability.addHint(MonarchHint.instance); this.addAbility(ability); // Enchanted creature doesn't untap during its controller's untap step unless that player is the monarch. diff --git a/Mage.Sets/src/mage/cards/f/FaramirStewardOfGondor.java b/Mage.Sets/src/mage/cards/f/FaramirStewardOfGondor.java index 37065985e39..c8407ffaafc 100644 --- a/Mage.Sets/src/mage/cards/f/FaramirStewardOfGondor.java +++ b/Mage.Sets/src/mage/cards/f/FaramirStewardOfGondor.java @@ -6,6 +6,7 @@ import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -39,7 +40,7 @@ public final class FaramirStewardOfGondor extends CardImpl { this.toughness = new MageInt(2); // Whenever a legendary creature with mana value 4 or greater enters the battlefield under your control, you become the monarch. - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new BecomesMonarchSourceEffect(), filter)); + this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new BecomesMonarchSourceEffect(), filter).addHint(MonarchHint.instance)); // At the beginning of your end step, if you're the monarch, create two 1/1 white Human Soldier creature tokens. this.addAbility(new BeginningOfEndStepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/f/FealtyToTheRealm.java b/Mage.Sets/src/mage/cards/f/FealtyToTheRealm.java index 16184347fd2..c32fa56db8a 100644 --- a/Mage.Sets/src/mage/cards/f/FealtyToTheRealm.java +++ b/Mage.Sets/src/mage/cards/f/FealtyToTheRealm.java @@ -8,6 +8,7 @@ import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.combat.AttacksIfAbleAttachedEffect; import mage.abilities.effects.common.combat.CantAttackControllerAttachedEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -36,7 +37,7 @@ public final class FealtyToTheRealm extends CardImpl { this.addAbility(new EnchantAbility(auraTarget)); // When Fealty to the Realm enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // The monarch controls enchanted creature. this.addAbility(new SimpleStaticAbility(new FealtyToTheRealmEffect())); diff --git a/Mage.Sets/src/mage/cards/f/FeastOfSuccession.java b/Mage.Sets/src/mage/cards/f/FeastOfSuccession.java index 2038fc7c9dc..61e8aebcbae 100644 --- a/Mage.Sets/src/mage/cards/f/FeastOfSuccession.java +++ b/Mage.Sets/src/mage/cards/f/FeastOfSuccession.java @@ -2,6 +2,7 @@ package mage.cards.f; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.continuous.BoostAllEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -20,6 +21,7 @@ public final class FeastOfSuccession extends CardImpl { // All creatures get -4/-4 until end of turn. You become the monarch. this.getSpellAbility().addEffect(new BoostAllEffect(-4, -4, Duration.EndOfTurn)); this.getSpellAbility().addEffect(new BecomesMonarchSourceEffect().setText("You become the monarch")); + this.getSpellAbility().addHint(MonarchHint.instance); } private FeastOfSuccession(final FeastOfSuccession card) { diff --git a/Mage.Sets/src/mage/cards/f/ForthEorlingas.java b/Mage.Sets/src/mage/cards/f/ForthEorlingas.java index 61a34339ce7..408f8d26958 100644 --- a/Mage.Sets/src/mage/cards/f/ForthEorlingas.java +++ b/Mage.Sets/src/mage/cards/f/ForthEorlingas.java @@ -7,6 +7,7 @@ import mage.abilities.dynamicvalue.common.ManacostVariableValue; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -26,7 +27,6 @@ public final class ForthEorlingas extends CardImpl { public ForthEorlingas(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{W}"); - // Create X 2/2 red Human Knight creature tokens with trample and haste. this.getSpellAbility().addEffect(new CreateTokenEffect( @@ -34,7 +34,10 @@ public final class ForthEorlingas extends CardImpl { )); // Whenever one or more creatures you control deal combat damage to one or more players this turn, you become the monarch. - this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new ForthEorlingasTriggeredAbility()).concatBy("
")); + this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect( + new ForthEorlingasTriggeredAbility()).concatBy("
") + ); + this.getSpellAbility().addHint(MonarchHint.instance); } private ForthEorlingas(final ForthEorlingas card) { @@ -52,6 +55,7 @@ class ForthEorlingasTriggeredAbility extends DelayedTriggeredAbility { public ForthEorlingasTriggeredAbility() { super(new BecomesMonarchSourceEffect(), Duration.EndOfTurn, false); this.setTriggerPhrase("Whenever one or more creatures you control deal combat damage to one or more players this turn, "); + this.addHint(MonarchHint.instance); } private ForthEorlingasTriggeredAbility(final ForthEorlingasTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/cards/g/GarrulousSycophant.java b/Mage.Sets/src/mage/cards/g/GarrulousSycophant.java index bff0be00d09..d5326fa6242 100644 --- a/Mage.Sets/src/mage/cards/g/GarrulousSycophant.java +++ b/Mage.Sets/src/mage/cards/g/GarrulousSycophant.java @@ -9,6 +9,7 @@ import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.effects.Effect; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.LoseLifeOpponentsEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -36,6 +37,7 @@ public final class GarrulousSycophant extends CardImpl { Effect effect = new GainLifeEffect(1); effect.setText("and you gain 1 life"); ability.addEffect(effect); + ability.addHint(MonarchHint.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/j/JaredCarthalionTrueHeir.java b/Mage.Sets/src/mage/cards/j/JaredCarthalionTrueHeir.java index 453e88ccb06..f23761bd6e5 100644 --- a/Mage.Sets/src/mage/cards/j/JaredCarthalionTrueHeir.java +++ b/Mage.Sets/src/mage/cards/j/JaredCarthalionTrueHeir.java @@ -7,6 +7,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; import mage.abilities.effects.PreventionEffectImpl; import mage.abilities.effects.common.BecomesMonarchTargetEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -37,6 +38,7 @@ public final class JaredCarthalionTrueHeir extends CardImpl { .setText("target opponent becomes the monarch")); ability.addEffect(new JaredCarthalionTrueHeirMonarchEffect()); ability.addTarget(new TargetOpponent()); + ability.addHint(MonarchHint.instance); this.addAbility(ability); // If damage would be dealt to Jared Carthalion while you're the monarch, prevent that damage and put that many +1/+1 counters on it. diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfKeys.java b/Mage.Sets/src/mage/cards/k/KeeperOfKeys.java index 0081b0b7694..1df6126d706 100644 --- a/Mage.Sets/src/mage/cards/k/KeeperOfKeys.java +++ b/Mage.Sets/src/mage/cards/k/KeeperOfKeys.java @@ -9,6 +9,7 @@ import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.combat.CantBeBlockedAllEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -34,7 +35,7 @@ public final class KeeperOfKeys extends CardImpl { this.toughness = new MageInt(4); // When Keeper of Keys enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, if you're the monarch, creatures you control can't be blocked this turn. this.addAbility(new ConditionalInterveningIfTriggeredAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, diff --git a/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java b/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java index cd4ffc71e12..b217455fbb7 100644 --- a/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java +++ b/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java @@ -8,6 +8,7 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -35,7 +36,7 @@ public final class KnightsOfTheBlackRose extends CardImpl { this.toughness = new MageInt(4); // When Knights of the Black Rose enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // Whenever an opponent becomes the monarch, if you were the monarch as the turn began, that player loses 2 life and you gain 2 life. Ability ability = new KnightsOfTheBlackRoseTriggeredAbility(new LoseLifeTargetEffect(2)); diff --git a/Mage.Sets/src/mage/cards/m/MarchesasDecree.java b/Mage.Sets/src/mage/cards/m/MarchesasDecree.java index 65c5c7a3c11..ccffd934020 100644 --- a/Mage.Sets/src/mage/cards/m/MarchesasDecree.java +++ b/Mage.Sets/src/mage/cards/m/MarchesasDecree.java @@ -7,6 +7,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -23,7 +24,7 @@ public final class MarchesasDecree extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}"); // When Marchesa's Decree enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // Whenever a creature attacks you or a planeswalker you control, the controller of that creature loses 1 life. Effect effect = new LoseLifeTargetEffect(1); diff --git a/Mage.Sets/src/mage/cards/o/OathOfEorl.java b/Mage.Sets/src/mage/cards/o/OathOfEorl.java index 95c38b1c163..3716ea75cec 100644 --- a/Mage.Sets/src/mage/cards/o/OathOfEorl.java +++ b/Mage.Sets/src/mage/cards/o/OathOfEorl.java @@ -7,6 +7,7 @@ import mage.abilities.effects.Effects; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.abilities.hint.common.MonarchHint; import mage.constants.SagaChapter; import mage.constants.SubType; import mage.cards.CardImpl; @@ -51,6 +52,7 @@ public final class OathOfEorl extends CardImpl { new AddCountersTargetEffect(CounterType.INDESTRUCTIBLE.createInstance()), new BecomesMonarchSourceEffect() ); + sagaAbility.addHint(MonarchHint.instance); // III-- Put an indestructible counter on up to one target Human. sagaAbility.addChapterEffect( diff --git a/Mage.Sets/src/mage/cards/p/PalaceJailer.java b/Mage.Sets/src/mage/cards/p/PalaceJailer.java index ae2dd83be8d..7fca7f4a1a4 100644 --- a/Mage.Sets/src/mage/cards/p/PalaceJailer.java +++ b/Mage.Sets/src/mage/cards/p/PalaceJailer.java @@ -12,6 +12,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -42,7 +43,7 @@ public final class PalaceJailer extends CardImpl { this.toughness = new MageInt(2); // When Palace Jailer enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // When Palace Jailer enters the battlefield, exile target creature an opponent controls until an opponent becomes the monarch. (That creature returns under its owner's control.) Ability ability = new EntersBattlefieldTriggeredAbility(new PalaceJailerExileEffect()); diff --git a/Mage.Sets/src/mage/cards/p/PalaceSentinels.java b/Mage.Sets/src/mage/cards/p/PalaceSentinels.java index f98676905f1..6610f5bc018 100644 --- a/Mage.Sets/src/mage/cards/p/PalaceSentinels.java +++ b/Mage.Sets/src/mage/cards/p/PalaceSentinels.java @@ -5,6 +5,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -25,7 +26,7 @@ public final class PalaceSentinels extends CardImpl { this.toughness = new MageInt(4); // When Palace Sentinels enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); } private PalaceSentinels(final PalaceSentinels card) { diff --git a/Mage.Sets/src/mage/cards/p/ProtectorOfTheCrown.java b/Mage.Sets/src/mage/cards/p/ProtectorOfTheCrown.java index b76f778ecee..ee478072370 100644 --- a/Mage.Sets/src/mage/cards/p/ProtectorOfTheCrown.java +++ b/Mage.Sets/src/mage/cards/p/ProtectorOfTheCrown.java @@ -8,6 +8,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -35,7 +36,7 @@ public final class ProtectorOfTheCrown extends CardImpl { this.toughness = new MageInt(5); // When Protector of the Crown enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // All damage would be dealt to you is dealt to Protector of the Crown instead. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ProtectorOfTheCrownEffect())); diff --git a/Mage.Sets/src/mage/cards/q/QueenMarchesa.java b/Mage.Sets/src/mage/cards/q/QueenMarchesa.java index f8a7042bc88..3aba2f4977b 100644 --- a/Mage.Sets/src/mage/cards/q/QueenMarchesa.java +++ b/Mage.Sets/src/mage/cards/q/QueenMarchesa.java @@ -10,6 +10,7 @@ import mage.abilities.condition.Condition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; @@ -41,7 +42,7 @@ public final class QueenMarchesa extends CardImpl { // Haste this.addAbility(HasteAbility.getInstance()); // When Queen Marchesa enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, if an opponent is the monarch, create a 1/1 black Assassin creature token with deathtouch and haste. this.addAbility(new ConditionalInterveningIfTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/r/RegalBehemoth.java b/Mage.Sets/src/mage/cards/r/RegalBehemoth.java index 0f776c0db84..60c15c29c3f 100644 --- a/Mage.Sets/src/mage/cards/r/RegalBehemoth.java +++ b/Mage.Sets/src/mage/cards/r/RegalBehemoth.java @@ -4,6 +4,7 @@ import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.mana.AddManaOfAnyColorEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.TrampleAbility; import mage.abilities.mana.TriggeredManaAbility; import mage.cards.CardImpl; @@ -34,7 +35,7 @@ public final class RegalBehemoth extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // When Regal Behemoth enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // Whenever you tap a land for mana while you're the monarch, add one mana of any color. this.addAbility(new RegalBehemothTriggeredManaAbility()); diff --git a/Mage.Sets/src/mage/cards/r/RegalSliver.java b/Mage.Sets/src/mage/cards/r/RegalSliver.java index e1e76ae21f0..6831eb1c9a7 100644 --- a/Mage.Sets/src/mage/cards/r/RegalSliver.java +++ b/Mage.Sets/src/mage/cards/r/RegalSliver.java @@ -10,6 +10,7 @@ import mage.abilities.effects.common.AddContinuousEffectToGame; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -33,23 +34,27 @@ public final class RegalSliver extends CardImpl { // Sliver creatures you control have "When this creature enters the battlefield, Slivers you control get +1/+1 until end of turn if you're the monarch. Otherwise, you become the monarch." TriggeredAbility trigger = - new EntersBattlefieldTriggeredAbility( - new ConditionalOneShotEffect( - new AddContinuousEffectToGame( - new BoostControlledEffect(1, 1, Duration.EndOfTurn, - StaticFilters.FILTER_PERMANENT_SLIVERS - )), - new BecomesMonarchSourceEffect(), - MonarchIsSourceControllerCondition.instance, - "Slivers you control get +1/+1 until end of turn if you're the monarch. Otherwise, you become the monarch." - ) - ); + new EntersBattlefieldTriggeredAbility( + new ConditionalOneShotEffect( + new AddContinuousEffectToGame( + new BoostControlledEffect(1, 1, Duration.EndOfTurn, + StaticFilters.FILTER_PERMANENT_SLIVERS + )), + new BecomesMonarchSourceEffect(), + MonarchIsSourceControllerCondition.instance, + "Slivers you control get +1/+1 until end of turn if you're the monarch. Otherwise, you become the monarch." + ) + ); - this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( - trigger, Duration.WhileOnBattlefield, - StaticFilters.FILTER_PERMANENT_ALL_SLIVERS - ).setText("Sliver creatures you control have \"When this creature enters the battlefield, " - + "Slivers you control get +1/+1 until end of turn if you're the monarch. Otherwise, you become the monarch.\""))); + this.addAbility( + new SimpleStaticAbility( + new GainAbilityControlledEffect( + trigger, Duration.WhileOnBattlefield, + StaticFilters.FILTER_PERMANENT_ALL_SLIVERS + ).setText("Sliver creatures you control have \"When this creature enters the battlefield, " + + "Slivers you control get +1/+1 until end of turn if you're the monarch. Otherwise, you become the monarch.\"") + ).addHint(MonarchHint.instance) + ); } private RegalSliver(final RegalSliver card) { diff --git a/Mage.Sets/src/mage/cards/s/SkylineDespot.java b/Mage.Sets/src/mage/cards/s/SkylineDespot.java index 5e4bcaadcdf..3dea87f6f6d 100644 --- a/Mage.Sets/src/mage/cards/s/SkylineDespot.java +++ b/Mage.Sets/src/mage/cards/s/SkylineDespot.java @@ -7,6 +7,7 @@ import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -32,7 +33,7 @@ public final class SkylineDespot extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // When Skyline Despot enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); // At the beginning of your upkeep, if you're the monarch, put a 5/5 red Dragon creature token with flying onto the battlefield. this.addAbility(new ConditionalInterveningIfTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/s/StarscreamPowerHungry.java b/Mage.Sets/src/mage/cards/s/StarscreamPowerHungry.java index f53c45db090..0e847a27e42 100644 --- a/Mage.Sets/src/mage/cards/s/StarscreamPowerHungry.java +++ b/Mage.Sets/src/mage/cards/s/StarscreamPowerHungry.java @@ -8,6 +8,7 @@ import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.TransformSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.MoreThanMeetsTheEyeAbility; import mage.cards.CardImpl; @@ -46,6 +47,7 @@ public final class StarscreamPowerHungry extends CardImpl { "Whenever you draw a card, if you're the monarch, target opponent loses 2 life." ); trigger.addTarget(new TargetOpponent()); + trigger.addHint(MonarchHint.instance); this.addAbility(trigger); // Whenever one or more creatures deal combat damage to you, convert Starscream. diff --git a/Mage.Sets/src/mage/cards/s/StarscreamSeekerLeader.java b/Mage.Sets/src/mage/cards/s/StarscreamSeekerLeader.java index e304db94957..094c85c01c4 100644 --- a/Mage.Sets/src/mage/cards/s/StarscreamSeekerLeader.java +++ b/Mage.Sets/src/mage/cards/s/StarscreamSeekerLeader.java @@ -7,6 +7,7 @@ import mage.abilities.condition.common.MonarchIsNotSetCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchTargetEffect; import mage.abilities.effects.common.TransformSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.LivingMetalAbility; @@ -51,7 +52,7 @@ public final class StarscreamSeekerLeader extends CardImpl { new DealsCombatDamageToAPlayerTriggeredAbility(new BecomesMonarchTargetEffect(), false, true), MonarchIsNotSetCondition.instance, "Whenever {this} deals combat damage to a player, if there is no monarch, that player becomes the monarch." - )); + ).addHint(MonarchHint.instance)); // Whenever you become the monarch, convert Starscream. this.addAbility(new BecomesMonarchSourceControllerTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/s/StaunchThroneguard.java b/Mage.Sets/src/mage/cards/s/StaunchThroneguard.java index 0685a4e1006..0ba650b902b 100644 --- a/Mage.Sets/src/mage/cards/s/StaunchThroneguard.java +++ b/Mage.Sets/src/mage/cards/s/StaunchThroneguard.java @@ -3,6 +3,7 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -27,7 +28,7 @@ public final class StaunchThroneguard extends CardImpl { this.addAbility(VigilanceAbility.getInstance()); // When Staunch Throneguard enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); } private StaunchThroneguard(final StaunchThroneguard card) { diff --git a/Mage.Sets/src/mage/cards/t/ThornOfTheBlackRose.java b/Mage.Sets/src/mage/cards/t/ThornOfTheBlackRose.java index 4e9825f6854..bfc3a15c45c 100644 --- a/Mage.Sets/src/mage/cards/t/ThornOfTheBlackRose.java +++ b/Mage.Sets/src/mage/cards/t/ThornOfTheBlackRose.java @@ -5,6 +5,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -28,7 +29,7 @@ public final class ThornOfTheBlackRose extends CardImpl { // Deathtouch this.addAbility(DeathtouchAbility.getInstance()); // When Thorn of the Black Rose enters the battlefield, you become the monarch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect(), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new BecomesMonarchSourceEffect()).addHint(MonarchHint.instance)); } diff --git a/Mage.Sets/src/mage/cards/t/ThroneOfTheHighCity.java b/Mage.Sets/src/mage/cards/t/ThroneOfTheHighCity.java index d0c4995cc4a..4e910500e6c 100644 --- a/Mage.Sets/src/mage/cards/t/ThroneOfTheHighCity.java +++ b/Mage.Sets/src/mage/cards/t/ThroneOfTheHighCity.java @@ -8,6 +8,7 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.BecomesMonarchSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -30,6 +31,7 @@ public final class ThroneOfTheHighCity extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesMonarchSourceEffect(), new GenericManaCost(4)); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); + ability.addHint(MonarchHint.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/ThroneWarden.java b/Mage.Sets/src/mage/cards/t/ThroneWarden.java index 39316a6fc10..8c2631e4c6a 100644 --- a/Mage.Sets/src/mage/cards/t/ThroneWarden.java +++ b/Mage.Sets/src/mage/cards/t/ThroneWarden.java @@ -6,6 +6,7 @@ import mage.MageInt; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.hint.common.MonarchHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -30,7 +31,8 @@ public final class ThroneWarden extends CardImpl { // At the beginning of your end step, if you're the monarch, put a +1/+1 counter on Throne Warden. this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), - TargetController.YOU, MonarchIsSourceControllerCondition.instance, false)); + TargetController.YOU, MonarchIsSourceControllerCondition.instance, false) + .addHint(MonarchHint.instance)); } private ThroneWarden(final ThroneWarden card) { diff --git a/Mage/src/main/java/mage/abilities/hint/common/MonarchHint.java b/Mage/src/main/java/mage/abilities/hint/common/MonarchHint.java new file mode 100644 index 00000000000..3d3422a8823 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/hint/common/MonarchHint.java @@ -0,0 +1,37 @@ +package mage.abilities.hint.common; + +import mage.abilities.Ability; +import mage.abilities.condition.common.MonarchIsSourceControllerCondition; +import mage.abilities.hint.ConditionHint; +import mage.abilities.hint.Hint; +import mage.game.Game; + +import java.util.Optional; + +/** + * @author JayDi85 + */ +public enum MonarchHint implements Hint { + + instance; + private static final ConditionHint hint = new ConditionHint(MonarchIsSourceControllerCondition.instance, "You are The Monarch"); + + @Override + public String getText(Game game, Ability ability) { + String res = hint.getText(game, ability); + if (game.getMonarchId() == null) { + // no monarch + return res + " (no monarch in the game)"; + } else { + // player + return res + Optional.ofNullable(game.getPlayer(game.getMonarchId())) + .map(p -> " (current monarch: " + p.getName() + ")") + .orElse(""); + } + } + + @Override + public Hint copy() { + return instance; + } +}