public MadnessCastEffect(ManaCosts<ManaCost> madnessCost) { super(Outcome.Benefit); this.madnessCost = madnessCost; staticText = "you may cast it by paying " + madnessCost.getText() + " instead of putting it into your graveyard"; }
@Override public String getRule() { return "Emerge " + emergeCost.getText() + " <i>(You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.)</i>"; } }
@Override public String getRule() { return "You may cast {this} as though it had flash if you pay " + costsToAdd.getText() + " more to cast it. <i>(You may cast it any time you could cast an instant.)</i>"; }
@Override public String getRule() { StringBuilder sb = new StringBuilder("Meditate ").append(manaCosts.getText()); sb.append(" <i>(Return this creature to its owner's hand. Meditate only as a sorcery.)</i>"); return sb.toString(); }
public CantAttackYouUnlessPayManaAllEffect(ManaCosts manaCosts, boolean payAlsoForAttackingPlaneswalker, FilterCreaturePermanent filter) { super(Duration.WhileOnBattlefield, Outcome.Detriment, RestrictType.ATTACK, manaCosts); this.payAlsoForAttackingPlaneswalker = payAlsoForAttackingPlaneswalker; this.filterCreaturePermanent = filter; staticText = (filterCreaturePermanent == null ? "Creatures" : filterCreaturePermanent.getMessage()) + " can't attack you " + (payAlsoForAttackingPlaneswalker ? "or a planeswalker you control " : "") + "unless their controller pays " + (manaCosts == null ? "" : manaCosts.getText()) + " for each creature they controls that's attacking you"; }
public CantAttackBlockUnlessPaysAttachedEffect(ManaCosts manaCosts, AttachmentType attachmentType) { super(Duration.WhileOnBattlefield, Outcome.Detriment, RestrictType.ATTACK_AND_BLOCK, manaCosts); staticText = attachmentType.verb() + " creature can't attack or block unless its controller pays " + (manaCosts == null ? "" : manaCosts.getText()); }
@Override public String getRule() { StringBuilder sb = new StringBuilder("Unearth ").append(this.getManaCosts().getText()); sb.append(" <i>(").append(this.getManaCosts().getText()); sb.append(": Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)"); return sb.toString(); }
public CantBlockUnlessPayManaAllEffect(ManaCosts manaCosts, boolean payAlsoForAttackingPlaneswalker, FilterCreaturePermanent filter) { super(Duration.WhileOnBattlefield, Outcome.Detriment, RestrictType.BLOCK, manaCosts); this.filterCreaturePermanent = filter; staticText = (filterCreaturePermanent == null ? "Creatures" : filterCreaturePermanent.getMessage()) + " can't block " + "unless their controller pays " + (manaCosts == null ? "" : manaCosts.getText()) + " for each blocking creature he or she controls"; }
public CantAttackBlockUnlessPaysSourceEffect(ManaCosts manaCosts, RestrictType restrictType) { super(Duration.WhileOnBattlefield, Outcome.Detriment, RestrictType.ATTACK_AND_BLOCK, manaCosts); staticText = "{this} can't " + restrictType.toString() + " unless you pay " + manaCosts == null ? "" : manaCosts.getText(); }
public CantAttackUnlessPaysAttachedEffect(ManaCosts manaCosts, AttachmentType attachmentType) { super(Duration.WhileOnBattlefield, Outcome.Detriment, RestrictType.ATTACK, manaCosts); staticText = attachmentType.verb() + " creature can't attack unless its controller pays " + (manaCosts == null ? "" : manaCosts.getText()); }
@Override public String getRule() { return new StringBuilder("Transmute ").append(this.getManaCosts().getText()) .append(" <i>(").append(this.getManaCosts().getText()) .append(", Discard this card: Search your library for a card with the same converted mana cost as this card, reveal it, and put it into your hand. Then shuffle your library. Transmute only as a sorcery.)</i>").toString(); } }
@Override public String getRule() { return (commander ? "Commander n" : "N") + "injutsu " + getManaCostsToPay().getText() + " <i>(" + getManaCostsToPay().getText() + " Return an unblocked attacker you control to hand: " + "Put this card onto the battlefield from your hand" + (commander ? " or the command zone " : " ") + "tapped and attacking.)</i>"; } }
@Override public String getRule() { StringBuilder sb = new StringBuilder("Outlast ").append(manaCosts.getText()); sb.append(" <i>(").append(getManaCosts().getText()).append(", ").append(getCosts().getText()).append(": Put a +1/+1 counter on this creature. Outlast only as a sorcery.)</i>"); return sb.toString(); }
@Override public boolean apply(Game game, Ability source) { if (AbilityType.SPELL == source.getAbilityType()) { MageObject object = game.getObject(source.getSourceId()); return object != null && object.getManaCost().getText().contains("X"); } else { return source.getManaCosts().getText().contains("X"); } } }
@SuppressWarnings("unchecked") public MiracleAbility(Card card, ManaCosts miracleCosts) { super(Zone.HAND, new MiracleEffect((ManaCosts<ManaCost>) miracleCosts), true); addWatcher(new MiracleWatcher()); ruleText = "Miracle " + miracleCosts.getText() + staticRule; }