diff --git a/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java b/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java index 239620e279f..7036d80a8ff 100644 --- a/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java +++ b/Mage.Sets/src/mage/cards/a/AcademyJourneymage.java @@ -1,25 +1,26 @@ - package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; -import mage.constants.SubType; +import mage.abilities.hint.ConditionHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.filter.common.FilterControlledPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author JRHerlehy */ public final class AcademyJourneymage extends CardImpl { @@ -32,14 +33,16 @@ public final class AcademyJourneymage extends CardImpl { public AcademyJourneymage(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}"); - + this.subtype.add(SubType.HUMAN, SubType.WIZARD); this.power = new MageInt(3); this.toughness = new MageInt(2); // This spell costs {1} less to cast if you control a Wizard. - Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(1, new PermanentsOnTheBattlefieldCondition(filter))); + Condition condition = new PermanentsOnTheBattlefieldCondition(filter); + Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(1, condition)); ability.setRuleAtTheTop(true); + ability.addHint(new ConditionHint(condition, "You control a Wizard")); this.addAbility(ability); // When Academy Journeymage enters the battlefield, return target creature an opponent controls to its owner's hand. diff --git a/Mage.Sets/src/mage/cards/d/Discontinuity.java b/Mage.Sets/src/mage/cards/d/Discontinuity.java index 93e62861f17..87f82cc923a 100644 --- a/Mage.Sets/src/mage/cards/d/Discontinuity.java +++ b/Mage.Sets/src/mage/cards/d/Discontinuity.java @@ -5,6 +5,7 @@ import mage.abilities.condition.common.MyTurnCondition; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.EndTurnEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.common.MyTurnHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -23,7 +24,8 @@ public final class Discontinuity extends CardImpl { // As long as it's your turn, this spell costs {2}{U}{U} less to cast. this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect( new ManaCostsImpl("{2}{U}{U}"), MyTurnCondition.instance - ).setText("as long as it's your turn, this spell costs {2}{U}{U} less to cast"))); + ).setText("as long as it's your turn, this spell costs {2}{U}{U} less to cast")) + .addHint(MyTurnHint.instance)); // End the turn. this.getSpellAbility().addEffect(new EndTurnEffect()); diff --git a/Mage.Sets/src/mage/cards/g/GustOfWind.java b/Mage.Sets/src/mage/cards/g/GustOfWind.java index d0df498d570..19c5a506f20 100644 --- a/Mage.Sets/src/mage/cards/g/GustOfWind.java +++ b/Mage.Sets/src/mage/cards/g/GustOfWind.java @@ -1,12 +1,12 @@ package mage.cards.g; -import java.util.UUID; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ConditionHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -19,6 +19,8 @@ import mage.filter.common.FilterNonlandPermanent; import mage.filter.predicate.mageobject.AbilityPredicate; import mage.target.TargetPermanent; +import java.util.UUID; + /** * @author TheElk801 */ @@ -42,7 +44,7 @@ public final class GustOfWind extends CardImpl { // This spell costs {2} less to cast if you control a creature with flying. this.addAbility(new SimpleStaticAbility( Zone.ALL, new SpellCostReductionSourceEffect(2, condition) - ).setRuleAtTheTop(true)); + ).setRuleAtTheTop(true).addHint(new ConditionHint(condition, "You control a creature with flying"))); // Return target nonland permanent you don't control to its owner's hand. this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); diff --git a/Mage.Sets/src/mage/cards/h/HourOfRevelation.java b/Mage.Sets/src/mage/cards/h/HourOfRevelation.java index 2c359686be4..8ba5adb7638 100644 --- a/Mage.Sets/src/mage/cards/h/HourOfRevelation.java +++ b/Mage.Sets/src/mage/cards/h/HourOfRevelation.java @@ -1,11 +1,11 @@ - package mage.cards.h; -import java.util.UUID; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DestroyAllEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ValueHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -13,8 +13,9 @@ import mage.constants.ComparisonType; import mage.constants.Zone; import mage.filter.common.FilterNonlandPermanent; +import java.util.UUID; + /** - * * @author fireshoes */ public final class HourOfRevelation extends CardImpl { @@ -25,8 +26,10 @@ public final class HourOfRevelation extends CardImpl { // Hour of Revelation costs {3} less to cast if there are ten or more nonland permanents on the battlefield. SimpleStaticAbility ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(3, new PermanentsOnTheBattlefieldCondition( - new FilterNonlandPermanent("there are ten or more nonland permanents on the battlefield"), ComparisonType.MORE_THAN, 9, false))); + new FilterNonlandPermanent("there are ten or more nonland permanents on the battlefield"), + ComparisonType.MORE_THAN, 9, false))); ability.setRuleAtTheTop(true); + ability.addHint(new ValueHint("Nonland permanents on the battlefield", new PermanentsOnBattlefieldCount(new FilterNonlandPermanent()))); this.addAbility(ability); // Destroy all nonland permanents. diff --git a/Mage.Sets/src/mage/cards/i/IgneousElemental.java b/Mage.Sets/src/mage/cards/i/IgneousElemental.java index 4aa3be3410d..5d750cea5b8 100644 --- a/Mage.Sets/src/mage/cards/i/IgneousElemental.java +++ b/Mage.Sets/src/mage/cards/i/IgneousElemental.java @@ -1,13 +1,14 @@ package mage.cards.i; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; import mage.abilities.condition.common.CardsInControllerGraveCondition; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ConditionHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -16,6 +17,8 @@ import mage.constants.Zone; import mage.filter.StaticFilters; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * @author TheElk801 */ @@ -29,10 +32,11 @@ public final class IgneousElemental extends CardImpl { this.toughness = new MageInt(3); // This spell costs {2} less to cast if there is a land card in your graveyard. - Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect( - 2, new CardsInControllerGraveCondition(1, StaticFilters.FILTER_CARD_LAND) - ).setText("This spell costs {2} less to cast if there is a land card in your graveyard.")); + Condition condition = new CardsInControllerGraveCondition(1, StaticFilters.FILTER_CARD_LAND); + Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(2, condition) + .setText("This spell costs {2} less to cast if there is a land card in your graveyard.")); ability.setRuleAtTheTop(true); + ability.addHint(new ConditionHint(condition, "There is a land card in your graveyard")); this.addAbility(ability); // When Igneous Elemental enters the battlefield, you may have it deal 2 damage to target creature. diff --git a/Mage.Sets/src/mage/cards/i/IntoTheStory.java b/Mage.Sets/src/mage/cards/i/IntoTheStory.java index e4ac44160c1..02d5dfded45 100644 --- a/Mage.Sets/src/mage/cards/i/IntoTheStory.java +++ b/Mage.Sets/src/mage/cards/i/IntoTheStory.java @@ -1,11 +1,11 @@ package mage.cards.i; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.Condition; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ConditionHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -14,6 +14,8 @@ import mage.game.Game; import mage.game.Graveyard; import mage.players.Player; +import java.util.UUID; + /** * @author TheElk801 */ @@ -25,7 +27,7 @@ public final class IntoTheStory extends CardImpl { // This spell costs {3} less to cast if an opponent has seven or more cards in their graveyard. this.addAbility(new SimpleStaticAbility( Zone.ALL, new SpellCostReductionSourceEffect(3, IntoTheStoryCondition.instance) - ).setRuleAtTheTop(true)); + ).setRuleAtTheTop(true).addHint(new ConditionHint(IntoTheStoryCondition.instance, "Opponent has seven or more cards in their graveyard"))); // Draw four cards. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(4)); diff --git a/Mage.Sets/src/mage/cards/l/LookoutsDispersal.java b/Mage.Sets/src/mage/cards/l/LookoutsDispersal.java index 6177fe818b4..c3b224a46c7 100644 --- a/Mage.Sets/src/mage/cards/l/LookoutsDispersal.java +++ b/Mage.Sets/src/mage/cards/l/LookoutsDispersal.java @@ -1,12 +1,13 @@ package mage.cards.l; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ConditionHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -15,8 +16,9 @@ import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.target.TargetSpell; +import java.util.UUID; + /** - * * @author TheElk801 */ public final class LookoutsDispersal extends CardImpl { @@ -31,8 +33,10 @@ public final class LookoutsDispersal extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}"); // Lookout's Dispersal costs {1} less to cast if you control a Pirate. - Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(1, new PermanentsOnTheBattlefieldCondition(filter))); + Condition condition = new PermanentsOnTheBattlefieldCondition(filter); + Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(1, condition)); ability.setRuleAtTheTop(true); + ability.addHint(new ConditionHint(condition, "You control a Pirate")); this.addAbility(ability); // Counter target spell unless its controller pays {4}. diff --git a/Mage.Sets/src/mage/cards/n/NotOfThisWorld.java b/Mage.Sets/src/mage/cards/n/NotOfThisWorld.java index df8dde261f9..edc5b0ed969 100644 --- a/Mage.Sets/src/mage/cards/n/NotOfThisWorld.java +++ b/Mage.Sets/src/mage/cards/n/NotOfThisWorld.java @@ -42,7 +42,9 @@ public final class NotOfThisWorld extends CardImpl { this.getSpellAbility().addTarget(new TargetStackObject(filter)); // Not of This World costs {7} less to cast if it targets a spell or ability that targets a creature you control with power 7 or greater. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(7, NotOfThisWorldCondition.instance).setCanWorksOnStackOnly(true))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SpellCostReductionSourceEffect(7, NotOfThisWorldCondition.instance).setCanWorksOnStackOnly(true)) + ); } private NotOfThisWorld(final NotOfThisWorld card) { diff --git a/Mage.Sets/src/mage/cards/o/OakhameAdversary.java b/Mage.Sets/src/mage/cards/o/OakhameAdversary.java index 7bd99cbe6ef..6cd85144ab7 100644 --- a/Mage.Sets/src/mage/cards/o/OakhameAdversary.java +++ b/Mage.Sets/src/mage/cards/o/OakhameAdversary.java @@ -1,6 +1,5 @@ package mage.cards.o; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; @@ -9,6 +8,7 @@ import mage.abilities.condition.Condition; import mage.abilities.condition.common.OpponentControlsPermanentCondition; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ConditionHint; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -19,6 +19,8 @@ import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.ColorPredicate; +import java.util.UUID; + /** * @author TheElk801 */ @@ -44,7 +46,7 @@ public final class OakhameAdversary extends CardImpl { // This spell costs {2} less to cast if your opponent controls a green permanent. this.addAbility(new SimpleStaticAbility( Zone.ALL, new SpellCostReductionSourceEffect(2, condition) - ).setRuleAtTheTop(true)); + ).setRuleAtTheTop(true).addHint(new ConditionHint(condition, "Your opponent controls a green permanent"))); // Deathtouch this.addAbility(DeathtouchAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/t/TentativeConnection.java b/Mage.Sets/src/mage/cards/t/TentativeConnection.java index 6dba4d86486..0683d1d77ed 100644 --- a/Mage.Sets/src/mage/cards/t/TentativeConnection.java +++ b/Mage.Sets/src/mage/cards/t/TentativeConnection.java @@ -2,11 +2,13 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.continuous.GainControlTargetEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ConditionHint; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.MenaceAbility; import mage.cards.CardImpl; @@ -37,13 +39,10 @@ public final class TentativeConnection extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}"); // This spell costs {3} less to cast if you control a creature with menace. - Ability ability = new SimpleStaticAbility( - Zone.ALL, - new SpellCostReductionSourceEffect( - 3, new PermanentsOnTheBattlefieldCondition(filter) - ) - ); + Condition condition = new PermanentsOnTheBattlefieldCondition(filter); + Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(3, condition)); ability.setRuleAtTheTop(true); + ability.addHint(new ConditionHint(condition, "You control a creature with menace")); this.addAbility(ability); // Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. diff --git a/Mage.Sets/src/mage/cards/w/WingedWords.java b/Mage.Sets/src/mage/cards/w/WingedWords.java index 2f8f344dc44..316f39b0066 100644 --- a/Mage.Sets/src/mage/cards/w/WingedWords.java +++ b/Mage.Sets/src/mage/cards/w/WingedWords.java @@ -1,10 +1,11 @@ package mage.cards.w; -import java.util.UUID; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ConditionHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -13,6 +14,8 @@ import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.AbilityPredicate; +import java.util.UUID; + /** * @author TheElk801 */ @@ -29,10 +32,11 @@ public final class WingedWords extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}"); // This spell costs {1} less to cast if you control a creature with flying. - this.addAbility(new SimpleStaticAbility( - Zone.ALL, new SpellCostReductionSourceEffect( - 1, new PermanentsOnTheBattlefieldCondition(filter) - )).setRuleAtTheTop(true)); + Condition condition = new PermanentsOnTheBattlefieldCondition(filter); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SpellCostReductionSourceEffect(1, condition)) + .setRuleAtTheTop(true) + .addHint(new ConditionHint(condition, "You control a creature with flying"))); // Draw two cards. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2)); diff --git a/Mage.Sets/src/mage/cards/w/WizardsLightning.java b/Mage.Sets/src/mage/cards/w/WizardsLightning.java index b1d69d02838..b8f76e0ffc2 100644 --- a/Mage.Sets/src/mage/cards/w/WizardsLightning.java +++ b/Mage.Sets/src/mage/cards/w/WizardsLightning.java @@ -1,11 +1,12 @@ package mage.cards.w; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ConditionHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -14,8 +15,9 @@ import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.target.common.TargetAnyTarget; +import java.util.UUID; + /** - * * @author Will */ public final class WizardsLightning extends CardImpl { @@ -30,8 +32,10 @@ public final class WizardsLightning extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}"); // Wizard's Lightning costs {2} less to cast if you control a Wizard. - Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(2, new PermanentsOnTheBattlefieldCondition(filter))); + Condition condition = new PermanentsOnTheBattlefieldCondition(filter); + Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(2, condition)); ability.setRuleAtTheTop(true); + ability.addHint(new ConditionHint(condition, "You control a Wizard")); this.addAbility(ability); // Wizard's Lightning deals 3 damage to any target. diff --git a/Mage.Sets/src/mage/cards/w/WizardsRetort.java b/Mage.Sets/src/mage/cards/w/WizardsRetort.java index d58c678ad33..192b9e449e2 100644 --- a/Mage.Sets/src/mage/cards/w/WizardsRetort.java +++ b/Mage.Sets/src/mage/cards/w/WizardsRetort.java @@ -1,11 +1,12 @@ package mage.cards.w; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.abilities.hint.ConditionHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -14,8 +15,9 @@ import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.target.TargetSpell; +import java.util.UUID; + /** - * * @author Will */ public final class WizardsRetort extends CardImpl { @@ -30,8 +32,10 @@ public final class WizardsRetort extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{U}"); // Wizard's Retort costs {1} less to cast if you control a Wizard. - Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(1, new PermanentsOnTheBattlefieldCondition(filter))); + Condition condition = new PermanentsOnTheBattlefieldCondition(filter); + Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(1, condition)); ability.setRuleAtTheTop(true); + ability.addHint(new ConditionHint(condition, "You control a Wizard")); this.addAbility(ability); // Counter target spell.