* 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;
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 {
@ -38,8 +39,10 @@ public final class AcademyJourneymage extends CardImpl {
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.

View file

@ -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());

View file

@ -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());

View file

@ -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.

View file

@ -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.

View file

@ -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));

View file

@ -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}.

View file

@ -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) {

View file

@ -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());

View file

@ -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.

View file

@ -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));

View file

@ -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.

View file

@ -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.