* This spell costs less to cast - added card hints for some cards;

This commit is contained in:
Oleg Agafonov 2020-06-28 20:29:09 +04:00
parent e8dbd2a3c8
commit 621c144ac2
13 changed files with 77 additions and 42 deletions

View file

@ -1,25 +1,26 @@
package mage.cards.a; package mage.cards.a;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.constants.SubType; import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author JRHerlehy * @author JRHerlehy
*/ */
public final class AcademyJourneymage extends CardImpl { public final class AcademyJourneymage extends CardImpl {
@ -32,14 +33,16 @@ public final class AcademyJourneymage extends CardImpl {
public AcademyJourneymage(UUID ownerId, CardSetInfo setInfo) { public AcademyJourneymage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
this.subtype.add(SubType.HUMAN, SubType.WIZARD); this.subtype.add(SubType.HUMAN, SubType.WIZARD);
this.power = new MageInt(3); this.power = new MageInt(3);
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// This spell costs {1} less to cast if you control a Wizard. // 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.setRuleAtTheTop(true);
ability.addHint(new ConditionHint(condition, "You control a Wizard"));
this.addAbility(ability); this.addAbility(ability);
// When Academy Journeymage enters the battlefield, return target creature an opponent controls to its owner's hand. // When Academy Journeymage enters the battlefield, return target creature an opponent controls to its owner's hand.

View file

@ -5,6 +5,7 @@ import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.EndTurnEffect; import mage.abilities.effects.common.EndTurnEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; 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. // As long as it's your turn, this spell costs {2}{U}{U} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect( this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(
new ManaCostsImpl("{2}{U}{U}"), MyTurnCondition.instance 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. // End the turn.
this.getSpellAbility().addEffect(new EndTurnEffect()); this.getSpellAbility().addEffect(new EndTurnEffect());

View file

@ -1,12 +1,12 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition; import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -19,6 +19,8 @@ import mage.filter.common.FilterNonlandPermanent;
import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import java.util.UUID;
/** /**
* @author TheElk801 * @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 spell costs {2} less to cast if you control a creature with flying.
this.addAbility(new SimpleStaticAbility( this.addAbility(new SimpleStaticAbility(
Zone.ALL, new SpellCostReductionSourceEffect(2, condition) 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. // Return target nonland permanent you don't control to its owner's hand.
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());

View file

@ -1,11 +1,11 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.DestroyAllEffect; import mage.abilities.effects.common.DestroyAllEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -13,8 +13,9 @@ import mage.constants.ComparisonType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterNonlandPermanent; import mage.filter.common.FilterNonlandPermanent;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class HourOfRevelation extends CardImpl { 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. // 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, SimpleStaticAbility ability = new SimpleStaticAbility(Zone.ALL,
new SpellCostReductionSourceEffect(3, new PermanentsOnTheBattlefieldCondition( 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.setRuleAtTheTop(true);
ability.addHint(new ValueHint("Nonland permanents on the battlefield", new PermanentsOnBattlefieldCount(new FilterNonlandPermanent())));
this.addAbility(ability); this.addAbility(ability);
// Destroy all nonland permanents. // Destroy all nonland permanents.

View file

@ -1,13 +1,14 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.CardsInControllerGraveCondition; import mage.abilities.condition.common.CardsInControllerGraveCondition;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -16,6 +17,8 @@ import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
@ -29,10 +32,11 @@ public final class IgneousElemental extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// This spell costs {2} less to cast if there is a land card in your graveyard. // This spell costs {2} less to cast if there is a land card in your graveyard.
Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect( Condition condition = new CardsInControllerGraveCondition(1, StaticFilters.FILTER_CARD_LAND);
2, 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.")); .setText("This spell costs {2} less to cast if there is a land card in your graveyard."));
ability.setRuleAtTheTop(true); ability.setRuleAtTheTop(true);
ability.addHint(new ConditionHint(condition, "There is a land card in your graveyard"));
this.addAbility(ability); this.addAbility(ability);
// When Igneous Elemental enters the battlefield, you may have it deal 2 damage to target creature. // When Igneous Elemental enters the battlefield, you may have it deal 2 damage to target creature.

View file

@ -1,11 +1,11 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition; import mage.abilities.condition.Condition;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -14,6 +14,8 @@ import mage.game.Game;
import mage.game.Graveyard; import mage.game.Graveyard;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
* @author TheElk801 * @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 spell costs {3} less to cast if an opponent has seven or more cards in their graveyard.
this.addAbility(new SimpleStaticAbility( this.addAbility(new SimpleStaticAbility(
Zone.ALL, new SpellCostReductionSourceEffect(3, IntoTheStoryCondition.instance) 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. // Draw four cards.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(4)); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(4));

View file

@ -1,12 +1,13 @@
package mage.cards.l; package mage.cards.l;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.abilities.effects.common.CounterUnlessPaysEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -15,8 +16,9 @@ import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.target.TargetSpell; import mage.target.TargetSpell;
import java.util.UUID;
/** /**
*
* @author TheElk801 * @author TheElk801
*/ */
public final class LookoutsDispersal extends CardImpl { 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}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
// Lookout's Dispersal costs {1} less to cast if you control a Pirate. // 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.setRuleAtTheTop(true);
ability.addHint(new ConditionHint(condition, "You control a Pirate"));
this.addAbility(ability); this.addAbility(ability);
// Counter target spell unless its controller pays {4}. // Counter target spell unless its controller pays {4}.

View file

@ -42,7 +42,9 @@ public final class NotOfThisWorld extends CardImpl {
this.getSpellAbility().addTarget(new TargetStackObject(filter)); 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. // 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) { private NotOfThisWorld(final NotOfThisWorld card) {

View file

@ -1,6 +1,5 @@
package mage.cards.o; package mage.cards.o;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.ObjectColor; import mage.ObjectColor;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
@ -9,6 +8,7 @@ import mage.abilities.condition.Condition;
import mage.abilities.condition.common.OpponentControlsPermanentCondition; import mage.abilities.condition.common.OpponentControlsPermanentCondition;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -19,6 +19,8 @@ import mage.constants.Zone;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.ColorPredicate;
import java.util.UUID;
/** /**
* @author TheElk801 * @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 spell costs {2} less to cast if your opponent controls a green permanent.
this.addAbility(new SimpleStaticAbility( this.addAbility(new SimpleStaticAbility(
Zone.ALL, new SpellCostReductionSourceEffect(2, condition) Zone.ALL, new SpellCostReductionSourceEffect(2, condition)
).setRuleAtTheTop(true)); ).setRuleAtTheTop(true).addHint(new ConditionHint(condition, "Your opponent controls a green permanent")));
// Deathtouch // Deathtouch
this.addAbility(DeathtouchAbility.getInstance()); this.addAbility(DeathtouchAbility.getInstance());

View file

@ -2,11 +2,13 @@ package mage.cards.t;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.continuous.GainControlTargetEffect; import mage.abilities.effects.common.continuous.GainControlTargetEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -37,13 +39,10 @@ public final class TentativeConnection extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}");
// This spell costs {3} less to cast if you control a creature with menace. // This spell costs {3} less to cast if you control a creature with menace.
Ability ability = new SimpleStaticAbility( Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
Zone.ALL, Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(3, condition));
new SpellCostReductionSourceEffect(
3, new PermanentsOnTheBattlefieldCondition(filter)
)
);
ability.setRuleAtTheTop(true); ability.setRuleAtTheTop(true);
ability.addHint(new ConditionHint(condition, "You control a creature with menace"));
this.addAbility(ability); this.addAbility(ability);
// Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. // Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn.

View file

@ -1,10 +1,11 @@
package mage.cards.w; package mage.cards.w;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -13,6 +14,8 @@ import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.AbilityPredicate;
import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
@ -29,10 +32,11 @@ public final class WingedWords extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
// This spell costs {1} less to cast if you control a creature with flying. // This spell costs {1} less to cast if you control a creature with flying.
this.addAbility(new SimpleStaticAbility( Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
Zone.ALL, new SpellCostReductionSourceEffect( this.addAbility(new SimpleStaticAbility(Zone.ALL,
1, new PermanentsOnTheBattlefieldCondition(filter) new SpellCostReductionSourceEffect(1, condition))
)).setRuleAtTheTop(true)); .setRuleAtTheTop(true)
.addHint(new ConditionHint(condition, "You control a creature with flying")));
// Draw two cards. // Draw two cards.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2)); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2));

View file

@ -1,11 +1,12 @@
package mage.cards.w; package mage.cards.w;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -14,8 +15,9 @@ import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/** /**
*
* @author Will * @author Will
*/ */
public final class WizardsLightning extends CardImpl { 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}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
// Wizard's Lightning costs {2} less to cast if you control a Wizard. // 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.setRuleAtTheTop(true);
ability.addHint(new ConditionHint(condition, "You control a Wizard"));
this.addAbility(ability); this.addAbility(ability);
// Wizard's Lightning deals 3 damage to any target. // Wizard's Lightning deals 3 damage to any target.

View file

@ -1,11 +1,12 @@
package mage.cards.w; package mage.cards.w;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.effects.common.CounterTargetEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -14,8 +15,9 @@ import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.target.TargetSpell; import mage.target.TargetSpell;
import java.util.UUID;
/** /**
*
* @author Will * @author Will
*/ */
public final class WizardsRetort extends CardImpl { 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}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{U}");
// Wizard's Retort costs {1} less to cast if you control a Wizard. // 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.setRuleAtTheTop(true);
ability.addHint(new ConditionHint(condition, "You control a Wizard"));
this.addAbility(ability); this.addAbility(ability);
// Counter target spell. // Counter target spell.