mirror of
https://github.com/correl/mage.git
synced 2024-12-25 03:00:15 +00:00
* Glint-Next Crane - Fixed that it was not optional to reveal an artifact (fixes #2491).
This commit is contained in:
parent
97b872d926
commit
13c8f3263f
4 changed files with 35 additions and 10 deletions
|
@ -36,6 +36,7 @@ import mage.abilities.keyword.FlyingAbility;
|
||||||
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.Zone;
|
||||||
import mage.filter.FilterCard;
|
import mage.filter.FilterCard;
|
||||||
import mage.filter.predicate.mageobject.CardTypePredicate;
|
import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||||
|
|
||||||
|
@ -48,11 +49,11 @@ public class GlintNestCrane extends CardImpl {
|
||||||
private static final FilterCard filter = new FilterCard("an artifact card");
|
private static final FilterCard filter = new FilterCard("an artifact card");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(new CardTypePredicate(CardType.ARTIFACT));
|
filter.add(new CardTypePredicate(CardType.ARTIFACT));
|
||||||
}
|
}
|
||||||
|
|
||||||
public GlintNestCrane(UUID ownerId, CardSetInfo setInfo) {
|
public GlintNestCrane(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
|
||||||
this.subtype.add("Bird");
|
this.subtype.add("Bird");
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
@ -62,7 +63,8 @@ public class GlintNestCrane extends CardImpl {
|
||||||
|
|
||||||
// When Glint-Nest Crane enters the battlefield, look at the top four cards of your library. You may reveal an artifact card from among them and
|
// When Glint-Nest Crane enters the battlefield, look at the top four cards of your library. You may reveal an artifact card from among them and
|
||||||
// put it into your hand. Put the rest on the bottom of your library in any order.
|
// put it into your hand. Put the rest on the bottom of your library in any order.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new LookLibraryAndPickControllerEffect(new StaticValue(4), false, new StaticValue(1), filter, false)));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||||
|
new LookLibraryAndPickControllerEffect(new StaticValue(4), false, new StaticValue(1), filter, Zone.LIBRARY, false, true, false, Zone.HAND, true)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public GlintNestCrane(final GlintNestCrane card) {
|
public GlintNestCrane(final GlintNestCrane card) {
|
||||||
|
|
|
@ -28,9 +28,6 @@
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.Duration;
|
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
|
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
|
||||||
|
@ -38,6 +35,9 @@ import mage.abilities.dynamicvalue.common.StaticValue;
|
||||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Zone;
|
||||||
import mage.filter.common.FilterArtifactCard;
|
import mage.filter.common.FilterArtifactCard;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -47,13 +47,15 @@ import mage.filter.common.FilterArtifactCard;
|
||||||
public class SalvageSlasher extends CardImpl {
|
public class SalvageSlasher extends CardImpl {
|
||||||
|
|
||||||
public SalvageSlasher(UUID ownerId, CardSetInfo setInfo) {
|
public SalvageSlasher(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{1}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{B}");
|
||||||
this.subtype.add("Human");
|
this.subtype.add("Human");
|
||||||
this.subtype.add("Rogue");
|
this.subtype.add("Rogue");
|
||||||
|
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
BoostSourceEffect effect = new BoostSourceEffect(new CardsInControllerGraveyardCount(new FilterArtifactCard()),
|
|
||||||
|
// Salvage Slasher gets +1/+0 for each artifact card in your graveyard.
|
||||||
|
BoostSourceEffect effect = new BoostSourceEffect(new CardsInControllerGraveyardCount(new FilterArtifactCard("artifact card")),
|
||||||
new StaticValue(0),
|
new StaticValue(0),
|
||||||
Duration.WhileOnBattlefield);
|
Duration.WhileOnBattlefield);
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||||
|
|
|
@ -63,7 +63,7 @@ import mage.target.common.TargetCardInLibrary;
|
||||||
public class TezzeretTheSeeker extends CardImpl {
|
public class TezzeretTheSeeker extends CardImpl {
|
||||||
|
|
||||||
public TezzeretTheSeeker(UUID ownerId, CardSetInfo setInfo) {
|
public TezzeretTheSeeker(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{3}{U}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{U}{U}");
|
||||||
this.subtype.add("Tezzeret");
|
this.subtype.add("Tezzeret");
|
||||||
|
|
||||||
this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(4));
|
this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(4));
|
||||||
|
@ -118,7 +118,7 @@ class TezzeretTheSeekerEffect2 extends OneShotEffect {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FilterArtifactCard filter = new FilterArtifactCard(new StringBuilder("artifact card with converted mana cost ").append(cmc).append(" or less").toString());
|
FilterArtifactCard filter = new FilterArtifactCard("artifact card with converted mana cost " + cmc + " or less");
|
||||||
filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, cmc + 1));
|
filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, cmc + 1));
|
||||||
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
TargetCardInLibrary target = new TargetCardInLibrary(filter);
|
||||||
|
|
||||||
|
|
|
@ -75,12 +75,33 @@ public class LookLibraryAndPickControllerEffect extends LookLibraryControllerEff
|
||||||
this(new StaticValue(numberOfCards), false, new StaticValue(numberToPick), pickFilter, Zone.LIBRARY, false, true, upTo);
|
this(new StaticValue(numberOfCards), false, new StaticValue(numberToPick), pickFilter, Zone.LIBRARY, false, true, upTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param numberOfCards
|
||||||
|
* @param numberToPick
|
||||||
|
* @param pickFilter
|
||||||
|
* @param reveal
|
||||||
|
* @param upTo
|
||||||
|
* @param targetZonePickedCards
|
||||||
|
* @param optional
|
||||||
|
*/
|
||||||
public LookLibraryAndPickControllerEffect(int numberOfCards, int numberToPick, FilterCard pickFilter, boolean reveal, boolean upTo,
|
public LookLibraryAndPickControllerEffect(int numberOfCards, int numberToPick, FilterCard pickFilter, boolean reveal, boolean upTo,
|
||||||
Zone targetZonePickedCards, boolean optional) {
|
Zone targetZonePickedCards, boolean optional) {
|
||||||
this(new StaticValue(numberOfCards), false, new StaticValue(numberToPick), pickFilter, Zone.LIBRARY, false, reveal, upTo, targetZonePickedCards, optional);
|
this(new StaticValue(numberOfCards), false, new StaticValue(numberToPick), pickFilter, Zone.LIBRARY, false, reveal, upTo, targetZonePickedCards, optional);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param numberOfCards
|
||||||
|
* @param mayShuffleAfter
|
||||||
|
* @param numberToPick
|
||||||
|
* @param pickFilter
|
||||||
|
* @param targetZoneLookedCards
|
||||||
|
* @param putOnTop
|
||||||
|
* @param reveal
|
||||||
|
* @param upTo
|
||||||
|
*/
|
||||||
public LookLibraryAndPickControllerEffect(DynamicValue numberOfCards, boolean mayShuffleAfter, DynamicValue numberToPick,
|
public LookLibraryAndPickControllerEffect(DynamicValue numberOfCards, boolean mayShuffleAfter, DynamicValue numberToPick,
|
||||||
FilterCard pickFilter, Zone targetZoneLookedCards, boolean putOnTop, boolean reveal, boolean upTo) {
|
FilterCard pickFilter, Zone targetZoneLookedCards, boolean putOnTop, boolean reveal, boolean upTo) {
|
||||||
this(numberOfCards, mayShuffleAfter, numberToPick, pickFilter, targetZoneLookedCards, putOnTop, reveal, upTo, Zone.HAND, false);
|
this(numberOfCards, mayShuffleAfter, numberToPick, pickFilter, targetZoneLookedCards, putOnTop, reveal, upTo, Zone.HAND, false);
|
||||||
|
|
Loading…
Reference in a new issue