mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
convert transforming "D" cards to single class file
This commit is contained in:
parent
a5d14f91f6
commit
bb69fe2595
45 changed files with 621 additions and 1250 deletions
|
|
@ -1,71 +0,0 @@
|
||||||
package mage.cards.b;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.SagaAbility;
|
|
||||||
import mage.abilities.effects.common.DestroyTargetEffect;
|
|
||||||
import mage.abilities.effects.common.ExileSourceAndReturnFaceUpEffect;
|
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
|
||||||
import mage.abilities.effects.common.counter.AddCountersAllEffect;
|
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.*;
|
|
||||||
import mage.counters.CounterType;
|
|
||||||
import mage.filter.StaticFilters;
|
|
||||||
import mage.target.TargetPermanent;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author TheElk801
|
|
||||||
*/
|
|
||||||
public final class BahamutWardenOfLight extends CardImpl {
|
|
||||||
|
|
||||||
public BahamutWardenOfLight(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "");
|
|
||||||
|
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
|
||||||
this.subtype.add(SubType.SAGA);
|
|
||||||
this.subtype.add(SubType.DRAGON);
|
|
||||||
this.power = new MageInt(5);
|
|
||||||
this.toughness = new MageInt(5);
|
|
||||||
this.nightCard = true;
|
|
||||||
this.color.setWhite(true);
|
|
||||||
|
|
||||||
// (As this Saga enters and after your draw step, add a lore counter.)
|
|
||||||
SagaAbility sagaAbility = new SagaAbility(this);
|
|
||||||
|
|
||||||
// I, II -- Wings of Light -- Put a +1/+1 counter on each other creature you control. Those creatures gain flying until end of turn.
|
|
||||||
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II, ability -> {
|
|
||||||
ability.addEffect(new AddCountersAllEffect(
|
|
||||||
CounterType.P1P1.createInstance(), StaticFilters.FILTER_OTHER_CONTROLLED_CREATURE
|
|
||||||
));
|
|
||||||
ability.addEffect(new GainAbilityControlledEffect(
|
|
||||||
FlyingAbility.getInstance(), Duration.EndOfTurn,
|
|
||||||
StaticFilters.FILTER_CONTROLLED_CREATURE
|
|
||||||
).setText("Those creatures gain flying until end of turn"));
|
|
||||||
ability.withFlavorWord("Wings of Light");
|
|
||||||
});
|
|
||||||
|
|
||||||
// III -- Gigaflare -- Destroy target permanent. Exile Bahamut, then return it to the battlefield.
|
|
||||||
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, ability -> {
|
|
||||||
ability.addEffect(new DestroyTargetEffect());
|
|
||||||
ability.addEffect(new ExileSourceAndReturnFaceUpEffect());
|
|
||||||
ability.addTarget(new TargetPermanent());
|
|
||||||
ability.withFlavorWord("Gigaflare");
|
|
||||||
});
|
|
||||||
this.addAbility(sagaAbility);
|
|
||||||
|
|
||||||
// Flying
|
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
|
||||||
}
|
|
||||||
|
|
||||||
private BahamutWardenOfLight(final BahamutWardenOfLight card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BahamutWardenOfLight copy() {
|
|
||||||
return new BahamutWardenOfLight(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
|
|
||||||
package mage.cards.b;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
|
||||||
import mage.abilities.effects.keyword.InvestigateEffect;
|
|
||||||
import mage.abilities.keyword.ProwessAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author fireshoes
|
|
||||||
*/
|
|
||||||
public final class BearerOfOverwhelmingTruths extends CardImpl {
|
|
||||||
|
|
||||||
public BearerOfOverwhelmingTruths(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
|
|
||||||
this.subtype.add(SubType.HUMAN, SubType.WIZARD);
|
|
||||||
this.power = new MageInt(3);
|
|
||||||
this.toughness = new MageInt(2);
|
|
||||||
this.color.setBlue(true);
|
|
||||||
|
|
||||||
// this card is the second face of double-faced card
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// Prowess
|
|
||||||
this.addAbility(new ProwessAbility());
|
|
||||||
|
|
||||||
// Whenever Bearer of Overwhelming Truths deals combat damage to a player, investigate.
|
|
||||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new InvestigateEffect(), false));
|
|
||||||
}
|
|
||||||
|
|
||||||
private BearerOfOverwhelmingTruths(final BearerOfOverwhelmingTruths card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BearerOfOverwhelmingTruths copy() {
|
|
||||||
return new BearerOfOverwhelmingTruths(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
package mage.cards.c;
|
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
|
||||||
import mage.abilities.effects.common.TapTargetEffect;
|
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
|
||||||
import mage.abilities.keyword.EnchantAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.AttachmentType;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.Outcome;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.filter.FilterPermanent;
|
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
|
||||||
import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate;
|
|
||||||
import mage.target.TargetPermanent;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author TheElk801
|
|
||||||
*/
|
|
||||||
public final class CleverDistraction extends CardImpl {
|
|
||||||
|
|
||||||
private static final FilterPermanent filter
|
|
||||||
= new FilterCreaturePermanent("creature defending player controls");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(DefendingPlayerControlsSourceAttackingPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CleverDistraction(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "");
|
|
||||||
|
|
||||||
this.subtype.add(SubType.AURA);
|
|
||||||
this.color.setWhite(true);
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// Enchant creature
|
|
||||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
|
||||||
this.getSpellAbility().addTarget(auraTarget);
|
|
||||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
|
||||||
this.addAbility(new EnchantAbility(auraTarget));
|
|
||||||
|
|
||||||
// Enchanted creature has "Whenever this creature attacks, tap target creature defending player controls."
|
|
||||||
Ability ability = new AttacksTriggeredAbility(new TapTargetEffect())
|
|
||||||
.setTriggerPhrase("Whenever this creature attacks, ");
|
|
||||||
ability.addTarget(new TargetPermanent(filter));
|
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(ability, AttachmentType.AURA)));
|
|
||||||
|
|
||||||
// If Clever Distracting would be put into a graveyard from anywhere, exile it instead.
|
|
||||||
this.addAbility(DisturbAbility.makeBackAbility());
|
|
||||||
}
|
|
||||||
|
|
||||||
private CleverDistraction(final CleverDistraction card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public CleverDistraction copy() {
|
|
||||||
return new CleverDistraction(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||||
import mage.abilities.common.SacrificePermanentTriggeredAbility;
|
import mage.abilities.common.SacrificePermanentTriggeredAbility;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.effects.keyword.InvestigateEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.abilities.keyword.ProwessAbility;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
|
|
@ -15,21 +16,30 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class DaringSleuth extends CardImpl {
|
public final class DaringSleuth extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DaringSleuth(UUID ownerId, CardSetInfo setInfo) {
|
public DaringSleuth(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
|
super(ownerId, setInfo,
|
||||||
this.subtype.add(SubType.HUMAN);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.ROGUE}, "{1}{U}",
|
||||||
this.subtype.add(SubType.ROGUE);
|
"Bearer of Overwhelming Truths",
|
||||||
this.power = new MageInt(2);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WIZARD}, "U");
|
||||||
this.toughness = new MageInt(1);
|
|
||||||
|
|
||||||
this.secondSideCardClazz = mage.cards.b.BearerOfOverwhelmingTruths.class;
|
// Daring Sleuth
|
||||||
|
this.getLeftHalfCard().setPT(2, 1);
|
||||||
|
|
||||||
// When you sacrifice a Clue, transform Daring Sleuth.
|
// When you sacrifice a Clue, transform Daring Sleuth.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new SacrificePermanentTriggeredAbility(
|
||||||
this.addAbility(new SacrificePermanentTriggeredAbility(new TransformSourceEffect(), StaticFilters.FILTER_CONTROLLED_CLUE)
|
new TransformSourceEffect(), StaticFilters.FILTER_CONTROLLED_CLUE
|
||||||
.setTriggerPhrase("When you sacrifice a Clue, "));
|
).setTriggerPhrase("When you sacrifice a Clue, "));
|
||||||
|
|
||||||
|
// Bearer of Overwhelming Truths
|
||||||
|
this.getRightHalfCard().setPT(3, 2);
|
||||||
|
|
||||||
|
// Prowess
|
||||||
|
this.getRightHalfCard().addAbility(new ProwessAbility());
|
||||||
|
|
||||||
|
// Whenever Bearer of Overwhelming Truths deals combat damage to a player, investigate.
|
||||||
|
this.getRightHalfCard().addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new InvestigateEffect(), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DaringSleuth(final DaringSleuth card) {
|
private DaringSleuth(final DaringSleuth card) {
|
||||||
|
|
|
||||||
|
|
@ -1,46 +1,59 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||||
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.effects.common.FightTargetSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author North
|
* @author North
|
||||||
*/
|
*/
|
||||||
public final class DaybreakRanger extends CardImpl {
|
public final class DaybreakRanger extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DaybreakRanger(UUID ownerId, CardSetInfo setInfo) {
|
public DaybreakRanger(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
super(ownerId, setInfo,
|
||||||
this.subtype.add(SubType.HUMAN);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.ARCHER, SubType.RANGER, SubType.WEREWOLF}, "{2}{G}",
|
||||||
this.subtype.add(SubType.ARCHER);
|
"Nightfall Predator",
|
||||||
this.subtype.add(SubType.RANGER);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "G");
|
||||||
this.subtype.add(SubType.WEREWOLF);
|
|
||||||
|
|
||||||
this.secondSideCardClazz = mage.cards.n.NightfallPredator.class;
|
// Daybreak Ranger
|
||||||
|
this.getLeftHalfCard().setPT(2, 2);
|
||||||
|
|
||||||
this.power = new MageInt(2);
|
// {T}: Daybreak Ranger deals 2 damage to target creature with flying.
|
||||||
this.toughness = new MageInt(2);
|
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(2), new TapSourceCost());
|
||||||
|
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_FLYING));
|
||||||
// {tap}: Daybreak Ranger deals 2 damage to target creature with flying.
|
this.getLeftHalfCard().addAbility(ability);
|
||||||
Ability activatedAbility = new SimpleActivatedAbility(new DamageTargetEffect(2), new TapSourceCost());
|
|
||||||
activatedAbility.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_FLYING));
|
|
||||||
this.addAbility(activatedAbility);
|
|
||||||
|
|
||||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Daybreak Ranger.
|
// At the beginning of each upkeep, if no spells were cast last turn, transform Daybreak Ranger.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||||
this.addAbility(new WerewolfFrontTriggeredAbility());
|
|
||||||
|
// Nightfall Predator
|
||||||
|
this.getRightHalfCard().setPT(4, 4);
|
||||||
|
|
||||||
|
// {R}, {T}: Nightfall Predator fights target creature.
|
||||||
|
Ability ability2 = new SimpleActivatedAbility(
|
||||||
|
new FightTargetSourceEffect().setText("{this} fights target creature. <i>(Each deals damage equal to its power to the other.)</i>"),
|
||||||
|
new ManaCostsImpl<>("{R}")
|
||||||
|
);
|
||||||
|
ability2.addCost(new TapSourceCost());
|
||||||
|
ability2.addTarget(new TargetCreaturePermanent());
|
||||||
|
this.getRightHalfCard().addAbility(ability2);
|
||||||
|
|
||||||
|
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Nightfall Predator.
|
||||||
|
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DaybreakRanger(final DaybreakRanger card) {
|
private DaybreakRanger(final DaybreakRanger card) {
|
||||||
|
|
|
||||||
|
|
@ -1,93 +0,0 @@
|
||||||
package mage.cards.d;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.effects.OneShotEffect;
|
|
||||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
|
||||||
import mage.cards.Card;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.Outcome;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.counters.CounterType;
|
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.permanent.Permanent;
|
|
||||||
import mage.players.Player;
|
|
||||||
import mage.target.TargetCard;
|
|
||||||
import mage.target.common.TargetCardInGraveyard;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author TheElk801
|
|
||||||
*/
|
|
||||||
public final class DeathbonnetHulk extends CardImpl {
|
|
||||||
|
|
||||||
public DeathbonnetHulk(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
|
||||||
|
|
||||||
this.subtype.add(SubType.FUNGUS);
|
|
||||||
this.subtype.add(SubType.HORROR);
|
|
||||||
this.power = new MageInt(3);
|
|
||||||
this.toughness = new MageInt(3);
|
|
||||||
this.color.setGreen(true);
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// At the beginning of your upkeep, you may exile a card from a graveyard. If a creature card was exiled this way, put a +1/+1 counter on Deathbonnet Hulk.
|
|
||||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new DeathbonnetHulkEffect()));
|
|
||||||
}
|
|
||||||
|
|
||||||
private DeathbonnetHulk(final DeathbonnetHulk card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DeathbonnetHulk copy() {
|
|
||||||
return new DeathbonnetHulk(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DeathbonnetHulkEffect extends OneShotEffect {
|
|
||||||
|
|
||||||
DeathbonnetHulkEffect() {
|
|
||||||
super(Outcome.Benefit);
|
|
||||||
staticText = "you may exile a card from a graveyard. " +
|
|
||||||
"If a creature card was exiled this way, put a +1/+1 counter on {this}";
|
|
||||||
}
|
|
||||||
|
|
||||||
private DeathbonnetHulkEffect(final DeathbonnetHulkEffect effect) {
|
|
||||||
super(effect);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DeathbonnetHulkEffect copy() {
|
|
||||||
return new DeathbonnetHulkEffect(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean apply(Game game, Ability source) {
|
|
||||||
Player player = game.getPlayer(source.getControllerId());
|
|
||||||
if (player == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
TargetCard target = new TargetCardInGraveyard(0, 1);
|
|
||||||
target.withNotTarget(true);
|
|
||||||
player.choose(outcome, target, source, game);
|
|
||||||
Card card = game.getCard(target.getFirstTarget());
|
|
||||||
if (card == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
boolean flag = card.isCreature(game);
|
|
||||||
player.moveCards(card, Zone.EXILED, source, game);
|
|
||||||
if (!flag) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
Permanent permanent = source.getSourcePermanentIfItStillExists(game);
|
|
||||||
if (permanent != null) {
|
|
||||||
permanent.addCounters(CounterType.P1P1.createInstance(), source.getControllerId(), source, game);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,55 +1,66 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.CardsInControllerGraveyardCondition;
|
import mage.abilities.condition.common.CardsInControllerGraveyardCondition;
|
||||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||||
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
|
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
|
||||||
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.MillCardsControllerEffect;
|
import mage.abilities.effects.common.MillCardsControllerEffect;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.hint.Hint;
|
import mage.abilities.hint.Hint;
|
||||||
import mage.abilities.hint.ValueHint;
|
import mage.abilities.hint.ValueHint;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.Card;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Outcome;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import mage.counters.CounterType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.permanent.Permanent;
|
||||||
|
import mage.players.Player;
|
||||||
|
import mage.target.TargetCard;
|
||||||
|
import mage.target.common.TargetCardInGraveyard;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class DeathbonnetSprout extends CardImpl {
|
public final class DeathbonnetSprout extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
private static final Condition condition
|
private static final Condition condition = new CardsInControllerGraveyardCondition(3, StaticFilters.FILTER_CARD_CREATURE);
|
||||||
= new CardsInControllerGraveyardCondition(3, StaticFilters.FILTER_CARD_CREATURE);
|
|
||||||
private static final Hint hint = new ValueHint(
|
private static final Hint hint = new ValueHint(
|
||||||
"Creature cards in your graveyard",
|
"Creature cards in your graveyard",
|
||||||
new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE)
|
new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE)
|
||||||
);
|
);
|
||||||
|
|
||||||
public DeathbonnetSprout(UUID ownerId, CardSetInfo setInfo) {
|
public DeathbonnetSprout(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
|
super(ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.FUNGUS}, "{G}",
|
||||||
|
"Deathbonnet Hulk",
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.FUNGUS, SubType.HORROR}, "G");
|
||||||
|
|
||||||
this.subtype.add(SubType.FUNGUS);
|
// Deathbonnet Sprout
|
||||||
this.power = new MageInt(1);
|
this.getLeftHalfCard().setPT(1, 1);
|
||||||
this.toughness = new MageInt(1);
|
|
||||||
this.secondSideCardClazz = mage.cards.d.DeathbonnetHulk.class;
|
|
||||||
|
|
||||||
// At the beginning of your upkeep, mill a card. Then if there are three or more creature cards in your graveyard, transform Deathbonnet Sprout.
|
// At the beginning of your upkeep, mill a card. Then if there are three or more creature cards in your graveyard, transform Deathbonnet Sprout.
|
||||||
this.addAbility(new TransformAbility());
|
Ability ability = new BeginningOfUpkeepTriggeredAbility(new MillCardsControllerEffect(1));
|
||||||
Ability ability = new BeginningOfUpkeepTriggeredAbility(
|
ability.addEffect(new ConditionalOneShotEffect(new TransformSourceEffect(), condition,
|
||||||
new MillCardsControllerEffect(1)
|
"Then if there are three or more creature cards in your graveyard, transform {this}"));
|
||||||
);
|
this.getLeftHalfCard().addAbility(ability.addHint(hint));
|
||||||
ability.addEffect(new ConditionalOneShotEffect(
|
|
||||||
new TransformSourceEffect(), condition,
|
|
||||||
"Then if there are three or more creature cards in your graveyard, transform {this}"
|
// Deathbonnet Hulk
|
||||||
));
|
this.getRightHalfCard().setPT(3, 3);
|
||||||
this.addAbility(ability.addHint(hint));
|
|
||||||
|
|
||||||
|
// At the beginning of your upkeep, you may exile a card from a graveyard. If a creature card was exiled this way, put a +1/+1 counter on Deathbonnet Hulk.
|
||||||
|
this.getRightHalfCard().addAbility(new BeginningOfUpkeepTriggeredAbility(new DeathbonnetHulkEffect()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DeathbonnetSprout(final DeathbonnetSprout card) {
|
private DeathbonnetSprout(final DeathbonnetSprout card) {
|
||||||
|
|
@ -61,3 +72,44 @@ public final class DeathbonnetSprout extends CardImpl {
|
||||||
return new DeathbonnetSprout(this);
|
return new DeathbonnetSprout(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class DeathbonnetHulkEffect extends OneShotEffect {
|
||||||
|
DeathbonnetHulkEffect() {
|
||||||
|
super(Outcome.Benefit);
|
||||||
|
staticText = "you may exile a card from a graveyard. If a creature card was exiled this way, put a +1/+1 counter on {this}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private DeathbonnetHulkEffect(final DeathbonnetHulkEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeathbonnetHulkEffect copy() {
|
||||||
|
return new DeathbonnetHulkEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(Game game, Ability source) {
|
||||||
|
Player player = game.getPlayer(source.getControllerId());
|
||||||
|
if (player == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
TargetCard target = new TargetCardInGraveyard(0, 1);
|
||||||
|
target.withNotTarget(true);
|
||||||
|
player.choose(outcome, target, source, game);
|
||||||
|
Card card = game.getCard(target.getFirstTarget());
|
||||||
|
if (card == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
boolean creature = card.isCreature(game);
|
||||||
|
player.moveCards(card, Zone.EXILED, source, game);
|
||||||
|
if (!creature) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Permanent permanent = source.getSourcePermanentIfItStillExists(game);
|
||||||
|
if (permanent != null) {
|
||||||
|
permanent.addCounters(CounterType.P1P1.createInstance(), source.getControllerId(), source, game);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||||
import mage.cards.*;
|
import mage.cards.*;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
|
@ -19,21 +18,25 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author Alvin
|
* @author Alvin
|
||||||
*/
|
*/
|
||||||
public final class DelverOfSecrets extends CardImpl {
|
public final class DelverOfSecrets extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DelverOfSecrets(UUID ownerId, CardSetInfo setInfo) {
|
public DelverOfSecrets(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
|
super(ownerId, setInfo,
|
||||||
this.subtype.add(SubType.HUMAN);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WIZARD}, "{U}",
|
||||||
this.subtype.add(SubType.WIZARD);
|
"Insectile Aberration",
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.INSECT}, "U");
|
||||||
|
|
||||||
this.power = new MageInt(1);
|
// Delver of Secrets
|
||||||
this.toughness = new MageInt(1);
|
this.getLeftHalfCard().setPT(1, 1);
|
||||||
|
|
||||||
this.secondSideCardClazz = mage.cards.i.InsectileAberration.class;
|
|
||||||
|
|
||||||
// At the beginning of your upkeep, look at the top card of your library. You may reveal that card. If an instant or sorcery card is revealed this way, transform Delver of Secrets.
|
// At the beginning of your upkeep, look at the top card of your library. You may reveal that card. If an instant or sorcery card is revealed this way, transform Delver of Secrets.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new BeginningOfUpkeepTriggeredAbility(new DelverOfSecretsEffect()));
|
||||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new DelverOfSecretsEffect()));
|
|
||||||
|
// Insectile Aberration
|
||||||
|
this.getRightHalfCard().setPT(3, 2);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DelverOfSecrets(final DelverOfSecrets card) {
|
private DelverOfSecrets(final DelverOfSecrets card) {
|
||||||
|
|
@ -47,10 +50,9 @@ public final class DelverOfSecrets extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
class DelverOfSecretsEffect extends OneShotEffect {
|
class DelverOfSecretsEffect extends OneShotEffect {
|
||||||
|
DelverOfSecretsEffect() {
|
||||||
public DelverOfSecretsEffect() {
|
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "look at the top card of your library. You may reveal that card. " +
|
staticText = "look at the top card of your library. You may reveal that card. " +
|
||||||
"If an instant or sorcery card is revealed this way, transform {this}";
|
"If an instant or sorcery card is revealed this way, transform {this}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,44 +1,58 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.abilities.common.PutCardIntoGraveFromAnywhereAllTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
|
||||||
import mage.abilities.effects.common.CantBeTargetedCardsGraveyardsEffect;
|
import mage.abilities.effects.common.CantBeTargetedCardsGraveyardsEffect;
|
||||||
|
import mage.abilities.effects.keyword.InvestigateEffect;
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
import mage.abilities.keyword.DisturbAbility;
|
||||||
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.abilities.keyword.LifelinkAbility;
|
import mage.abilities.keyword.LifelinkAbility;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.TargetController;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LePwnerer
|
* @author LePwnerer
|
||||||
*/
|
*/
|
||||||
public final class DennickPiousApprentice extends CardImpl {
|
public final class DennickPiousApprentice extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DennickPiousApprentice(UUID ownerId, CardSetInfo setInfo) {
|
public DennickPiousApprentice(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}");
|
super(ownerId, setInfo,
|
||||||
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SOLDIER}, "{W}{U}",
|
||||||
|
"Dennick, Pious Apparition",
|
||||||
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT, SubType.SOLDIER}, "WU");
|
||||||
|
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
// Dennick, Pious Apprentice
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.getLeftHalfCard().setPT(2, 3);
|
||||||
this.subtype.add(SubType.SOLDIER);
|
|
||||||
this.power = new MageInt(2);
|
|
||||||
this.toughness = new MageInt(3);
|
|
||||||
this.secondSideCardClazz = mage.cards.d.DennickPiousApparition.class;
|
|
||||||
|
|
||||||
// Lifelink
|
// Lifelink
|
||||||
this.addAbility(LifelinkAbility.getInstance());
|
this.getLeftHalfCard().addAbility(LifelinkAbility.getInstance());
|
||||||
|
|
||||||
// Cards in graveyards can't be the targets of spells or abilities.
|
// Cards in graveyards can't be the targets of spells or abilities.
|
||||||
this.addAbility(new SimpleStaticAbility(new CantBeTargetedCardsGraveyardsEffect()));
|
this.getLeftHalfCard().addAbility(new SimpleStaticAbility(new CantBeTargetedCardsGraveyardsEffect()));
|
||||||
|
|
||||||
// Disturb {2}{W}{U}
|
// Disturb {2}{W}{U}
|
||||||
this.addAbility(new DisturbAbility(this, "{2}{W}{U}"));
|
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{2}{W}{U}"));
|
||||||
|
|
||||||
|
// Dennick, Pious Apparition
|
||||||
|
this.getRightHalfCard().setPT(3, 2);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
|
// Whenever one or more creature cards are put into graveyards from anywhere, investigate. This ability triggers only once each turn.
|
||||||
|
this.getRightHalfCard().addAbility(new PutCardIntoGraveFromAnywhereAllTriggeredAbility(
|
||||||
|
new InvestigateEffect(1), false, StaticFilters.FILTER_CARD_CREATURE, TargetController.ANY
|
||||||
|
).setTriggersLimitEachTurn(1).setTriggerPhrase("Whenever one or more creature cards are put into graveyards from anywhere, "));
|
||||||
|
|
||||||
|
// If Dennick, Pious Apparition would be put into a graveyard from anywhere, exile it instead.
|
||||||
|
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DennickPiousApprentice(final DennickPiousApprentice card) {
|
private DennickPiousApprentice(final DennickPiousApprentice card) {
|
||||||
|
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
package mage.cards.d;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.CanBlockOnlyFlyingAbility;
|
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author TheElk801
|
|
||||||
*/
|
|
||||||
public final class DepartedSoulkeeper extends CardImpl {
|
|
||||||
|
|
||||||
public DepartedSoulkeeper(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
|
||||||
|
|
||||||
this.subtype.add(SubType.SPIRIT);
|
|
||||||
this.power = new MageInt(3);
|
|
||||||
this.toughness = new MageInt(1);
|
|
||||||
this.color.setWhite(true);
|
|
||||||
this.color.setBlue(true);
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// Flying
|
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
|
||||||
|
|
||||||
// Departed Soulkeeper can block only creatures with flying.
|
|
||||||
this.addAbility(new CanBlockOnlyFlyingAbility());
|
|
||||||
|
|
||||||
// If Departed Soulkeeper would be put into a graveyard from anywhere, exile it instead.
|
|
||||||
this.addAbility(DisturbAbility.makeBackAbility());
|
|
||||||
}
|
|
||||||
|
|
||||||
private DepartedSoulkeeper(final DepartedSoulkeeper card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DepartedSoulkeeper copy() {
|
|
||||||
return new DepartedSoulkeeper(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
package mage.cards.d;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.keyword.LifelinkAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author TheElk801
|
|
||||||
*/
|
|
||||||
public final class DepravedHarvester extends CardImpl {
|
|
||||||
|
|
||||||
public DepravedHarvester(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
|
||||||
|
|
||||||
this.subtype.add(SubType.HUMAN);
|
|
||||||
this.subtype.add(SubType.KNIGHT);
|
|
||||||
this.power = new MageInt(4);
|
|
||||||
this.toughness = new MageInt(3);
|
|
||||||
this.color.setBlack(true);
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// Lifelink
|
|
||||||
this.addAbility(LifelinkAbility.getInstance());
|
|
||||||
}
|
|
||||||
|
|
||||||
private DepravedHarvester(final DepravedHarvester card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DepravedHarvester copy() {
|
|
||||||
return new DepravedHarvester(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.keyword.LifelinkAbility;
|
import mage.abilities.keyword.LifelinkAbility;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
|
|
@ -16,26 +14,30 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class DesperateFarmer extends CardImpl {
|
public final class DesperateFarmer extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DesperateFarmer(UUID ownerId, CardSetInfo setInfo) {
|
public DesperateFarmer(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
super(ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.PEASANT}, "{2}{B}",
|
||||||
|
"Depraved Harvester",
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.KNIGHT}, "B");
|
||||||
|
|
||||||
this.subtype.add(SubType.HUMAN);
|
// Desperate Farmer
|
||||||
this.subtype.add(SubType.PEASANT);
|
this.getLeftHalfCard().setPT(2, 2);
|
||||||
this.power = new MageInt(2);
|
|
||||||
this.toughness = new MageInt(2);
|
|
||||||
this.secondSideCardClazz = mage.cards.d.DepravedHarvester.class;
|
|
||||||
|
|
||||||
// Lifelink
|
// Lifelink
|
||||||
this.addAbility(LifelinkAbility.getInstance());
|
this.getLeftHalfCard().addAbility(LifelinkAbility.getInstance());
|
||||||
|
|
||||||
// When another creature you control dies, transform Desperate Farmer.
|
// When another creature you control dies, transform Desperate Farmer.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new DiesCreatureTriggeredAbility(
|
||||||
this.addAbility(new DiesCreatureTriggeredAbility(
|
new TransformSourceEffect(), false, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE
|
||||||
new TransformSourceEffect(), false,
|
|
||||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE
|
|
||||||
).setTriggerPhrase("When another creature you control dies, "));
|
).setTriggerPhrase("When another creature you control dies, "));
|
||||||
|
|
||||||
|
// Depraved Harvester
|
||||||
|
this.getRightHalfCard().setPT(4, 3);
|
||||||
|
|
||||||
|
// Lifelink
|
||||||
|
this.getRightHalfCard().addAbility(LifelinkAbility.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DesperateFarmer(final DesperateFarmer card) {
|
private DesperateFarmer(final DesperateFarmer card) {
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.CanBlockOnlyFlyingAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||||
import mage.abilities.effects.common.MillCardsControllerEffect;
|
import mage.abilities.effects.common.MillCardsControllerEffect;
|
||||||
import mage.abilities.effects.common.TapTargetEffect;
|
import mage.abilities.effects.common.TapTargetEffect;
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
import mage.abilities.keyword.DisturbAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SetTargetPointer;
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
|
@ -21,19 +22,19 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class DevotedGrafkeeper extends CardImpl {
|
public final class DevotedGrafkeeper extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DevotedGrafkeeper(UUID ownerId, CardSetInfo setInfo) {
|
public DevotedGrafkeeper(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}");
|
super(ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.PEASANT}, "{W}{U}",
|
||||||
|
"Departed Soulkeeper",
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT}, "WU");
|
||||||
|
|
||||||
this.subtype.add(SubType.HUMAN);
|
// Devoted Grafkeeper
|
||||||
this.subtype.add(SubType.PEASANT);
|
this.getLeftHalfCard().setPT(2, 1);
|
||||||
this.power = new MageInt(2);
|
|
||||||
this.toughness = new MageInt(1);
|
|
||||||
this.secondSideCardClazz = mage.cards.d.DepartedSoulkeeper.class;
|
|
||||||
|
|
||||||
// When Devoted Grafkeeper enters the battlefield, mill two cards.
|
// When Devoted Grafkeeper enters the battlefield, mill two cards.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(2)));
|
this.getLeftHalfCard().addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(2)));
|
||||||
|
|
||||||
// Whenever you cast a spell from your graveyard, tap target creature you don't control.
|
// Whenever you cast a spell from your graveyard, tap target creature you don't control.
|
||||||
Ability ability = new SpellCastControllerTriggeredAbility(
|
Ability ability = new SpellCastControllerTriggeredAbility(
|
||||||
|
|
@ -41,10 +42,22 @@ public final class DevotedGrafkeeper extends CardImpl {
|
||||||
false, SetTargetPointer.NONE, Zone.GRAVEYARD
|
false, SetTargetPointer.NONE, Zone.GRAVEYARD
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL));
|
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL));
|
||||||
this.addAbility(ability);
|
this.getLeftHalfCard().addAbility(ability);
|
||||||
|
|
||||||
// Disturb {1}{W}{U}
|
// Disturb {1}{W}{U}
|
||||||
this.addAbility(new DisturbAbility(this, "{1}{W}{U}"));
|
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{1}{W}{U}"));
|
||||||
|
|
||||||
|
// Departed Soulkeeper
|
||||||
|
this.getRightHalfCard().setPT(3, 1);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
|
// Departed Soulkeeper can block only creatures with flying.
|
||||||
|
this.getRightHalfCard().addAbility(new CanBlockOnlyFlyingAbility());
|
||||||
|
|
||||||
|
// If Departed Soulkeeper would be put into a graveyard from anywhere, exile it instead.
|
||||||
|
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DevotedGrafkeeper(final DevotedGrafkeeper card) {
|
private DevotedGrafkeeper(final DevotedGrafkeeper card) {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
|
@ -14,10 +13,10 @@ import mage.abilities.effects.common.ExileAndReturnSourceEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
|
import mage.counters.CounterType;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.game.permanent.token.WaylayToken;
|
import mage.game.permanent.token.WaylayToken;
|
||||||
|
|
||||||
|
|
@ -26,20 +25,18 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class DionBahamutsDominant extends CardImpl {
|
public final class DionBahamutsDominant extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterPermanent(SubType.KNIGHT, "");
|
private static final FilterPermanent filter = new FilterPermanent(SubType.KNIGHT, "");
|
||||||
|
|
||||||
public DionBahamutsDominant(UUID ownerId, CardSetInfo setInfo) {
|
public DionBahamutsDominant(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
super(ownerId, setInfo,
|
||||||
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.NOBLE, SubType.KNIGHT}, "{3}{W}",
|
||||||
|
"Bahamut, Warden of Light",
|
||||||
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, new SubType[]{SubType.SAGA, SubType.DRAGON}, "W");
|
||||||
|
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
// Dion, Bahamut's Dominant
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.getLeftHalfCard().setPT(3, 3);
|
||||||
this.subtype.add(SubType.NOBLE);
|
|
||||||
this.subtype.add(SubType.KNIGHT);
|
|
||||||
this.power = new MageInt(3);
|
|
||||||
this.toughness = new MageInt(3);
|
|
||||||
this.secondSideCardClazz = mage.cards.b.BahamutWardenOfLight.class;
|
|
||||||
|
|
||||||
// Dragonfire Dive -- During your turn, Dion and other Knights you control have flying.
|
// Dragonfire Dive -- During your turn, Dion and other Knights you control have flying.
|
||||||
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
|
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||||
|
|
@ -50,18 +47,47 @@ public final class DionBahamutsDominant extends CardImpl {
|
||||||
new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, filter),
|
new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, filter),
|
||||||
MyTurnCondition.instance, "and other Knights you control have flying"
|
MyTurnCondition.instance, "and other Knights you control have flying"
|
||||||
));
|
));
|
||||||
this.addAbility(ability.withFlavorWord("Dragonfire Dive"));
|
this.getLeftHalfCard().addAbility(ability.withFlavorWord("Dragonfire Dive"));
|
||||||
|
|
||||||
// When Dion enters, create a 2/2 white Knight creature token.
|
// When Dion enters, create a 2/2 white Knight creature token.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WaylayToken())));
|
this.getLeftHalfCard().addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WaylayToken())));
|
||||||
|
|
||||||
// {4}{W}{W}, {T}: Exile Dion, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery.
|
// {4}{W}{W}, {T}: Exile Dion, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery.
|
||||||
this.addAbility(new TransformAbility());
|
Ability ability2 = new ActivateAsSorceryActivatedAbility(
|
||||||
ability = new ActivateAsSorceryActivatedAbility(
|
|
||||||
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED), new ManaCostsImpl<>("{4}{W}{W}")
|
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED), new ManaCostsImpl<>("{4}{W}{W}")
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability2.addCost(new TapSourceCost());
|
||||||
this.addAbility(ability);
|
this.getLeftHalfCard().addAbility(ability2);
|
||||||
|
|
||||||
|
// Bahamut, Warden of Light
|
||||||
|
this.getRightHalfCard().setPT(5, 5);
|
||||||
|
|
||||||
|
// (As this Saga enters and after your draw step, add a lore counter.)
|
||||||
|
mage.abilities.common.SagaAbility sagaAbility = new mage.abilities.common.SagaAbility(this.getRightHalfCard());
|
||||||
|
|
||||||
|
// I, II -- Wings of Light -- Put a +1/+1 counter on each other creature you control. Those creatures gain flying until end of turn.
|
||||||
|
sagaAbility.addChapterEffect(this.getRightHalfCard(), SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II, ability3 -> {
|
||||||
|
ability3.addEffect(new mage.abilities.effects.common.counter.AddCountersAllEffect(
|
||||||
|
CounterType.P1P1.createInstance(), mage.filter.StaticFilters.FILTER_OTHER_CONTROLLED_CREATURE
|
||||||
|
));
|
||||||
|
ability3.addEffect(new mage.abilities.effects.common.continuous.GainAbilityControlledEffect(
|
||||||
|
FlyingAbility.getInstance(), Duration.EndOfTurn,
|
||||||
|
mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE
|
||||||
|
).setText("Those creatures gain flying until end of turn"));
|
||||||
|
ability3.withFlavorWord("Wings of Light");
|
||||||
|
});
|
||||||
|
|
||||||
|
// III -- Gigaflare -- Destroy target permanent. Exile Bahamut, then return it to the battlefield.
|
||||||
|
sagaAbility.addChapterEffect(this.getRightHalfCard(), SagaChapter.CHAPTER_III, ability4 -> {
|
||||||
|
ability4.addEffect(new mage.abilities.effects.common.DestroyTargetEffect());
|
||||||
|
ability4.addEffect(new mage.abilities.effects.common.ExileSourceAndReturnFaceUpEffect());
|
||||||
|
ability4.addTarget(new mage.target.TargetPermanent());
|
||||||
|
ability4.withFlavorWord("Gigaflare");
|
||||||
|
});
|
||||||
|
this.getRightHalfCard().addAbility(sagaAbility);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DionBahamutsDominant(final DionBahamutsDominant card) {
|
private DionBahamutsDominant(final DionBahamutsDominant card) {
|
||||||
|
|
|
||||||
|
|
@ -1,170 +0,0 @@
|
||||||
package mage.cards.d;
|
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
|
||||||
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
|
|
||||||
import mage.abilities.costs.Cost;
|
|
||||||
import mage.abilities.costs.SacrificeCost;
|
|
||||||
import mage.abilities.costs.UseAttachedCost;
|
|
||||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
|
||||||
import mage.abilities.effects.ContinuousEffectImpl;
|
|
||||||
import mage.abilities.effects.common.DamageWithPowerFromSourceToAnotherTargetEffect;
|
|
||||||
import mage.abilities.effects.common.DoWhenCostPaid;
|
|
||||||
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
|
||||||
import mage.abilities.keyword.EquipAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.*;
|
|
||||||
import mage.filter.common.FilterControlledArtifactPermanent;
|
|
||||||
import mage.filter.predicate.Predicates;
|
|
||||||
import mage.filter.predicate.mageobject.MageObjectReferencePredicate;
|
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.permanent.Permanent;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
|
||||||
import mage.target.targetpointer.FixedTarget;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Susucr
|
|
||||||
*/
|
|
||||||
public final class DireBlunderbuss extends CardImpl {
|
|
||||||
|
|
||||||
public DireBlunderbuss(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "");
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
this.subtype.add(SubType.EQUIPMENT);
|
|
||||||
this.color.setRed(true);
|
|
||||||
|
|
||||||
// Equipped creature gets +3/+0 and has "Whenever this creature attacks, you may sacrifice an artifact other than Dire Blunderbuss. When you do, this creature deals damage equal to its power to target creature"
|
|
||||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(3, 0));
|
|
||||||
ability.addEffect(new DireBlunderbussGainAbilityEffect());
|
|
||||||
this.addAbility(ability);
|
|
||||||
|
|
||||||
// Equip {1}
|
|
||||||
this.addAbility(new EquipAbility(1, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
private DireBlunderbuss(final DireBlunderbuss card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DireBlunderbuss copy() {
|
|
||||||
return new DireBlunderbuss(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DireBlunderbussGainAbilityEffect extends ContinuousEffectImpl {
|
|
||||||
|
|
||||||
DireBlunderbussGainAbilityEffect() {
|
|
||||||
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
|
|
||||||
staticText = "and has \"Whenever this creature attacks, you may sacrifice an artifact other than {this}. "
|
|
||||||
+ "When you do, this creature deals damage equal to its power to target creature.\"";
|
|
||||||
}
|
|
||||||
|
|
||||||
protected DireBlunderbussGainAbilityEffect(final DireBlunderbussGainAbilityEffect effect) {
|
|
||||||
super(effect);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DireBlunderbussGainAbilityEffect copy() {
|
|
||||||
return new DireBlunderbussGainAbilityEffect(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init(Ability source, Game game) {
|
|
||||||
super.init(source, game);
|
|
||||||
if (getAffectedObjectsSet()) {
|
|
||||||
Permanent equipment = game.getPermanentOrLKIBattlefield(source.getSourceId());
|
|
||||||
if (equipment != null && equipment.getAttachedTo() != null) {
|
|
||||||
this.setTargetPointer(new FixedTarget(equipment.getAttachedTo(), game.getState().getZoneChangeCounter(equipment.getAttachedTo())));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean apply(Game game, Ability source) {
|
|
||||||
Permanent permanent = null;
|
|
||||||
if (getAffectedObjectsSet()) {
|
|
||||||
permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
|
|
||||||
if (permanent == null) {
|
|
||||||
discard();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Permanent equipment = game.getPermanent(source.getSourceId());
|
|
||||||
if (equipment != null && equipment.getAttachedTo() != null) {
|
|
||||||
permanent = game.getPermanentOrLKIBattlefield(equipment.getAttachedTo());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (permanent == null) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
Ability ability = makeAbility(game, source);
|
|
||||||
ability.getEffects().setValue("attachedPermanent", game.getPermanent(source.getSourceId()));
|
|
||||||
permanent.addAbility(ability, source.getSourceId(), game);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Ability makeAbility(Game game, Ability source) {
|
|
||||||
ReflexiveTriggeredAbility reflexive = new ReflexiveTriggeredAbility(
|
|
||||||
new DamageWithPowerFromSourceToAnotherTargetEffect("this creature"), false
|
|
||||||
);
|
|
||||||
reflexive.addTarget(new TargetCreaturePermanent());
|
|
||||||
return new AttacksTriggeredAbility(
|
|
||||||
new DoWhenCostPaid(
|
|
||||||
reflexive, new DireBlunderbussSacrificeCost(source, game),
|
|
||||||
"Sacrifice an artifact other than the equipment?"
|
|
||||||
), false
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DireBlunderbussSacrificeCost extends UseAttachedCost implements SacrificeCost {
|
|
||||||
|
|
||||||
private final SacrificeTargetCost sacrificeCost;
|
|
||||||
|
|
||||||
DireBlunderbussSacrificeCost(Ability source, Game game) {
|
|
||||||
super();
|
|
||||||
this.setMageObjectReference(source, game);
|
|
||||||
FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent();
|
|
||||||
filter.add(Predicates.not(new MageObjectReferencePredicate(this.mageObjectReference)));
|
|
||||||
this.sacrificeCost = new SacrificeTargetCost(filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
private DireBlunderbussSacrificeCost(final DireBlunderbussSacrificeCost cost) {
|
|
||||||
super(cost);
|
|
||||||
this.sacrificeCost = cost.sacrificeCost.copy();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canPay(Ability ability, Ability source, UUID controllerId, Game game) {
|
|
||||||
return sacrificeCost.canPay(ability, source, controllerId, game);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean pay(Ability ability, Game game, Ability source, UUID controllerId, boolean noMana, Cost costToPay) {
|
|
||||||
if (mageObjectReference == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Permanent permanent = game.getPermanent(source.getSourceId());
|
|
||||||
if (permanent == null) {
|
|
||||||
return paid;
|
|
||||||
}
|
|
||||||
paid = sacrificeCost.pay(ability, game, source, controllerId, noMana, costToPay);
|
|
||||||
return paid;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DireBlunderbussSacrificeCost copy() {
|
|
||||||
return new DireBlunderbussSacrificeCost(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getText() {
|
|
||||||
return "sacrifice an artifact other than " + this.name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +1,59 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
|
||||||
|
import mage.abilities.costs.SacrificeCost;
|
||||||
|
import mage.abilities.costs.UseAttachedCost;
|
||||||
|
import mage.abilities.effects.ContinuousEffectImpl;
|
||||||
|
import mage.abilities.effects.common.DamageWithPowerFromSourceToAnotherTargetEffect;
|
||||||
|
import mage.abilities.effects.common.DoWhenCostPaid;
|
||||||
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
||||||
import mage.abilities.keyword.CraftAbility;
|
import mage.abilities.keyword.CraftAbility;
|
||||||
import mage.abilities.keyword.EquipAbility;
|
import mage.abilities.keyword.EquipAbility;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.SubType;
|
import mage.constants.*;
|
||||||
|
import mage.filter.common.FilterControlledArtifactPermanent;
|
||||||
|
import mage.filter.predicate.Predicates;
|
||||||
|
import mage.filter.predicate.mageobject.MageObjectReferencePredicate;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.permanent.Permanent;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
import mage.target.targetpointer.FixedTarget;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Susucr
|
* @author Susucr
|
||||||
*/
|
*/
|
||||||
public final class DireFlail extends CardImpl {
|
public final class DireFlail extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DireFlail(UUID ownerId, CardSetInfo setInfo) {
|
public DireFlail(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{R}");
|
super(ownerId, setInfo,
|
||||||
this.secondSideCardClazz = mage.cards.d.DireBlunderbuss.class;
|
new CardType[]{CardType.ARTIFACT}, new SubType[]{SubType.EQUIPMENT}, "{R}",
|
||||||
|
"Dire Blunderbuss",
|
||||||
this.subtype.add(SubType.EQUIPMENT);
|
new CardType[]{CardType.ARTIFACT}, new SubType[]{SubType.EQUIPMENT}, "R");
|
||||||
|
|
||||||
|
// Dire Flail
|
||||||
// Equipped creature gets +2/+0.
|
// Equipped creature gets +2/+0.
|
||||||
this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(2, 0)));
|
this.getLeftHalfCard().addAbility(new SimpleStaticAbility(new BoostEquippedEffect(2, 0)));
|
||||||
|
|
||||||
// Equip {1}
|
// Equip {1}
|
||||||
this.addAbility(new EquipAbility(1, false));
|
this.getLeftHalfCard().addAbility(new EquipAbility(1, false));
|
||||||
|
|
||||||
// Craft with artifact {3}{R}{R}
|
// Craft with artifact {3}{R}{R}
|
||||||
this.addAbility(new CraftAbility("{3}{R}{R}"));
|
this.getLeftHalfCard().addAbility(new CraftAbility("{3}{R}{R}"));
|
||||||
|
|
||||||
|
// Dire Blunderbuss
|
||||||
|
|
||||||
|
// Equipped creature gets +3/+0 and has "Whenever this creature attacks, you may sacrifice an artifact other than Dire Blunderbuss. When you do, this creature deals damage equal to its power to target creature"
|
||||||
|
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(3, 0));
|
||||||
|
ability.addEffect(new DireBlunderbussGainAbilityEffect());
|
||||||
|
this.getRightHalfCard().addAbility(ability);
|
||||||
|
|
||||||
|
// Equip {1}
|
||||||
|
this.getRightHalfCard().addAbility(new EquipAbility(1, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DireFlail(final DireFlail card) {
|
private DireFlail(final DireFlail card) {
|
||||||
|
|
@ -41,3 +65,109 @@ public final class DireFlail extends CardImpl {
|
||||||
return new DireFlail(this);
|
return new DireFlail(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class DireBlunderbussGainAbilityEffect extends ContinuousEffectImpl {
|
||||||
|
|
||||||
|
DireBlunderbussGainAbilityEffect() {
|
||||||
|
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
|
||||||
|
staticText = "and has \"Whenever this creature attacks, you may sacrifice an artifact other than {this}. "
|
||||||
|
+ "When you do, this creature deals damage equal to its power to target creature.\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected DireBlunderbussGainAbilityEffect(final DireBlunderbussGainAbilityEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DireBlunderbussGainAbilityEffect copy() {
|
||||||
|
return new DireBlunderbussGainAbilityEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(Ability source, Game game) {
|
||||||
|
super.init(source, game);
|
||||||
|
if (getAffectedObjectsSet()) {
|
||||||
|
Permanent equipment = game.getPermanentOrLKIBattlefield(source.getSourceId());
|
||||||
|
if (equipment != null && equipment.getAttachedTo() != null) {
|
||||||
|
this.setTargetPointer(new FixedTarget(equipment.getAttachedTo(), game.getState().getZoneChangeCounter(equipment.getAttachedTo())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(Game game, Ability source) {
|
||||||
|
Permanent permanent = null;
|
||||||
|
if (getAffectedObjectsSet()) {
|
||||||
|
permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
|
||||||
|
if (permanent == null) {
|
||||||
|
discard();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Permanent equipment = game.getPermanent(source.getSourceId());
|
||||||
|
if (equipment != null && equipment.getAttachedTo() != null) {
|
||||||
|
permanent = game.getPermanentOrLKIBattlefield(equipment.getAttachedTo());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (permanent == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
ReflexiveTriggeredAbility reflexive = new ReflexiveTriggeredAbility(
|
||||||
|
new DamageWithPowerFromSourceToAnotherTargetEffect("this creature"), false
|
||||||
|
);
|
||||||
|
reflexive.addTarget(new TargetCreaturePermanent());
|
||||||
|
Ability grant = new mage.abilities.common.AttacksTriggeredAbility(
|
||||||
|
new DoWhenCostPaid(
|
||||||
|
reflexive, new DireBlunderbussSacrificeCost(source, game),
|
||||||
|
"Sacrifice an artifact other than the equipment?"
|
||||||
|
), false
|
||||||
|
);
|
||||||
|
permanent.addAbility(grant, source.getSourceId(), game);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DireBlunderbussSacrificeCost extends UseAttachedCost implements SacrificeCost {
|
||||||
|
|
||||||
|
private final mage.abilities.costs.common.SacrificeTargetCost sacrificeCost;
|
||||||
|
private final mage.MageObjectReference mageObjectReference;
|
||||||
|
|
||||||
|
DireBlunderbussSacrificeCost(Ability source, Game game) {
|
||||||
|
super();
|
||||||
|
this.mageObjectReference = new mage.MageObjectReference(source.getSourceObject(game), game);
|
||||||
|
FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent();
|
||||||
|
filter.add(Predicates.not(new MageObjectReferencePredicate(this.mageObjectReference)));
|
||||||
|
this.sacrificeCost = new mage.abilities.costs.common.SacrificeTargetCost(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
private DireBlunderbussSacrificeCost(final DireBlunderbussSacrificeCost cost) {
|
||||||
|
super(cost);
|
||||||
|
this.sacrificeCost = cost.sacrificeCost.copy();
|
||||||
|
this.mageObjectReference = cost.mageObjectReference;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPay(Ability ability, Ability source, UUID controllerId, Game game) {
|
||||||
|
return sacrificeCost.canPay(ability, source, controllerId, game);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean pay(Ability ability, Game game, Ability source, UUID controllerId, boolean noMana, mage.abilities.costs.Cost costToPay) {
|
||||||
|
Permanent equipment = game.getPermanent(source.getSourceId());
|
||||||
|
if (equipment == null) {
|
||||||
|
return paid;
|
||||||
|
}
|
||||||
|
paid = sacrificeCost.pay(ability, game, source, controllerId, noMana, costToPay);
|
||||||
|
return paid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DireBlunderbussSacrificeCost copy() {
|
||||||
|
return new DireBlunderbussSacrificeCost(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getText() {
|
||||||
|
return "sacrifice an artifact other than " + this.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,49 +1,67 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
import mage.abilities.common.AttacksTriggeredAbility;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
|
||||||
import mage.abilities.effects.common.TapTargetEffect;
|
import mage.abilities.effects.common.TapTargetEffect;
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
import mage.abilities.keyword.DisturbAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
|
import mage.constants.AttachmentType;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Outcome;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate;
|
import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class DistractingGeist extends CardImpl {
|
public final class DistractingGeist extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
private static final FilterPermanent filter
|
private static final FilterPermanent filter = new FilterCreaturePermanent("creature defending player controls");
|
||||||
= new FilterCreaturePermanent("creature defending player controls");
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(DefendingPlayerControlsSourceAttackingPredicate.instance);
|
filter.add(DefendingPlayerControlsSourceAttackingPredicate.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DistractingGeist(UUID ownerId, CardSetInfo setInfo) {
|
public DistractingGeist(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
super(ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT}, "{2}{W}",
|
||||||
|
"Clever Distraction",
|
||||||
|
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.AURA}, "W");
|
||||||
|
|
||||||
this.subtype.add(SubType.SPIRIT);
|
// Distracting Geist
|
||||||
this.power = new MageInt(2);
|
this.getLeftHalfCard().setPT(2, 1);
|
||||||
this.toughness = new MageInt(1);
|
|
||||||
this.secondSideCardClazz = mage.cards.c.CleverDistraction.class;
|
|
||||||
|
|
||||||
// Whenever Distracting Geist attacks, tap target creature defending player controls.
|
// Whenever Distracting Geist attacks, tap target creature defending player controls.
|
||||||
Ability ability = new AttacksTriggeredAbility(new TapTargetEffect());
|
Ability ability = new AttacksTriggeredAbility(new TapTargetEffect());
|
||||||
ability.addTarget(new TargetPermanent(filter));
|
ability.addTarget(new TargetPermanent(filter));
|
||||||
this.addAbility(ability);
|
this.getLeftHalfCard().addAbility(ability);
|
||||||
|
|
||||||
// Disturb {4}{W}
|
// Disturb {4}{W}
|
||||||
this.addAbility(new DisturbAbility(this, "{4}{W}"));
|
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{4}{W}"));
|
||||||
|
|
||||||
|
// Clever Distraction
|
||||||
|
|
||||||
|
// Enchant creature
|
||||||
|
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||||
|
this.getRightHalfCard().getSpellAbility().addTarget(auraTarget);
|
||||||
|
this.getRightHalfCard().getSpellAbility().addEffect(new mage.abilities.effects.common.AttachEffect(Outcome.BoostCreature));
|
||||||
|
this.getRightHalfCard().addAbility(new EnchantAbility(auraTarget));
|
||||||
|
|
||||||
|
// Enchanted creature has "Whenever this creature attacks, tap target creature defending player controls."
|
||||||
|
Ability ability2 = new AttacksTriggeredAbility(new TapTargetEffect()).setTriggerPhrase("Whenever this creature attacks, ");
|
||||||
|
ability2.addTarget(new TargetPermanent(filter));
|
||||||
|
this.getRightHalfCard().addAbility(new mage.abilities.common.SimpleStaticAbility(new mage.abilities.effects.common.continuous.GainAbilityAttachedEffect(ability2, AttachmentType.AURA)));
|
||||||
|
|
||||||
|
// If Clever Distracting would be put into a graveyard from anywhere, exile it instead.
|
||||||
|
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DistractingGeist(final DistractingGeist card) {
|
private DistractingGeist(final DistractingGeist card) {
|
||||||
|
|
|
||||||
|
|
@ -1,47 +1,58 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
|
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.target.common.TargetControlledCreaturePermanent;
|
import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author weirddan455
|
* @author weirddan455
|
||||||
*/
|
*/
|
||||||
public final class DormantGrove extends CardImpl {
|
public final class DormantGrove extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DormantGrove(UUID ownerId, CardSetInfo setInfo) {
|
public DormantGrove(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
|
super(ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{}, "{3}{G}",
|
||||||
this.secondSideCardClazz = mage.cards.g.GnarledGrovestrider.class;
|
"Gnarled Grovestrider",
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.TREEFOLK}, "G");
|
||||||
|
|
||||||
|
// Dormant Grove
|
||||||
// At the beginning of combat on your turn, put a +1/+1 counter on target creature you control.
|
// At the beginning of combat on your turn, put a +1/+1 counter on target creature you control.
|
||||||
// Then if that creature has toughness 6 or greater, transform Dormant Grove.
|
// Then if that creature has toughness 6 or greater, transform Dormant Grove.
|
||||||
this.addAbility(new TransformAbility());
|
Ability ability = new BeginningOfCombatTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()));
|
||||||
|
|
||||||
Ability ability = new BeginningOfCombatTriggeredAbility(
|
|
||||||
new AddCountersTargetEffect(CounterType.P1P1.createInstance())
|
|
||||||
);
|
|
||||||
ability.addEffect(new ConditionalOneShotEffect(
|
ability.addEffect(new ConditionalOneShotEffect(
|
||||||
new TransformSourceEffect(),
|
new TransformSourceEffect(),
|
||||||
DormatGroveCondition.instance,
|
DormatGroveCondition.instance,
|
||||||
"Then if that creature has toughness 6 or greater, transform {this}"
|
"Then if that creature has toughness 6 or greater, transform {this}"
|
||||||
));
|
));
|
||||||
ability.addTarget(new TargetControlledCreaturePermanent());
|
ability.addTarget(new TargetControlledCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.getLeftHalfCard().addAbility(ability);
|
||||||
|
|
||||||
|
// Gnarled Grovestrider
|
||||||
|
this.getRightHalfCard().setPT(3, 6);
|
||||||
|
|
||||||
|
// Vigilance
|
||||||
|
this.getRightHalfCard().addAbility(mage.abilities.keyword.VigilanceAbility.getInstance());
|
||||||
|
|
||||||
|
// Other creatures you control have vigilance.
|
||||||
|
this.getRightHalfCard().addAbility(new mage.abilities.common.SimpleStaticAbility(new mage.abilities.effects.common.continuous.GainAbilityControlledEffect(
|
||||||
|
mage.abilities.keyword.VigilanceAbility.getInstance(), Duration.WhileOnBattlefield,
|
||||||
|
mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES, true
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DormantGrove(final DormantGrove card) {
|
private DormantGrove(final DormantGrove card) {
|
||||||
|
|
|
||||||
|
|
@ -1,45 +1,63 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.AttacksOrBlocksTriggeredAbility;
|
import mage.abilities.common.AttacksOrBlocksTriggeredAbility;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility;
|
import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||||
import mage.abilities.effects.common.SacrificeSourceEffect;
|
import mage.abilities.effects.common.SacrificeSourceEffect;
|
||||||
|
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
import mage.abilities.keyword.DisturbAbility;
|
||||||
|
import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.SubType;
|
import mage.constants.*;
|
||||||
import mage.constants.SuperType;
|
import mage.target.TargetPermanent;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class DorotheaVengefulVictim extends CardImpl {
|
public final class DorotheaVengefulVictim extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DorotheaVengefulVictim(UUID ownerId, CardSetInfo setInfo) {
|
public DorotheaVengefulVictim(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}");
|
super(ownerId, setInfo,
|
||||||
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT}, "{W}{U}",
|
||||||
|
"Dorothea's Retribution",
|
||||||
|
new SuperType[]{}, new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.AURA}, "WU");
|
||||||
|
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
// Dorothea, Vengeful Victim
|
||||||
this.subtype.add(SubType.SPIRIT);
|
this.getLeftHalfCard().setPT(4, 4);
|
||||||
this.power = new MageInt(4);
|
|
||||||
this.toughness = new MageInt(4);
|
|
||||||
this.secondSideCardClazz = mage.cards.d.DorotheasRetribution.class;
|
|
||||||
|
|
||||||
// Flying
|
// Flying
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.getLeftHalfCard().addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// When Dorothea, Vengeful Victim attacks or blocks, sacrifice it at end of combat.
|
// When Dorothea, Vengeful Victim attacks or blocks, sacrifice it at end of combat.
|
||||||
this.addAbility(new AttacksOrBlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
this.getLeftHalfCard().addAbility(new AttacksOrBlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
||||||
new AtTheEndOfCombatDelayedTriggeredAbility(new SacrificeSourceEffect())
|
new AtTheEndOfCombatDelayedTriggeredAbility(new SacrificeSourceEffect())
|
||||||
).setText("sacrifice it at end of combat"), false));
|
).setText("sacrifice it at end of combat"), false));
|
||||||
|
|
||||||
// Disturb {1}{W}{U}
|
// Disturb {1}{W}{U}
|
||||||
this.addAbility(new DisturbAbility(this, "{1}{W}{U}"));
|
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{1}{W}{U}"));
|
||||||
|
|
||||||
|
// Dorothea's Retribution
|
||||||
|
// Enchant creature
|
||||||
|
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||||
|
this.getRightHalfCard().getSpellAbility().addTarget(auraTarget);
|
||||||
|
this.getRightHalfCard().getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||||
|
this.getRightHalfCard().addAbility(new EnchantAbility(auraTarget));
|
||||||
|
|
||||||
|
// Enchanted creature has "Whenever this creature attacks, create a 4/4 white Spirit creature token with flying that's tapped and attacking. Sacrifice that token at end of combat."
|
||||||
|
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(
|
||||||
|
new mage.abilities.common.AttacksTriggeredAbility(new DorotheasRetributionEffect()).setTriggerPhrase("Whenever this creature attacks, "),
|
||||||
|
AttachmentType.AURA
|
||||||
|
)));
|
||||||
|
|
||||||
|
// If Dorothea's Retribution would be put into a graveyard from anywhere, exile it instead.
|
||||||
|
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DorotheaVengefulVictim(final DorotheaVengefulVictim card) {
|
private DorotheaVengefulVictim(final DorotheaVengefulVictim card) {
|
||||||
|
|
@ -51,3 +69,32 @@ public final class DorotheaVengefulVictim extends CardImpl {
|
||||||
return new DorotheaVengefulVictim(this);
|
return new DorotheaVengefulVictim(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class DorotheasRetributionEffect extends mage.abilities.effects.OneShotEffect {
|
||||||
|
|
||||||
|
DorotheasRetributionEffect() {
|
||||||
|
super(Outcome.Benefit);
|
||||||
|
staticText = "create a 4/4 white Spirit creature token with flying that's tapped and attacking. Sacrifice that token at end of combat";
|
||||||
|
}
|
||||||
|
|
||||||
|
private DorotheasRetributionEffect(final DorotheasRetributionEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DorotheasRetributionEffect copy() {
|
||||||
|
return new DorotheasRetributionEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(mage.game.Game game, mage.abilities.Ability source) {
|
||||||
|
mage.game.permanent.token.Token token = new mage.game.permanent.token.DorotheasRetributionSpiritToken();
|
||||||
|
token.putOntoBattlefield(1, game, source, source.getControllerId(), true, true);
|
||||||
|
game.addDelayedTriggeredAbility(new AtTheEndOfCombatDelayedTriggeredAbility(
|
||||||
|
new mage.abilities.effects.common.SacrificeTargetEffect()
|
||||||
|
.setTargetPointer(new mage.target.targetpointer.FixedTargets(token, game))
|
||||||
|
.setText("sacrifice that token")
|
||||||
|
), source);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,96 +0,0 @@
|
||||||
package mage.cards.d;
|
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
|
||||||
import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility;
|
|
||||||
import mage.abilities.effects.OneShotEffect;
|
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
|
||||||
import mage.abilities.effects.common.SacrificeTargetEffect;
|
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
|
||||||
import mage.abilities.keyword.EnchantAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.AttachmentType;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.Outcome;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.permanent.token.DorotheasRetributionSpiritToken;
|
|
||||||
import mage.game.permanent.token.Token;
|
|
||||||
import mage.target.TargetPermanent;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
|
||||||
import mage.target.targetpointer.FixedTargets;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author TheElk801
|
|
||||||
*/
|
|
||||||
public final class DorotheasRetribution extends CardImpl {
|
|
||||||
|
|
||||||
public DorotheasRetribution(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "");
|
|
||||||
|
|
||||||
this.subtype.add(SubType.AURA);
|
|
||||||
this.color.setWhite(true);
|
|
||||||
this.color.setBlue(true);
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// Enchant creature
|
|
||||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
|
||||||
this.getSpellAbility().addTarget(auraTarget);
|
|
||||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
|
||||||
this.addAbility(new EnchantAbility(auraTarget));
|
|
||||||
|
|
||||||
// Enchanted creature has "Whenever this creature attacks, create a 4/4 white Spirit creature token with flying that's tapped and attacking. Sacrifice that token at end of combat."
|
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(
|
|
||||||
new AttacksTriggeredAbility(new DorotheasRetributionEffect())
|
|
||||||
.setTriggerPhrase("Whenever this creature attacks, "),
|
|
||||||
AttachmentType.AURA
|
|
||||||
)));
|
|
||||||
|
|
||||||
// If Dorothea's Retribution would be put into a graveyard from anywhere, exile it instead.
|
|
||||||
this.addAbility(DisturbAbility.makeBackAbility());
|
|
||||||
}
|
|
||||||
|
|
||||||
private DorotheasRetribution(final DorotheasRetribution card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DorotheasRetribution copy() {
|
|
||||||
return new DorotheasRetribution(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class DorotheasRetributionEffect extends OneShotEffect {
|
|
||||||
|
|
||||||
DorotheasRetributionEffect() {
|
|
||||||
super(Outcome.Benefit);
|
|
||||||
staticText = "create a 4/4 white Spirit creature token with flying " +
|
|
||||||
"that's tapped and attacking. Sacrifice that token at end of combat";
|
|
||||||
}
|
|
||||||
|
|
||||||
private DorotheasRetributionEffect(final DorotheasRetributionEffect effect) {
|
|
||||||
super(effect);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DorotheasRetributionEffect copy() {
|
|
||||||
return new DorotheasRetributionEffect(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean apply(Game game, Ability source) {
|
|
||||||
Token token = new DorotheasRetributionSpiritToken();
|
|
||||||
token.putOntoBattlefield(1, game, source, source.getControllerId(), true, true);
|
|
||||||
game.addDelayedTriggeredAbility(new AtTheEndOfCombatDelayedTriggeredAbility(
|
|
||||||
new SacrificeTargetEffect()
|
|
||||||
.setTargetPointer(new FixedTargets(token, game))
|
|
||||||
.setText("sacrifice that token")
|
|
||||||
), source);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +1,14 @@
|
||||||
|
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
|
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
|
||||||
import mage.abilities.effects.common.CreateTokenTargetEffect;
|
import mage.abilities.effects.common.CreateTokenTargetEffect;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
||||||
import mage.abilities.keyword.EquipAbility;
|
import mage.abilities.keyword.EquipAbility;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
|
@ -24,29 +20,32 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class DowsingDagger extends CardImpl {
|
public final class DowsingDagger extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DowsingDagger(UUID ownerId, CardSetInfo setInfo) {
|
public DowsingDagger(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
super(ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.ARTIFACT}, new SubType[]{SubType.EQUIPMENT}, "{2}",
|
||||||
this.subtype.add(SubType.EQUIPMENT);
|
"Lost Vale",
|
||||||
|
new CardType[]{CardType.LAND}, new SubType[]{}, "");
|
||||||
this.secondSideCardClazz = mage.cards.l.LostVale.class;
|
|
||||||
|
|
||||||
|
// Dowsing Dagger
|
||||||
// When Dowsing Dagger enters the battlefield, target opponent creates two 0/2 green Plant creature tokens with defender.
|
// When Dowsing Dagger enters the battlefield, target opponent creates two 0/2 green Plant creature tokens with defender.
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenTargetEffect(new DefenderPlantToken(), 2), false);
|
Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenTargetEffect(new DefenderPlantToken(), 2), false);
|
||||||
ability.addTarget(new TargetOpponent());
|
ability.addTarget(new TargetOpponent());
|
||||||
this.addAbility(ability);
|
this.getLeftHalfCard().addAbility(ability);
|
||||||
|
|
||||||
// Equipped creature gets +2/+1.
|
// Equipped creature gets +2/+1.
|
||||||
this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(2, 1)));
|
this.getLeftHalfCard().addAbility(new mage.abilities.common.SimpleStaticAbility(new BoostEquippedEffect(2, 1)));
|
||||||
|
|
||||||
// Whenever equipped creature deals combat damage to a player, you may transform Dowsing Dagger.
|
// Whenever equipped creature deals combat damage to a player, you may transform Dowsing Dagger.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new DealsDamageToAPlayerAttachedTriggeredAbility(new TransformSourceEffect(), "equipped", true));
|
||||||
this.addAbility(new DealsDamageToAPlayerAttachedTriggeredAbility(new TransformSourceEffect(), "equipped", true));
|
|
||||||
|
|
||||||
// Equip 2
|
// Equip 2
|
||||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2), false));
|
this.getLeftHalfCard().addAbility(new EquipAbility(Outcome.AddAbility, new mage.abilities.costs.mana.GenericManaCost(2), false));
|
||||||
|
|
||||||
|
// Lost Vale
|
||||||
|
// T: Add three mana of any one color.
|
||||||
|
this.getRightHalfCard().addAbility(new mage.abilities.mana.SimpleManaAbility(new mage.abilities.effects.mana.AddManaOfAnyColorEffect(3), new mage.abilities.costs.common.TapSourceCost()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DowsingDagger(final DowsingDagger card) {
|
private DowsingDagger(final DowsingDagger card) {
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,11 @@ import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||||
import mage.abilities.hint.common.ArtifactYouControlHint;
|
import mage.abilities.hint.common.ArtifactYouControlHint;
|
||||||
import mage.abilities.keyword.HasteAbility;
|
import mage.abilities.keyword.HasteAbility;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetControlledCreaturePermanent;
|
import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
|
|
||||||
|
|
@ -23,18 +23,20 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class DowsingDevice extends CardImpl {
|
public final class DowsingDevice extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||||
StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, ComparisonType.MORE_THAN, 3
|
StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, ComparisonType.MORE_THAN, 3
|
||||||
);
|
);
|
||||||
|
|
||||||
public DowsingDevice(UUID ownerId, CardSetInfo setInfo) {
|
public DowsingDevice(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{R}");
|
super(ownerId, setInfo,
|
||||||
this.secondSideCardClazz = mage.cards.g.GeodeGrotto.class;
|
new CardType[]{CardType.ARTIFACT}, new SubType[]{}, "{1}{R}",
|
||||||
|
"Geode Grotto",
|
||||||
|
new CardType[]{CardType.LAND}, new SubType[]{SubType.CAVE}, "");
|
||||||
|
|
||||||
|
// Dowsing Device
|
||||||
// Whenever Dowsing Device or another artifact you control enters, up to one target creature you control gets +1/+0 and gains haste until end of turn. Then transform Dowsing Device if you control four or more artifacts.
|
// Whenever Dowsing Device or another artifact you control enters, up to one target creature you control gets +1/+0 and gains haste until end of turn. Then transform Dowsing Device if you control four or more artifacts.
|
||||||
this.addAbility(new TransformAbility());
|
|
||||||
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(
|
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(
|
||||||
new BoostTargetEffect(1, 0)
|
new BoostTargetEffect(1, 0)
|
||||||
.setText("up to one target creature you control gets +1/+0"),
|
.setText("up to one target creature you control gets +1/+0"),
|
||||||
|
|
@ -43,11 +45,24 @@ public final class DowsingDevice extends CardImpl {
|
||||||
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance())
|
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance())
|
||||||
.setText("and gains haste until end of turn"));
|
.setText("and gains haste until end of turn"));
|
||||||
ability.addEffect(new ConditionalOneShotEffect(
|
ability.addEffect(new ConditionalOneShotEffect(
|
||||||
new TransformSourceEffect(), condition, "Then " +
|
new TransformSourceEffect(), condition, "Then transform {this} if you control four or more artifacts"
|
||||||
"transform {this} if you control four or more artifacts"
|
|
||||||
));
|
));
|
||||||
ability.addTarget(new TargetControlledCreaturePermanent(0, 1));
|
ability.addTarget(new TargetControlledCreaturePermanent(0, 1));
|
||||||
this.addAbility(ability.addHint(ArtifactYouControlHint.instance));
|
this.getLeftHalfCard().addAbility(ability.addHint(ArtifactYouControlHint.instance));
|
||||||
|
|
||||||
|
// Geode Grotto
|
||||||
|
// {T}: Add {R}.
|
||||||
|
this.getRightHalfCard().addAbility(new mage.abilities.mana.RedManaAbility());
|
||||||
|
|
||||||
|
// {2}{R}, {T}: Until end of turn, target creature gains haste and gets +X/+0, where X is the number of artifacts you control. Activate only as a sorcery.
|
||||||
|
Ability ability2 = new mage.abilities.common.ActivateAsSorceryActivatedAbility(new GainAbilityTargetEffect(HasteAbility.getInstance())
|
||||||
|
.setText("Until end of turn, target creature gains haste"), new mage.abilities.costs.mana.ManaCostsImpl<>("{2}{R}"));
|
||||||
|
ability2.addCost(new mage.abilities.costs.common.TapSourceCost());
|
||||||
|
ability2.addEffect(new mage.abilities.effects.common.continuous.BoostTargetEffect(
|
||||||
|
mage.abilities.dynamicvalue.common.ArtifactYouControlCount.instance, mage.abilities.dynamicvalue.common.StaticValue.get(0)
|
||||||
|
).setText("and gets +X/+0, where X is the number of artifacts you control"));
|
||||||
|
ability2.addTarget(new mage.target.common.TargetCreaturePermanent());
|
||||||
|
this.getRightHalfCard().addAbility(ability2.addHint(ArtifactYouControlHint.instance));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DowsingDevice(final DowsingDevice card) {
|
private DowsingDevice(final DowsingDevice card) {
|
||||||
|
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
package mage.cards.d;
|
|
||||||
|
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
|
||||||
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
|
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
|
||||||
import mage.abilities.keyword.EnchantAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.Outcome;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.target.TargetPermanent;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author TheElk801
|
|
||||||
*/
|
|
||||||
public final class DrogskolArmaments extends CardImpl {
|
|
||||||
|
|
||||||
public DrogskolArmaments(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "");
|
|
||||||
|
|
||||||
this.subtype.add(SubType.AURA);
|
|
||||||
this.color.setWhite(true);
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// Enchant creature
|
|
||||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
|
||||||
this.getSpellAbility().addTarget(auraTarget);
|
|
||||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
|
||||||
this.addAbility(new EnchantAbility(auraTarget));
|
|
||||||
|
|
||||||
// Enchanted creature gets +2/+2.
|
|
||||||
this.addAbility(new SimpleStaticAbility(new BoostEnchantedEffect(2, 2)));
|
|
||||||
|
|
||||||
// If Drogskol Armaments would be put into a graveyard from anywhere, exile it instead.
|
|
||||||
this.addAbility(DisturbAbility.makeBackAbility());
|
|
||||||
}
|
|
||||||
|
|
||||||
private DrogskolArmaments(final DrogskolArmaments card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DrogskolArmaments copy() {
|
|
||||||
return new DrogskolArmaments(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,31 +1,52 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
|
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
import mage.abilities.keyword.DisturbAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Outcome;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
import mage.target.TargetPermanent;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class DrogskolInfantry extends CardImpl {
|
public final class DrogskolInfantry extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DrogskolInfantry(UUID ownerId, CardSetInfo setInfo) {
|
public DrogskolInfantry(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
super(ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT, SubType.SOLDIER}, "{1}{W}",
|
||||||
|
"Drogskol Armaments",
|
||||||
|
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.AURA}, "W");
|
||||||
|
|
||||||
this.subtype.add(SubType.SPIRIT);
|
// Drogskol Infantry
|
||||||
this.subtype.add(SubType.SOLDIER);
|
this.getLeftHalfCard().setPT(2, 2);
|
||||||
this.power = new MageInt(2);
|
|
||||||
this.toughness = new MageInt(2);
|
|
||||||
this.secondSideCardClazz = mage.cards.d.DrogskolArmaments.class;
|
// Drogskol Armaments
|
||||||
|
|
||||||
|
// Enchant creature
|
||||||
|
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||||
|
this.getRightHalfCard().getSpellAbility().addTarget(auraTarget);
|
||||||
|
this.getRightHalfCard().getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||||
|
this.getRightHalfCard().addAbility(new EnchantAbility(auraTarget));
|
||||||
|
|
||||||
// Disturb {3}{W}
|
// Disturb {3}{W}
|
||||||
this.addAbility(new DisturbAbility(this, "{3}{W}"));
|
// needs to be added after enchant ability to set correct target
|
||||||
|
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{3}{W}"));
|
||||||
|
|
||||||
|
// Enchanted creature gets +2/+2.
|
||||||
|
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new BoostEnchantedEffect(2, 2)));
|
||||||
|
|
||||||
|
// If Drogskol Armaments would be put into a graveyard from anywhere, exile it instead.
|
||||||
|
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DrogskolInfantry(final DrogskolInfantry card) {
|
private DrogskolInfantry(final DrogskolInfantry card) {
|
||||||
|
|
|
||||||
|
|
@ -1,45 +1,54 @@
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
import mage.abilities.Ability;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||||
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.PutCards;
|
import mage.constants.PutCards;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class DuskwatchRecruiter extends CardImpl {
|
public final class DuskwatchRecruiter extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public DuskwatchRecruiter(UUID ownerId, CardSetInfo setInfo) {
|
public DuskwatchRecruiter(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
|
super(ownerId, setInfo,
|
||||||
this.subtype.add(SubType.HUMAN);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WARRIOR, SubType.WEREWOLF}, "{1}{G}",
|
||||||
this.subtype.add(SubType.WARRIOR);
|
"Krallenhorde Howler",
|
||||||
this.subtype.add(SubType.WEREWOLF);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "G");
|
||||||
|
|
||||||
this.secondSideCardClazz = mage.cards.k.KrallenhordeHowler.class;
|
// Duskwatch Recruiter
|
||||||
|
this.getLeftHalfCard().setPT(2, 2);
|
||||||
|
|
||||||
this.power = new MageInt(2);
|
// {2}{G}: Look at the top three cards of your library. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order.
|
||||||
this.toughness = new MageInt(2);
|
Ability ability = new SimpleActivatedAbility(
|
||||||
|
|
||||||
// {2}{G}: Look at the top three cards of your library. You may reveal a creature card from among them and put it into your hand.
|
|
||||||
// Put the rest on the bottom of your library in any order.
|
|
||||||
this.addAbility(new SimpleActivatedAbility(
|
|
||||||
new LookLibraryAndPickControllerEffect(3, 1, StaticFilters.FILTER_CARD_CREATURE_A, PutCards.HAND, PutCards.BOTTOM_ANY),
|
new LookLibraryAndPickControllerEffect(3, 1, StaticFilters.FILTER_CARD_CREATURE_A, PutCards.HAND, PutCards.BOTTOM_ANY),
|
||||||
new ManaCostsImpl<>("{2}{G}")));
|
new ManaCostsImpl<>("{2}{G}")
|
||||||
|
);
|
||||||
|
this.getLeftHalfCard().addAbility(ability);
|
||||||
|
|
||||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Duskwatch Recruiter.
|
// At the beginning of each upkeep, if no spells were cast last turn, transform Duskwatch Recruiter.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||||
this.addAbility(new WerewolfFrontTriggeredAbility());
|
|
||||||
|
// Krallenhorde Howler
|
||||||
|
this.getRightHalfCard().setPT(3, 3);
|
||||||
|
|
||||||
|
// Creature spells you cast cost {1} less to cast.
|
||||||
|
this.getRightHalfCard().addAbility(new mage.abilities.common.SimpleStaticAbility(
|
||||||
|
new mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect(new mage.filter.common.FilterCreatureCard("creature spells"), 1)
|
||||||
|
));
|
||||||
|
|
||||||
|
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Howler.
|
||||||
|
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DuskwatchRecruiter(final DuskwatchRecruiter card) {
|
private DuskwatchRecruiter(final DuskwatchRecruiter card) {
|
||||||
|
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
package mage.cards.g;
|
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
|
||||||
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
|
|
||||||
import mage.abilities.dynamicvalue.common.StaticValue;
|
|
||||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
|
||||||
import mage.abilities.hint.common.ArtifactYouControlHint;
|
|
||||||
import mage.abilities.keyword.HasteAbility;
|
|
||||||
import mage.abilities.mana.RedManaAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author TheElk801
|
|
||||||
*/
|
|
||||||
public final class GeodeGrotto extends CardImpl {
|
|
||||||
|
|
||||||
public GeodeGrotto(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
|
||||||
|
|
||||||
this.subtype.add(SubType.CAVE);
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// {T}: Add {R}.
|
|
||||||
this.addAbility(new RedManaAbility());
|
|
||||||
|
|
||||||
// {2}{R}, {T}: Until end of turn, target creature gains haste and gets +X/+0, where X is the number of artifacts you control. Activate only as a sorcery.
|
|
||||||
Ability ability = new ActivateAsSorceryActivatedAbility(new GainAbilityTargetEffect(HasteAbility.getInstance())
|
|
||||||
.setText("Until end of turn, target creature gains haste"), new ManaCostsImpl<>("{2}{R}"));
|
|
||||||
ability.addCost(new TapSourceCost());
|
|
||||||
ability.addEffect(new BoostTargetEffect(
|
|
||||||
ArtifactYouControlCount.instance, StaticValue.get(0)
|
|
||||||
).setText("and gets +X/+0, where X is the number of artifacts you control"));
|
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
|
||||||
this.addAbility(ability.addHint(ArtifactYouControlHint.instance));
|
|
||||||
}
|
|
||||||
|
|
||||||
private GeodeGrotto(final GeodeGrotto card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public GeodeGrotto copy() {
|
|
||||||
return new GeodeGrotto(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
package mage.cards.g;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
|
||||||
import mage.abilities.keyword.VigilanceAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.Duration;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.filter.StaticFilters;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author weirddan455
|
|
||||||
*/
|
|
||||||
public class GnarledGrovestrider extends CardImpl {
|
|
||||||
|
|
||||||
public GnarledGrovestrider(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
|
||||||
this.subtype.add(SubType.TREEFOLK);
|
|
||||||
this.color.setGreen(true);
|
|
||||||
|
|
||||||
// Back half of Dormant Grove
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
this.power = new MageInt(3);
|
|
||||||
this.toughness = new MageInt(6);
|
|
||||||
|
|
||||||
this.addAbility(VigilanceAbility.getInstance());
|
|
||||||
|
|
||||||
// Other creatures you control have vigilance.
|
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
|
||||||
VigilanceAbility.getInstance(), Duration.WhileOnBattlefield,
|
|
||||||
StaticFilters.FILTER_PERMANENT_CREATURES, true
|
|
||||||
)));
|
|
||||||
}
|
|
||||||
|
|
||||||
private GnarledGrovestrider(final GnarledGrovestrider card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public GnarledGrovestrider copy() {
|
|
||||||
return new GnarledGrovestrider(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
|
|
||||||
package mage.cards.i;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author Alvin
|
|
||||||
*/
|
|
||||||
public final class InsectileAberration extends CardImpl {
|
|
||||||
|
|
||||||
public InsectileAberration(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
|
|
||||||
this.subtype.add(SubType.HUMAN);
|
|
||||||
this.subtype.add(SubType.INSECT);
|
|
||||||
|
|
||||||
this.color.setBlue(true);
|
|
||||||
|
|
||||||
// this card is the second face of double-faced card Delver of Secrets
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
this.power = new MageInt(3);
|
|
||||||
this.toughness = new MageInt(2);
|
|
||||||
|
|
||||||
// Flying
|
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
|
||||||
}
|
|
||||||
|
|
||||||
private InsectileAberration(final InsectileAberration card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public InsectileAberration copy() {
|
|
||||||
return new InsectileAberration(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
package mage.cards.k;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
|
||||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
|
||||||
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.filter.FilterCard;
|
|
||||||
import mage.filter.common.FilterCreatureCard;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author fireshoes
|
|
||||||
*/
|
|
||||||
public final class KrallenhordeHowler extends CardImpl {
|
|
||||||
|
|
||||||
private static final FilterCard FILTER = new FilterCreatureCard("creature spells");
|
|
||||||
|
|
||||||
public KrallenhordeHowler(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
|
||||||
this.subtype.add(SubType.WEREWOLF);
|
|
||||||
this.power = new MageInt(3);
|
|
||||||
this.toughness = new MageInt(3);
|
|
||||||
this.color.setGreen(true);
|
|
||||||
|
|
||||||
// this card is the second face of double-faced card
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// Creature spells you cast cost {1} less to cast.
|
|
||||||
this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(FILTER, 1)));
|
|
||||||
|
|
||||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Howler.
|
|
||||||
this.addAbility(new WerewolfBackTriggeredAbility());
|
|
||||||
}
|
|
||||||
|
|
||||||
private KrallenhordeHowler(final KrallenhordeHowler card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public KrallenhordeHowler copy() {
|
|
||||||
return new KrallenhordeHowler(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
package mage.cards.l;
|
|
||||||
|
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
|
||||||
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
|
|
||||||
import mage.abilities.mana.SimpleManaAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author TheElk801
|
|
||||||
*/
|
|
||||||
public final class LostVale extends CardImpl {
|
|
||||||
|
|
||||||
public LostVale(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
|
||||||
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// T: Add three mana of any one color.
|
|
||||||
this.addAbility(new SimpleManaAbility(new AddManaOfAnyColorEffect(3), new TapSourceCost()));
|
|
||||||
}
|
|
||||||
|
|
||||||
private LostVale(final LostVale card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public LostVale copy() {
|
|
||||||
return new LostVale(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
||||||
package mage.cards.n;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
|
||||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
|
||||||
import mage.abilities.effects.common.FightTargetSourceEffect;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author North
|
|
||||||
*/
|
|
||||||
public final class NightfallPredator extends CardImpl {
|
|
||||||
|
|
||||||
public NightfallPredator(UUID ownerId, CardSetInfo setInfo) {
|
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
|
||||||
this.subtype.add(SubType.WEREWOLF);
|
|
||||||
|
|
||||||
this.color.setGreen(true);
|
|
||||||
this.power = new MageInt(4);
|
|
||||||
this.toughness = new MageInt(4);
|
|
||||||
|
|
||||||
// this card is the second face of double-faced card
|
|
||||||
this.nightCard = true;
|
|
||||||
|
|
||||||
// {R}, {tap}: Nightfall Predator fights target creature.
|
|
||||||
Ability activatedAbility = new SimpleActivatedAbility(
|
|
||||||
new FightTargetSourceEffect().setText(
|
|
||||||
"{this} fights target creature. " +
|
|
||||||
"<i>(Each deals damage equal to its power to the other.)</i>"),
|
|
||||||
new ManaCostsImpl<>("{R}")
|
|
||||||
);
|
|
||||||
activatedAbility.addCost(new TapSourceCost());
|
|
||||||
activatedAbility.addTarget(new TargetCreaturePermanent());
|
|
||||||
this.addAbility(activatedAbility);
|
|
||||||
|
|
||||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Nightfall Predator.
|
|
||||||
this.addAbility(new WerewolfBackTriggeredAbility());
|
|
||||||
}
|
|
||||||
|
|
||||||
private NightfallPredator(final NightfallPredator card) {
|
|
||||||
super(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public NightfallPredator copy() {
|
|
||||||
return new NightfallPredator(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -56,10 +56,6 @@ public final class FinalFantasy extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Astrologian's Planisphere", 46, Rarity.RARE, mage.cards.a.AstrologiansPlanisphere.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Astrologian's Planisphere", 46, Rarity.RARE, mage.cards.a.AstrologiansPlanisphere.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Astrologian's Planisphere", 581, Rarity.RARE, mage.cards.a.AstrologiansPlanisphere.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Astrologian's Planisphere", 581, Rarity.RARE, mage.cards.a.AstrologiansPlanisphere.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Auron's Inspiration", 8, Rarity.UNCOMMON, mage.cards.a.AuronsInspiration.class));
|
cards.add(new SetCardInfo("Auron's Inspiration", 8, Rarity.UNCOMMON, mage.cards.a.AuronsInspiration.class));
|
||||||
cards.add(new SetCardInfo("Bahamut, Warden of Light", 16, Rarity.RARE, mage.cards.b.BahamutWardenOfLight.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Bahamut, Warden of Light", 376, Rarity.RARE, mage.cards.b.BahamutWardenOfLight.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Bahamut, Warden of Light", 428, Rarity.RARE, mage.cards.b.BahamutWardenOfLight.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Bahamut, Warden of Light", 521, Rarity.RARE, mage.cards.b.BahamutWardenOfLight.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Balamb Garden, SeeD Academy", 272, Rarity.RARE, mage.cards.b.BalambGardenSeeDAcademy.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Balamb Garden, SeeD Academy", 272, Rarity.RARE, mage.cards.b.BalambGardenSeeDAcademy.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Balamb Garden, SeeD Academy", 354, Rarity.RARE, mage.cards.b.BalambGardenSeeDAcademy.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Balamb Garden, SeeD Academy", 354, Rarity.RARE, mage.cards.b.BalambGardenSeeDAcademy.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Balamb T-Rexaur", 173, Rarity.COMMON, mage.cards.b.BalambTRexaur.class));
|
cards.add(new SetCardInfo("Balamb T-Rexaur", 173, Rarity.COMMON, mage.cards.b.BalambTRexaur.class));
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@ public final class FromTheVaultTransform extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Brisela, Voice of Nightmares", "5b", Rarity.MYTHIC, mage.cards.b.BriselaVoiceOfNightmares.class));
|
cards.add(new SetCardInfo("Brisela, Voice of Nightmares", "5b", Rarity.MYTHIC, mage.cards.b.BriselaVoiceOfNightmares.class));
|
||||||
cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 6, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class));
|
cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 6, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class));
|
||||||
cards.add(new SetCardInfo("Delver of Secrets", 7, Rarity.MYTHIC, mage.cards.d.DelverOfSecrets.class));
|
cards.add(new SetCardInfo("Delver of Secrets", 7, Rarity.MYTHIC, mage.cards.d.DelverOfSecrets.class));
|
||||||
cards.add(new SetCardInfo("Insectile Aberration", 7, Rarity.MYTHIC, mage.cards.i.InsectileAberration.class));
|
|
||||||
cards.add(new SetCardInfo("Elbrus, the Binding Blade", 8, Rarity.MYTHIC, mage.cards.e.ElbrusTheBindingBlade.class));
|
cards.add(new SetCardInfo("Elbrus, the Binding Blade", 8, Rarity.MYTHIC, mage.cards.e.ElbrusTheBindingBlade.class));
|
||||||
cards.add(new SetCardInfo("Withengar Unbound", 8, Rarity.MYTHIC, mage.cards.w.WithengarUnbound.class));
|
cards.add(new SetCardInfo("Withengar Unbound", 8, Rarity.MYTHIC, mage.cards.w.WithengarUnbound.class));
|
||||||
cards.add(new SetCardInfo("Garruk Relentless", 9, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class));
|
cards.add(new SetCardInfo("Garruk Relentless", 9, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class));
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,6 @@ public final class Innistrad extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Hysterical Blindness", 59, Rarity.COMMON, mage.cards.h.HystericalBlindness.class));
|
cards.add(new SetCardInfo("Hysterical Blindness", 59, Rarity.COMMON, mage.cards.h.HystericalBlindness.class));
|
||||||
cards.add(new SetCardInfo("Infernal Plunge", 148, Rarity.COMMON, mage.cards.i.InfernalPlunge.class));
|
cards.add(new SetCardInfo("Infernal Plunge", 148, Rarity.COMMON, mage.cards.i.InfernalPlunge.class));
|
||||||
cards.add(new SetCardInfo("Inquisitor's Flail", 227, Rarity.UNCOMMON, mage.cards.i.InquisitorsFlail.class));
|
cards.add(new SetCardInfo("Inquisitor's Flail", 227, Rarity.UNCOMMON, mage.cards.i.InquisitorsFlail.class));
|
||||||
cards.add(new SetCardInfo("Insectile Aberration", 51, Rarity.COMMON, mage.cards.i.InsectileAberration.class));
|
|
||||||
cards.add(new SetCardInfo("Instigator Gang", 149, Rarity.RARE, mage.cards.i.InstigatorGang.class));
|
cards.add(new SetCardInfo("Instigator Gang", 149, Rarity.RARE, mage.cards.i.InstigatorGang.class));
|
||||||
cards.add(new SetCardInfo("Intangible Virtue", 19, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class));
|
cards.add(new SetCardInfo("Intangible Virtue", 19, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class));
|
||||||
cards.add(new SetCardInfo("Into the Maw of Hell", 150, Rarity.UNCOMMON, mage.cards.i.IntoTheMawOfHell.class));
|
cards.add(new SetCardInfo("Into the Maw of Hell", 150, Rarity.UNCOMMON, mage.cards.i.IntoTheMawOfHell.class));
|
||||||
|
|
@ -215,7 +214,6 @@ public final class Innistrad extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Night Revelers", 153, Rarity.COMMON, mage.cards.n.NightRevelers.class));
|
cards.add(new SetCardInfo("Night Revelers", 153, Rarity.COMMON, mage.cards.n.NightRevelers.class));
|
||||||
cards.add(new SetCardInfo("Night Terrors", 111, Rarity.COMMON, mage.cards.n.NightTerrors.class));
|
cards.add(new SetCardInfo("Night Terrors", 111, Rarity.COMMON, mage.cards.n.NightTerrors.class));
|
||||||
cards.add(new SetCardInfo("Nightbird's Clutches", 154, Rarity.COMMON, mage.cards.n.NightbirdsClutches.class));
|
cards.add(new SetCardInfo("Nightbird's Clutches", 154, Rarity.COMMON, mage.cards.n.NightbirdsClutches.class));
|
||||||
cards.add(new SetCardInfo("Nightfall Predator", 176, Rarity.RARE, mage.cards.n.NightfallPredator.class));
|
|
||||||
cards.add(new SetCardInfo("Olivia Voldaren", 215, Rarity.MYTHIC, mage.cards.o.OliviaVoldaren.class));
|
cards.add(new SetCardInfo("Olivia Voldaren", 215, Rarity.MYTHIC, mage.cards.o.OliviaVoldaren.class));
|
||||||
cards.add(new SetCardInfo("One-Eyed Scarecrow", 230, Rarity.COMMON, mage.cards.o.OneEyedScarecrow.class));
|
cards.add(new SetCardInfo("One-Eyed Scarecrow", 230, Rarity.COMMON, mage.cards.o.OneEyedScarecrow.class));
|
||||||
cards.add(new SetCardInfo("Orchard Spirit", 198, Rarity.COMMON, mage.cards.o.OrchardSpirit.class));
|
cards.add(new SetCardInfo("Orchard Spirit", 198, Rarity.COMMON, mage.cards.o.OrchardSpirit.class));
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Cipherbound Spirit", 79, Rarity.UNCOMMON, mage.cards.c.CipherboundSpirit.class));
|
cards.add(new SetCardInfo("Cipherbound Spirit", 79, Rarity.UNCOMMON, mage.cards.c.CipherboundSpirit.class));
|
||||||
cards.add(new SetCardInfo("Circle of Confinement", 329, Rarity.UNCOMMON, mage.cards.c.CircleOfConfinement.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Circle of Confinement", 329, Rarity.UNCOMMON, mage.cards.c.CircleOfConfinement.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Circle of Confinement", 7, Rarity.UNCOMMON, mage.cards.c.CircleOfConfinement.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Circle of Confinement", 7, Rarity.UNCOMMON, mage.cards.c.CircleOfConfinement.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Clever Distraction", 9, Rarity.UNCOMMON, mage.cards.c.CleverDistraction.class));
|
|
||||||
cards.add(new SetCardInfo("Cloaked Cadet", 192, Rarity.UNCOMMON, mage.cards.c.CloakedCadet.class));
|
cards.add(new SetCardInfo("Cloaked Cadet", 192, Rarity.UNCOMMON, mage.cards.c.CloakedCadet.class));
|
||||||
cards.add(new SetCardInfo("Cobbled Lancer", 52, Rarity.UNCOMMON, mage.cards.c.CobbledLancer.class));
|
cards.add(new SetCardInfo("Cobbled Lancer", 52, Rarity.UNCOMMON, mage.cards.c.CobbledLancer.class));
|
||||||
cards.add(new SetCardInfo("Concealing Curtains", 101, Rarity.RARE, mage.cards.c.ConcealingCurtains.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Concealing Curtains", 101, Rarity.RARE, mage.cards.c.ConcealingCurtains.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
@ -142,7 +141,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Deathcap Glade", 281, Rarity.RARE, mage.cards.d.DeathcapGlade.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Deathcap Glade", 281, Rarity.RARE, mage.cards.d.DeathcapGlade.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Demonic Bargain", 103, Rarity.RARE, mage.cards.d.DemonicBargain.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Demonic Bargain", 103, Rarity.RARE, mage.cards.d.DemonicBargain.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Demonic Bargain", 368, Rarity.RARE, mage.cards.d.DemonicBargain.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Demonic Bargain", 368, Rarity.RARE, mage.cards.d.DemonicBargain.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Depraved Harvester", 104, Rarity.COMMON, mage.cards.d.DepravedHarvester.class));
|
|
||||||
cards.add(new SetCardInfo("Desperate Farmer", 104, Rarity.COMMON, mage.cards.d.DesperateFarmer.class));
|
cards.add(new SetCardInfo("Desperate Farmer", 104, Rarity.COMMON, mage.cards.d.DesperateFarmer.class));
|
||||||
cards.add(new SetCardInfo("Dig Up", 197, Rarity.RARE, mage.cards.d.DigUp.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dig Up", 197, Rarity.RARE, mage.cards.d.DigUp.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Dig Up", 387, Rarity.RARE, mage.cards.d.DigUp.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dig Up", 387, Rarity.RARE, mage.cards.d.DigUp.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
@ -158,8 +156,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Dominating Vampire", 407, Rarity.RARE, mage.cards.d.DominatingVampire.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dominating Vampire", 407, Rarity.RARE, mage.cards.d.DominatingVampire.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Doomed Dissenter", 106, Rarity.COMMON, mage.cards.d.DoomedDissenter.class));
|
cards.add(new SetCardInfo("Doomed Dissenter", 106, Rarity.COMMON, mage.cards.d.DoomedDissenter.class));
|
||||||
cards.add(new SetCardInfo("Dormant Grove", 198, Rarity.UNCOMMON, mage.cards.d.DormantGrove.class));
|
cards.add(new SetCardInfo("Dormant Grove", 198, Rarity.UNCOMMON, mage.cards.d.DormantGrove.class));
|
||||||
cards.add(new SetCardInfo("Dorothea's Retribution", 235, Rarity.RARE, mage.cards.d.DorotheasRetribution.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Dorothea's Retribution", 322, Rarity.RARE, mage.cards.d.DorotheasRetribution.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Dorothea, Vengeful Victim", 235, Rarity.RARE, mage.cards.d.DorotheaVengefulVictim.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dorothea, Vengeful Victim", 235, Rarity.RARE, mage.cards.d.DorotheaVengefulVictim.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Dorothea, Vengeful Victim", 322, Rarity.RARE, mage.cards.d.DorotheaVengefulVictim.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dorothea, Vengeful Victim", 322, Rarity.RARE, mage.cards.d.DorotheaVengefulVictim.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Dread Fugue", 107, Rarity.UNCOMMON, mage.cards.d.DreadFugue.class));
|
cards.add(new SetCardInfo("Dread Fugue", 107, Rarity.UNCOMMON, mage.cards.d.DreadFugue.class));
|
||||||
|
|
@ -170,7 +166,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Dreamroot Cascade", 282, Rarity.RARE, mage.cards.d.DreamrootCascade.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dreamroot Cascade", 282, Rarity.RARE, mage.cards.d.DreamrootCascade.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Dreamshackle Geist", 358, Rarity.RARE, mage.cards.d.DreamshackleGeist.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dreamshackle Geist", 358, Rarity.RARE, mage.cards.d.DreamshackleGeist.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Dreamshackle Geist", 58, Rarity.RARE, mage.cards.d.DreamshackleGeist.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dreamshackle Geist", 58, Rarity.RARE, mage.cards.d.DreamshackleGeist.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Drogskol Armaments", 10, Rarity.COMMON, mage.cards.d.DrogskolArmaments.class));
|
|
||||||
cards.add(new SetCardInfo("Drogskol Infantry", 10, Rarity.COMMON, mage.cards.d.DrogskolInfantry.class));
|
cards.add(new SetCardInfo("Drogskol Infantry", 10, Rarity.COMMON, mage.cards.d.DrogskolInfantry.class));
|
||||||
cards.add(new SetCardInfo("Dying to Serve", 109, Rarity.RARE, mage.cards.d.DyingToServe.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dying to Serve", 109, Rarity.RARE, mage.cards.d.DyingToServe.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Dying to Serve", 370, Rarity.RARE, mage.cards.d.DyingToServe.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dying to Serve", 370, Rarity.RARE, mage.cards.d.DyingToServe.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
@ -221,7 +216,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Glorious Sunrise", 388, Rarity.RARE, mage.cards.g.GloriousSunrise.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Glorious Sunrise", 388, Rarity.RARE, mage.cards.g.GloriousSunrise.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Gluttonous Guest", 114, Rarity.COMMON, mage.cards.g.GluttonousGuest.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Gluttonous Guest", 114, Rarity.COMMON, mage.cards.g.GluttonousGuest.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Gluttonous Guest", 292, Rarity.COMMON, mage.cards.g.GluttonousGuest.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Gluttonous Guest", 292, Rarity.COMMON, mage.cards.g.GluttonousGuest.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Gnarled Grovestrider", 198, Rarity.UNCOMMON, mage.cards.g.GnarledGrovestrider.class));
|
|
||||||
cards.add(new SetCardInfo("Graf Reaver", 115, Rarity.RARE, mage.cards.g.GrafReaver.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Graf Reaver", 115, Rarity.RARE, mage.cards.g.GrafReaver.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Graf Reaver", 371, Rarity.RARE, mage.cards.g.GrafReaver.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Graf Reaver", 371, Rarity.RARE, mage.cards.g.GrafReaver.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Grisly Ritual", 116, Rarity.COMMON, mage.cards.g.GrislyRitual.class));
|
cards.add(new SetCardInfo("Grisly Ritual", 116, Rarity.COMMON, mage.cards.g.GrislyRitual.class));
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Circle of Confinement", 274, Rarity.UNCOMMON, mage.cards.c.CircleOfConfinement.class));
|
cards.add(new SetCardInfo("Circle of Confinement", 274, Rarity.UNCOMMON, mage.cards.c.CircleOfConfinement.class));
|
||||||
cards.add(new SetCardInfo("Clarion Cathars", 14, Rarity.COMMON, mage.cards.c.ClarionCathars.class));
|
cards.add(new SetCardInfo("Clarion Cathars", 14, Rarity.COMMON, mage.cards.c.ClarionCathars.class));
|
||||||
cards.add(new SetCardInfo("Clear Shot", 176, Rarity.UNCOMMON, mage.cards.c.ClearShot.class));
|
cards.add(new SetCardInfo("Clear Shot", 176, Rarity.UNCOMMON, mage.cards.c.ClearShot.class));
|
||||||
cards.add(new SetCardInfo("Clever Distraction", 276, Rarity.UNCOMMON, mage.cards.c.CleverDistraction.class));
|
|
||||||
cards.add(new SetCardInfo("Cloaked Cadet", 459, Rarity.UNCOMMON, mage.cards.c.CloakedCadet.class));
|
cards.add(new SetCardInfo("Cloaked Cadet", 459, Rarity.UNCOMMON, mage.cards.c.CloakedCadet.class));
|
||||||
cards.add(new SetCardInfo("Cobbled Lancer", 319, Rarity.UNCOMMON, mage.cards.c.CobbledLancer.class));
|
cards.add(new SetCardInfo("Cobbled Lancer", 319, Rarity.UNCOMMON, mage.cards.c.CobbledLancer.class));
|
||||||
cards.add(new SetCardInfo("Component Collector", 43, Rarity.COMMON, mage.cards.c.ComponentCollector.class));
|
cards.add(new SetCardInfo("Component Collector", 43, Rarity.COMMON, mage.cards.c.ComponentCollector.class));
|
||||||
|
|
@ -164,17 +163,13 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Dawnhart Rejuvenator", 180, Rarity.COMMON, mage.cards.d.DawnhartRejuvenator.class));
|
cards.add(new SetCardInfo("Dawnhart Rejuvenator", 180, Rarity.COMMON, mage.cards.d.DawnhartRejuvenator.class));
|
||||||
cards.add(new SetCardInfo("Dawnhart Wardens", 216, Rarity.UNCOMMON, mage.cards.d.DawnhartWardens.class));
|
cards.add(new SetCardInfo("Dawnhart Wardens", 216, Rarity.UNCOMMON, mage.cards.d.DawnhartWardens.class));
|
||||||
cards.add(new SetCardInfo("Daybreak Combatants", 420, Rarity.COMMON, mage.cards.d.DaybreakCombatants.class));
|
cards.add(new SetCardInfo("Daybreak Combatants", 420, Rarity.COMMON, mage.cards.d.DaybreakCombatants.class));
|
||||||
cards.add(new SetCardInfo("Deathbonnet Hulk", 181, Rarity.UNCOMMON, mage.cards.d.DeathbonnetHulk.class));
|
|
||||||
cards.add(new SetCardInfo("Deathbonnet Sprout", 181, Rarity.UNCOMMON, mage.cards.d.DeathbonnetSprout.class));
|
cards.add(new SetCardInfo("Deathbonnet Sprout", 181, Rarity.UNCOMMON, mage.cards.d.DeathbonnetSprout.class));
|
||||||
cards.add(new SetCardInfo("Deathcap Glade", 528, Rarity.RARE, mage.cards.d.DeathcapGlade.class));
|
cards.add(new SetCardInfo("Deathcap Glade", 528, Rarity.RARE, mage.cards.d.DeathcapGlade.class));
|
||||||
cards.add(new SetCardInfo("Defend the Celestus", 182, Rarity.UNCOMMON, mage.cards.d.DefendTheCelestus.class));
|
cards.add(new SetCardInfo("Defend the Celestus", 182, Rarity.UNCOMMON, mage.cards.d.DefendTheCelestus.class));
|
||||||
cards.add(new SetCardInfo("Defenestrate", 95, Rarity.COMMON, mage.cards.d.Defenestrate.class));
|
cards.add(new SetCardInfo("Defenestrate", 95, Rarity.COMMON, mage.cards.d.Defenestrate.class));
|
||||||
cards.add(new SetCardInfo("Delver of Secrets", 47, Rarity.UNCOMMON, mage.cards.d.DelverOfSecrets.class));
|
cards.add(new SetCardInfo("Delver of Secrets", 47, Rarity.UNCOMMON, mage.cards.d.DelverOfSecrets.class));
|
||||||
cards.add(new SetCardInfo("Demonic Bargain", 370, Rarity.RARE, mage.cards.d.DemonicBargain.class));
|
cards.add(new SetCardInfo("Demonic Bargain", 370, Rarity.RARE, mage.cards.d.DemonicBargain.class));
|
||||||
cards.add(new SetCardInfo("Dennick, Pious Apparition", 217, Rarity.RARE, mage.cards.d.DennickPiousApparition.class));
|
|
||||||
cards.add(new SetCardInfo("Dennick, Pious Apprentice", 217, Rarity.RARE, mage.cards.d.DennickPiousApprentice.class));
|
cards.add(new SetCardInfo("Dennick, Pious Apprentice", 217, Rarity.RARE, mage.cards.d.DennickPiousApprentice.class));
|
||||||
cards.add(new SetCardInfo("Departed Soulkeeper", 218, Rarity.UNCOMMON, mage.cards.d.DepartedSoulkeeper.class));
|
|
||||||
cards.add(new SetCardInfo("Depraved Harvester", 371, Rarity.COMMON, mage.cards.d.DepravedHarvester.class));
|
|
||||||
cards.add(new SetCardInfo("Deserted Beach", 260, Rarity.RARE, mage.cards.d.DesertedBeach.class));
|
cards.add(new SetCardInfo("Deserted Beach", 260, Rarity.RARE, mage.cards.d.DesertedBeach.class));
|
||||||
cards.add(new SetCardInfo("Desperate Farmer", 371, Rarity.COMMON, mage.cards.d.DesperateFarmer.class));
|
cards.add(new SetCardInfo("Desperate Farmer", 371, Rarity.COMMON, mage.cards.d.DesperateFarmer.class));
|
||||||
cards.add(new SetCardInfo("Devious Cover-Up", 48, Rarity.COMMON, mage.cards.d.DeviousCoverUp.class));
|
cards.add(new SetCardInfo("Devious Cover-Up", 48, Rarity.COMMON, mage.cards.d.DeviousCoverUp.class));
|
||||||
|
|
@ -193,7 +188,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Dominating Vampire", 421, Rarity.RARE, mage.cards.d.DominatingVampire.class));
|
cards.add(new SetCardInfo("Dominating Vampire", 421, Rarity.RARE, mage.cards.d.DominatingVampire.class));
|
||||||
cards.add(new SetCardInfo("Doomed Dissenter", 373, Rarity.COMMON, mage.cards.d.DoomedDissenter.class));
|
cards.add(new SetCardInfo("Doomed Dissenter", 373, Rarity.COMMON, mage.cards.d.DoomedDissenter.class));
|
||||||
cards.add(new SetCardInfo("Dormant Grove", 465, Rarity.UNCOMMON, mage.cards.d.DormantGrove.class));
|
cards.add(new SetCardInfo("Dormant Grove", 465, Rarity.UNCOMMON, mage.cards.d.DormantGrove.class));
|
||||||
cards.add(new SetCardInfo("Dorothea's Retribution", 502, Rarity.RARE, mage.cards.d.DorotheasRetribution.class));
|
|
||||||
cards.add(new SetCardInfo("Dorothea, Vengeful Victim", 502, Rarity.RARE, mage.cards.d.DorotheaVengefulVictim.class));
|
cards.add(new SetCardInfo("Dorothea, Vengeful Victim", 502, Rarity.RARE, mage.cards.d.DorotheaVengefulVictim.class));
|
||||||
cards.add(new SetCardInfo("Dread Fugue", 374, Rarity.UNCOMMON, mage.cards.d.DreadFugue.class));
|
cards.add(new SetCardInfo("Dread Fugue", 374, Rarity.UNCOMMON, mage.cards.d.DreadFugue.class));
|
||||||
cards.add(new SetCardInfo("Dreadfeast Demon", 375, Rarity.RARE, mage.cards.d.DreadfeastDemon.class));
|
cards.add(new SetCardInfo("Dreadfeast Demon", 375, Rarity.RARE, mage.cards.d.DreadfeastDemon.class));
|
||||||
|
|
@ -201,7 +195,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Dreadlight Monstrosity", 324, Rarity.COMMON, mage.cards.d.DreadlightMonstrosity.class));
|
cards.add(new SetCardInfo("Dreadlight Monstrosity", 324, Rarity.COMMON, mage.cards.d.DreadlightMonstrosity.class));
|
||||||
cards.add(new SetCardInfo("Dreamroot Cascade", 529, Rarity.RARE, mage.cards.d.DreamrootCascade.class));
|
cards.add(new SetCardInfo("Dreamroot Cascade", 529, Rarity.RARE, mage.cards.d.DreamrootCascade.class));
|
||||||
cards.add(new SetCardInfo("Dreamshackle Geist", 325, Rarity.RARE, mage.cards.d.DreamshackleGeist.class));
|
cards.add(new SetCardInfo("Dreamshackle Geist", 325, Rarity.RARE, mage.cards.d.DreamshackleGeist.class));
|
||||||
cards.add(new SetCardInfo("Drogskol Armaments", 277, Rarity.COMMON, mage.cards.d.DrogskolArmaments.class));
|
|
||||||
cards.add(new SetCardInfo("Drogskol Infantry", 277, Rarity.COMMON, mage.cards.d.DrogskolInfantry.class));
|
cards.add(new SetCardInfo("Drogskol Infantry", 277, Rarity.COMMON, mage.cards.d.DrogskolInfantry.class));
|
||||||
cards.add(new SetCardInfo("Drownyard Amalgam", 50, Rarity.COMMON, mage.cards.d.DrownyardAmalgam.class));
|
cards.add(new SetCardInfo("Drownyard Amalgam", 50, Rarity.COMMON, mage.cards.d.DrownyardAmalgam.class));
|
||||||
cards.add(new SetCardInfo("Dryad's Revival", 183, Rarity.UNCOMMON, mage.cards.d.DryadsRevival.class));
|
cards.add(new SetCardInfo("Dryad's Revival", 183, Rarity.UNCOMMON, mage.cards.d.DryadsRevival.class));
|
||||||
|
|
@ -273,7 +266,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Gisa, Glorious Resurrector", 103, Rarity.RARE, mage.cards.g.GisaGloriousResurrector.class));
|
cards.add(new SetCardInfo("Gisa, Glorious Resurrector", 103, Rarity.RARE, mage.cards.g.GisaGloriousResurrector.class));
|
||||||
cards.add(new SetCardInfo("Glorious Sunrise", 467, Rarity.RARE, mage.cards.g.GloriousSunrise.class));
|
cards.add(new SetCardInfo("Glorious Sunrise", 467, Rarity.RARE, mage.cards.g.GloriousSunrise.class));
|
||||||
cards.add(new SetCardInfo("Gluttonous Guest", 381, Rarity.COMMON, mage.cards.g.GluttonousGuest.class));
|
cards.add(new SetCardInfo("Gluttonous Guest", 381, Rarity.COMMON, mage.cards.g.GluttonousGuest.class));
|
||||||
cards.add(new SetCardInfo("Gnarled Grovestrider", 465, Rarity.UNCOMMON, mage.cards.g.GnarledGrovestrider.class));
|
|
||||||
cards.add(new SetCardInfo("Graf Reaver", 382, Rarity.RARE, mage.cards.g.GrafReaver.class));
|
cards.add(new SetCardInfo("Graf Reaver", 382, Rarity.RARE, mage.cards.g.GrafReaver.class));
|
||||||
cards.add(new SetCardInfo("Grafted Identity", 57, Rarity.RARE, mage.cards.g.GraftedIdentity.class));
|
cards.add(new SetCardInfo("Grafted Identity", 57, Rarity.RARE, mage.cards.g.GraftedIdentity.class));
|
||||||
cards.add(new SetCardInfo("Graveyard Glutton", 104, Rarity.RARE, mage.cards.g.GraveyardGlutton.class));
|
cards.add(new SetCardInfo("Graveyard Glutton", 104, Rarity.RARE, mage.cards.g.GraveyardGlutton.class));
|
||||||
|
|
@ -326,7 +318,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Infested Werewolf", 473, Rarity.UNCOMMON, mage.cards.i.InfestedWerewolf.class));
|
cards.add(new SetCardInfo("Infested Werewolf", 473, Rarity.UNCOMMON, mage.cards.i.InfestedWerewolf.class));
|
||||||
cards.add(new SetCardInfo("Inherited Fiend", 105, Rarity.UNCOMMON, mage.cards.i.InheritedFiend.class));
|
cards.add(new SetCardInfo("Inherited Fiend", 105, Rarity.UNCOMMON, mage.cards.i.InheritedFiend.class));
|
||||||
cards.add(new SetCardInfo("Innocent Traveler", 388, Rarity.UNCOMMON, mage.cards.i.InnocentTraveler.class));
|
cards.add(new SetCardInfo("Innocent Traveler", 388, Rarity.UNCOMMON, mage.cards.i.InnocentTraveler.class));
|
||||||
cards.add(new SetCardInfo("Insectile Aberration", 47, Rarity.UNCOMMON, mage.cards.i.InsectileAberration.class));
|
|
||||||
cards.add(new SetCardInfo("Inspired Idea", 331, Rarity.RARE, mage.cards.i.InspiredIdea.class));
|
cards.add(new SetCardInfo("Inspired Idea", 331, Rarity.RARE, mage.cards.i.InspiredIdea.class));
|
||||||
cards.add(new SetCardInfo("Into the Night", 430, Rarity.UNCOMMON, mage.cards.i.IntoTheNight.class));
|
cards.add(new SetCardInfo("Into the Night", 430, Rarity.UNCOMMON, mage.cards.i.IntoTheNight.class));
|
||||||
cards.add(new SetCardInfo("Intrepid Adversary", 25, Rarity.MYTHIC, mage.cards.i.IntrepidAdversary.class));
|
cards.add(new SetCardInfo("Intrepid Adversary", 25, Rarity.MYTHIC, mage.cards.i.IntrepidAdversary.class));
|
||||||
|
|
|
||||||
|
|
@ -137,16 +137,12 @@ public final class InnistradMidnightHunt extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Dawnhart Rejuvenator", 301, Rarity.COMMON, mage.cards.d.DawnhartRejuvenator.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dawnhart Rejuvenator", 301, Rarity.COMMON, mage.cards.d.DawnhartRejuvenator.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Dawnhart Wardens", 216, Rarity.UNCOMMON, mage.cards.d.DawnhartWardens.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dawnhart Wardens", 216, Rarity.UNCOMMON, mage.cards.d.DawnhartWardens.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Dawnhart Wardens", 308, Rarity.UNCOMMON, mage.cards.d.DawnhartWardens.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dawnhart Wardens", 308, Rarity.UNCOMMON, mage.cards.d.DawnhartWardens.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Deathbonnet Hulk", 181, Rarity.UNCOMMON, mage.cards.d.DeathbonnetHulk.class));
|
|
||||||
cards.add(new SetCardInfo("Deathbonnet Sprout", 181, Rarity.UNCOMMON, mage.cards.d.DeathbonnetSprout.class));
|
cards.add(new SetCardInfo("Deathbonnet Sprout", 181, Rarity.UNCOMMON, mage.cards.d.DeathbonnetSprout.class));
|
||||||
cards.add(new SetCardInfo("Defend the Celestus", 182, Rarity.UNCOMMON, mage.cards.d.DefendTheCelestus.class));
|
cards.add(new SetCardInfo("Defend the Celestus", 182, Rarity.UNCOMMON, mage.cards.d.DefendTheCelestus.class));
|
||||||
cards.add(new SetCardInfo("Defenestrate", 95, Rarity.COMMON, mage.cards.d.Defenestrate.class));
|
cards.add(new SetCardInfo("Defenestrate", 95, Rarity.COMMON, mage.cards.d.Defenestrate.class));
|
||||||
cards.add(new SetCardInfo("Delver of Secrets", 47, Rarity.UNCOMMON, mage.cards.d.DelverOfSecrets.class));
|
cards.add(new SetCardInfo("Delver of Secrets", 47, Rarity.UNCOMMON, mage.cards.d.DelverOfSecrets.class));
|
||||||
cards.add(new SetCardInfo("Dennick, Pious Apparition", 217, Rarity.RARE, mage.cards.d.DennickPiousApparition.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Dennick, Pious Apparition", 317, Rarity.RARE, mage.cards.d.DennickPiousApparition.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Dennick, Pious Apprentice", 217, Rarity.RARE, mage.cards.d.DennickPiousApprentice.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dennick, Pious Apprentice", 217, Rarity.RARE, mage.cards.d.DennickPiousApprentice.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Dennick, Pious Apprentice", 317, Rarity.RARE, mage.cards.d.DennickPiousApprentice.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dennick, Pious Apprentice", 317, Rarity.RARE, mage.cards.d.DennickPiousApprentice.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Departed Soulkeeper", 218, Rarity.UNCOMMON, mage.cards.d.DepartedSoulkeeper.class));
|
|
||||||
cards.add(new SetCardInfo("Deserted Beach", 260, Rarity.RARE, mage.cards.d.DesertedBeach.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Deserted Beach", 260, Rarity.RARE, mage.cards.d.DesertedBeach.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Deserted Beach", 281, Rarity.RARE, mage.cards.d.DesertedBeach.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Deserted Beach", 281, Rarity.RARE, mage.cards.d.DesertedBeach.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Devious Cover-Up", 48, Rarity.COMMON, mage.cards.d.DeviousCoverUp.class));
|
cards.add(new SetCardInfo("Devious Cover-Up", 48, Rarity.COMMON, mage.cards.d.DeviousCoverUp.class));
|
||||||
|
|
@ -245,7 +241,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Infernal Grasp", 107, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Infernal Grasp", 107, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Infernal Grasp", 389, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Infernal Grasp", 389, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Inherited Fiend", 105, Rarity.UNCOMMON, mage.cards.i.InheritedFiend.class));
|
cards.add(new SetCardInfo("Inherited Fiend", 105, Rarity.UNCOMMON, mage.cards.i.InheritedFiend.class));
|
||||||
cards.add(new SetCardInfo("Insectile Aberration", 47, Rarity.UNCOMMON, mage.cards.i.InsectileAberration.class));
|
|
||||||
cards.add(new SetCardInfo("Intrepid Adversary", 25, Rarity.MYTHIC, mage.cards.i.IntrepidAdversary.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Intrepid Adversary", 25, Rarity.MYTHIC, mage.cards.i.IntrepidAdversary.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Intrepid Adversary", 329, Rarity.MYTHIC, mage.cards.i.IntrepidAdversary.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Intrepid Adversary", 329, Rarity.MYTHIC, mage.cards.i.IntrepidAdversary.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Island", 270, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
|
cards.add(new SetCardInfo("Island", 270, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,6 @@ public class InnistradRemastered extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Demonic Taskmaster", 377, Rarity.UNCOMMON, mage.cards.d.DemonicTaskmaster.class, RETRO_ART_USE_VARIOUS));
|
cards.add(new SetCardInfo("Demonic Taskmaster", 377, Rarity.UNCOMMON, mage.cards.d.DemonicTaskmaster.class, RETRO_ART_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Demonmail Hauberk", 261, Rarity.UNCOMMON, mage.cards.d.DemonmailHauberk.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Demonmail Hauberk", 261, Rarity.UNCOMMON, mage.cards.d.DemonmailHauberk.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Demonmail Hauberk", 442, Rarity.UNCOMMON, mage.cards.d.DemonmailHauberk.class, RETRO_ART_USE_VARIOUS));
|
cards.add(new SetCardInfo("Demonmail Hauberk", 442, Rarity.UNCOMMON, mage.cards.d.DemonmailHauberk.class, RETRO_ART_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Depraved Harvester", 105, Rarity.COMMON, mage.cards.d.DepravedHarvester.class));
|
|
||||||
cards.add(new SetCardInfo("Deranged Assistant", 61, Rarity.COMMON, mage.cards.d.DerangedAssistant.class));
|
cards.add(new SetCardInfo("Deranged Assistant", 61, Rarity.COMMON, mage.cards.d.DerangedAssistant.class));
|
||||||
cards.add(new SetCardInfo("Deserted Beach", 276, Rarity.RARE, mage.cards.d.DesertedBeach.class));
|
cards.add(new SetCardInfo("Deserted Beach", 276, Rarity.RARE, mage.cards.d.DesertedBeach.class));
|
||||||
cards.add(new SetCardInfo("Desperate Farmer", 105, Rarity.COMMON, mage.cards.d.DesperateFarmer.class));
|
cards.add(new SetCardInfo("Desperate Farmer", 105, Rarity.COMMON, mage.cards.d.DesperateFarmer.class));
|
||||||
|
|
@ -295,8 +294,6 @@ public class InnistradRemastered extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Infernal Grasp", 119, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Infernal Grasp", 119, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Infernal Grasp", 310, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Infernal Grasp", 310, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Infernal Grasp", 385, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class,RETRO_ART_USE_VARIOUS));
|
cards.add(new SetCardInfo("Infernal Grasp", 385, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class,RETRO_ART_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Insectile Aberration", 457, Rarity.COMMON, mage.cards.i.InsectileAberration.class, RETRO_ART_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Insectile Aberration", 60, Rarity.COMMON, mage.cards.i.InsectileAberration.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Inspiring Captain", 28, Rarity.COMMON, mage.cards.i.InspiringCaptain.class));
|
cards.add(new SetCardInfo("Inspiring Captain", 28, Rarity.COMMON, mage.cards.i.InspiringCaptain.class));
|
||||||
cards.add(new SetCardInfo("Intangible Virtue", 29, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class));
|
cards.add(new SetCardInfo("Intangible Virtue", 29, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class));
|
||||||
cards.add(new SetCardInfo("Intrepid Provisioner", 205, Rarity.COMMON, mage.cards.i.IntrepidProvisioner.class));
|
cards.add(new SetCardInfo("Intrepid Provisioner", 205, Rarity.COMMON, mage.cards.i.IntrepidProvisioner.class));
|
||||||
|
|
@ -310,9 +307,6 @@ public class InnistradRemastered extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Join the Dance", 432, Rarity.UNCOMMON, mage.cards.j.JoinTheDance.class, RETRO_ART_USE_VARIOUS));
|
cards.add(new SetCardInfo("Join the Dance", 432, Rarity.UNCOMMON, mage.cards.j.JoinTheDance.class, RETRO_ART_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Killing Wave", 121, Rarity.UNCOMMON, mage.cards.k.KillingWave.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Killing Wave", 121, Rarity.UNCOMMON, mage.cards.k.KillingWave.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Killing Wave", 386, Rarity.UNCOMMON, mage.cards.k.KillingWave.class,RETRO_ART_USE_VARIOUS));
|
cards.add(new SetCardInfo("Killing Wave", 386, Rarity.UNCOMMON, mage.cards.k.KillingWave.class,RETRO_ART_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Krallenhorde Howler", 193, Rarity.UNCOMMON, mage.cards.k.KrallenhordeHowler.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Krallenhorde Howler", 323, Rarity.UNCOMMON, mage.cards.k.KrallenhordeHowler.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Krallenhorde Howler", 467, Rarity.UNCOMMON, mage.cards.k.KrallenhordeHowler.class, RETRO_ART_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Kruin Outlaw", 161, Rarity.RARE, mage.cards.k.KruinOutlaw.class));
|
cards.add(new SetCardInfo("Kruin Outlaw", 161, Rarity.RARE, mage.cards.k.KruinOutlaw.class));
|
||||||
cards.add(new SetCardInfo("Laboratory Maniac", 304, Rarity.UNCOMMON, mage.cards.l.LaboratoryManiac.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Laboratory Maniac", 304, Rarity.UNCOMMON, mage.cards.l.LaboratoryManiac.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Laboratory Maniac", 359, Rarity.UNCOMMON, mage.cards.l.LaboratoryManiac.class, RETRO_ART_USE_VARIOUS));
|
cards.add(new SetCardInfo("Laboratory Maniac", 359, Rarity.UNCOMMON, mage.cards.l.LaboratoryManiac.class, RETRO_ART_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,6 @@ public final class Ixalan extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Lightning Strike", 149, Rarity.UNCOMMON, mage.cards.l.LightningStrike.class));
|
cards.add(new SetCardInfo("Lightning Strike", 149, Rarity.UNCOMMON, mage.cards.l.LightningStrike.class));
|
||||||
cards.add(new SetCardInfo("Lookout's Dispersal", 62, Rarity.UNCOMMON, mage.cards.l.LookoutsDispersal.class));
|
cards.add(new SetCardInfo("Lookout's Dispersal", 62, Rarity.UNCOMMON, mage.cards.l.LookoutsDispersal.class));
|
||||||
cards.add(new SetCardInfo("Looming Altisaur", 23, Rarity.COMMON, mage.cards.l.LoomingAltisaur.class));
|
cards.add(new SetCardInfo("Looming Altisaur", 23, Rarity.COMMON, mage.cards.l.LoomingAltisaur.class));
|
||||||
cards.add(new SetCardInfo("Lost Vale", 235, Rarity.RARE, mage.cards.l.LostVale.class));
|
|
||||||
cards.add(new SetCardInfo("Lurking Chupacabra", 111, Rarity.UNCOMMON, mage.cards.l.LurkingChupacabra.class));
|
cards.add(new SetCardInfo("Lurking Chupacabra", 111, Rarity.UNCOMMON, mage.cards.l.LurkingChupacabra.class));
|
||||||
cards.add(new SetCardInfo("Makeshift Munitions", 151, Rarity.UNCOMMON, mage.cards.m.MakeshiftMunitions.class));
|
cards.add(new SetCardInfo("Makeshift Munitions", 151, Rarity.UNCOMMON, mage.cards.m.MakeshiftMunitions.class));
|
||||||
cards.add(new SetCardInfo("Marauding Looter", 225, Rarity.UNCOMMON, mage.cards.m.MaraudingLooter.class));
|
cards.add(new SetCardInfo("Marauding Looter", 225, Rarity.UNCOMMON, mage.cards.m.MaraudingLooter.class));
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,6 @@ public class IxalanPromos extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Kopala, Warden of Waves", "61p", Rarity.RARE, mage.cards.k.KopalaWardenOfWaves.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Kopala, Warden of Waves", "61p", Rarity.RARE, mage.cards.k.KopalaWardenOfWaves.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Kopala, Warden of Waves", "61s", Rarity.RARE, mage.cards.k.KopalaWardenOfWaves.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Kopala, Warden of Waves", "61s", Rarity.RARE, mage.cards.k.KopalaWardenOfWaves.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Legion's Landing", "22s", Rarity.RARE, mage.cards.l.LegionsLanding.class));
|
cards.add(new SetCardInfo("Legion's Landing", "22s", Rarity.RARE, mage.cards.l.LegionsLanding.class));
|
||||||
cards.add(new SetCardInfo("Lost Vale", "235s", Rarity.RARE, mage.cards.l.LostVale.class));
|
|
||||||
cards.add(new SetCardInfo("Mavren Fein, Dusk Apostle", "24p", Rarity.RARE, mage.cards.m.MavrenFeinDuskApostle.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Mavren Fein, Dusk Apostle", "24p", Rarity.RARE, mage.cards.m.MavrenFeinDuskApostle.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Mavren Fein, Dusk Apostle", "24s", Rarity.RARE, mage.cards.m.MavrenFeinDuskApostle.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Mavren Fein, Dusk Apostle", "24s", Rarity.RARE, mage.cards.m.MavrenFeinDuskApostle.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Old-Growth Dryads", "199s", Rarity.RARE, mage.cards.o.OldGrowthDryads.class));
|
cards.add(new SetCardInfo("Old-Growth Dryads", "199s", Rarity.RARE, mage.cards.o.OldGrowthDryads.class));
|
||||||
|
|
|
||||||
|
|
@ -724,7 +724,6 @@ public class SecretLairDrop extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Thought-Knot Seer", 720, Rarity.RARE, mage.cards.t.ThoughtKnotSeer.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Thought-Knot Seer", 720, Rarity.RARE, mage.cards.t.ThoughtKnotSeer.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Diabolic Tutor", 721, Rarity.RARE, mage.cards.d.DiabolicTutor.class, RETRO_ART_USE_VARIOUS));
|
cards.add(new SetCardInfo("Diabolic Tutor", 721, Rarity.RARE, mage.cards.d.DiabolicTutor.class, RETRO_ART_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Delver of Secrets", 722, Rarity.RARE, mage.cards.d.DelverOfSecrets.class));
|
cards.add(new SetCardInfo("Delver of Secrets", 722, Rarity.RARE, mage.cards.d.DelverOfSecrets.class));
|
||||||
cards.add(new SetCardInfo("Insectile Aberration", 722, Rarity.RARE, mage.cards.i.InsectileAberration.class));
|
|
||||||
cards.add(new SetCardInfo("Brainstorm", 723, Rarity.RARE, mage.cards.b.Brainstorm.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Brainstorm", 723, Rarity.RARE, mage.cards.b.Brainstorm.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Lightning Strike", 724, Rarity.RARE, mage.cards.l.LightningStrike.class));
|
cards.add(new SetCardInfo("Lightning Strike", 724, Rarity.RARE, mage.cards.l.LightningStrike.class));
|
||||||
cards.add(new SetCardInfo("Fleshbag Marauder", 725, Rarity.RARE, mage.cards.f.FleshbagMarauder.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Fleshbag Marauder", 725, Rarity.RARE, mage.cards.f.FleshbagMarauder.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,6 @@ public final class ShadowsOverInnistrad extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Avacyn's Judgment", 145, Rarity.RARE, mage.cards.a.AvacynsJudgment.class));
|
cards.add(new SetCardInfo("Avacyn's Judgment", 145, Rarity.RARE, mage.cards.a.AvacynsJudgment.class));
|
||||||
cards.add(new SetCardInfo("Avacynian Missionaries", 6, Rarity.UNCOMMON, mage.cards.a.AvacynianMissionaries.class));
|
cards.add(new SetCardInfo("Avacynian Missionaries", 6, Rarity.UNCOMMON, mage.cards.a.AvacynianMissionaries.class));
|
||||||
cards.add(new SetCardInfo("Awoken Horror", 92, Rarity.RARE, mage.cards.a.AwokenHorror.class));
|
cards.add(new SetCardInfo("Awoken Horror", 92, Rarity.RARE, mage.cards.a.AwokenHorror.class));
|
||||||
cards.add(new SetCardInfo("Bearer of Overwhelming Truths", 54, Rarity.UNCOMMON, mage.cards.b.BearerOfOverwhelmingTruths.class));
|
|
||||||
cards.add(new SetCardInfo("Behind the Scenes", 100, Rarity.UNCOMMON, mage.cards.b.BehindTheScenes.class));
|
cards.add(new SetCardInfo("Behind the Scenes", 100, Rarity.UNCOMMON, mage.cards.b.BehindTheScenes.class));
|
||||||
cards.add(new SetCardInfo("Behold the Beyond", 101, Rarity.MYTHIC, mage.cards.b.BeholdTheBeyond.class));
|
cards.add(new SetCardInfo("Behold the Beyond", 101, Rarity.MYTHIC, mage.cards.b.BeholdTheBeyond.class));
|
||||||
cards.add(new SetCardInfo("Biting Rain", 102, Rarity.UNCOMMON, mage.cards.b.BitingRain.class));
|
cards.add(new SetCardInfo("Biting Rain", 102, Rarity.UNCOMMON, mage.cards.b.BitingRain.class));
|
||||||
|
|
@ -189,7 +188,6 @@ public final class ShadowsOverInnistrad extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Kessig Dire Swine", 214, Rarity.COMMON, mage.cards.k.KessigDireSwine.class));
|
cards.add(new SetCardInfo("Kessig Dire Swine", 214, Rarity.COMMON, mage.cards.k.KessigDireSwine.class));
|
||||||
cards.add(new SetCardInfo("Kessig Forgemaster", 169, Rarity.UNCOMMON, mage.cards.k.KessigForgemaster.class));
|
cards.add(new SetCardInfo("Kessig Forgemaster", 169, Rarity.UNCOMMON, mage.cards.k.KessigForgemaster.class));
|
||||||
cards.add(new SetCardInfo("Kindly Stranger", 119, Rarity.UNCOMMON, mage.cards.k.KindlyStranger.class));
|
cards.add(new SetCardInfo("Kindly Stranger", 119, Rarity.UNCOMMON, mage.cards.k.KindlyStranger.class));
|
||||||
cards.add(new SetCardInfo("Krallenhorde Howler", 203, Rarity.UNCOMMON, mage.cards.k.KrallenhordeHowler.class));
|
|
||||||
cards.add(new SetCardInfo("Lambholt Pacifist", 215, Rarity.UNCOMMON, mage.cards.l.LambholtPacifist.class));
|
cards.add(new SetCardInfo("Lambholt Pacifist", 215, Rarity.UNCOMMON, mage.cards.l.LambholtPacifist.class));
|
||||||
cards.add(new SetCardInfo("Lamplighter of Selhoff", 72, Rarity.COMMON, mage.cards.l.LamplighterOfSelhoff.class));
|
cards.add(new SetCardInfo("Lamplighter of Selhoff", 72, Rarity.COMMON, mage.cards.l.LamplighterOfSelhoff.class));
|
||||||
cards.add(new SetCardInfo("Lightning Axe", 170, Rarity.UNCOMMON, mage.cards.l.LightningAxe.class));
|
cards.add(new SetCardInfo("Lightning Axe", 170, Rarity.UNCOMMON, mage.cards.l.LightningAxe.class));
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,6 @@ public class ShadowsOverInnistradRemastered extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Assembled Alphas", 141, Rarity.RARE, mage.cards.a.AssembledAlphas.class));
|
cards.add(new SetCardInfo("Assembled Alphas", 141, Rarity.RARE, mage.cards.a.AssembledAlphas.class));
|
||||||
cards.add(new SetCardInfo("Avacyn's Judgment", 142, Rarity.RARE, mage.cards.a.AvacynsJudgment.class));
|
cards.add(new SetCardInfo("Avacyn's Judgment", 142, Rarity.RARE, mage.cards.a.AvacynsJudgment.class));
|
||||||
cards.add(new SetCardInfo("Awoken Horror", 95, Rarity.RARE, mage.cards.a.AwokenHorror.class));
|
cards.add(new SetCardInfo("Awoken Horror", 95, Rarity.RARE, mage.cards.a.AwokenHorror.class));
|
||||||
cards.add(new SetCardInfo("Bearer of Overwhelming Truths", 59, Rarity.UNCOMMON, mage.cards.b.BearerOfOverwhelmingTruths.class));
|
|
||||||
cards.add(new SetCardInfo("Bedlam Reveler", 143, Rarity.RARE, mage.cards.b.BedlamReveler.class));
|
cards.add(new SetCardInfo("Bedlam Reveler", 143, Rarity.RARE, mage.cards.b.BedlamReveler.class));
|
||||||
cards.add(new SetCardInfo("Biting Rain", 99, Rarity.UNCOMMON, mage.cards.b.BitingRain.class));
|
cards.add(new SetCardInfo("Biting Rain", 99, Rarity.UNCOMMON, mage.cards.b.BitingRain.class));
|
||||||
cards.add(new SetCardInfo("Blessed Alliance", 14, Rarity.UNCOMMON, mage.cards.b.BlessedAlliance.class));
|
cards.add(new SetCardInfo("Blessed Alliance", 14, Rarity.UNCOMMON, mage.cards.b.BlessedAlliance.class));
|
||||||
|
|
@ -193,7 +192,6 @@ public class ShadowsOverInnistradRemastered extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Jace's Scrutiny", 78, Rarity.COMMON, mage.cards.j.JacesScrutiny.class));
|
cards.add(new SetCardInfo("Jace's Scrutiny", 78, Rarity.COMMON, mage.cards.j.JacesScrutiny.class));
|
||||||
cards.add(new SetCardInfo("Jace, Unraveler of Secrets", 77, Rarity.MYTHIC, mage.cards.j.JaceUnravelerOfSecrets.class));
|
cards.add(new SetCardInfo("Jace, Unraveler of Secrets", 77, Rarity.MYTHIC, mage.cards.j.JaceUnravelerOfSecrets.class));
|
||||||
cards.add(new SetCardInfo("Kindly Stranger", 107, Rarity.UNCOMMON, mage.cards.k.KindlyStranger.class));
|
cards.add(new SetCardInfo("Kindly Stranger", 107, Rarity.UNCOMMON, mage.cards.k.KindlyStranger.class));
|
||||||
cards.add(new SetCardInfo("Krallenhorde Howler", 194, Rarity.UNCOMMON, mage.cards.k.KrallenhordeHowler.class));
|
|
||||||
cards.add(new SetCardInfo("Laboratory Brute", 79, Rarity.COMMON, mage.cards.l.LaboratoryBrute.class));
|
cards.add(new SetCardInfo("Laboratory Brute", 79, Rarity.COMMON, mage.cards.l.LaboratoryBrute.class));
|
||||||
cards.add(new SetCardInfo("Lightning Axe", 166, Rarity.UNCOMMON, mage.cards.l.LightningAxe.class));
|
cards.add(new SetCardInfo("Lightning Axe", 166, Rarity.UNCOMMON, mage.cards.l.LightningAxe.class));
|
||||||
cards.add(new SetCardInfo("Liliana's Elite", 120, Rarity.COMMON, mage.cards.l.LilianasElite.class));
|
cards.add(new SetCardInfo("Liliana's Elite", 120, Rarity.COMMON, mage.cards.l.LilianasElite.class));
|
||||||
|
|
|
||||||
|
|
@ -149,8 +149,6 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Didact Echo", 53, Rarity.COMMON, mage.cards.d.DidactEcho.class));
|
cards.add(new SetCardInfo("Didact Echo", 53, Rarity.COMMON, mage.cards.d.DidactEcho.class));
|
||||||
cards.add(new SetCardInfo("Digsite Conservator", 252, Rarity.UNCOMMON, mage.cards.d.DigsiteConservator.class));
|
cards.add(new SetCardInfo("Digsite Conservator", 252, Rarity.UNCOMMON, mage.cards.d.DigsiteConservator.class));
|
||||||
cards.add(new SetCardInfo("Dinotomaton", 144, Rarity.COMMON, mage.cards.d.Dinotomaton.class));
|
cards.add(new SetCardInfo("Dinotomaton", 144, Rarity.COMMON, mage.cards.d.Dinotomaton.class));
|
||||||
cards.add(new SetCardInfo("Dire Blunderbuss", 145, Rarity.RARE, mage.cards.d.DireBlunderbuss.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Dire Blunderbuss", 374, Rarity.RARE, mage.cards.d.DireBlunderbuss.class, NON_FULL_USE_VARIOUS));
|
|
||||||
cards.add(new SetCardInfo("Dire Flail", 145, Rarity.RARE, mage.cards.d.DireFlail.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dire Flail", 145, Rarity.RARE, mage.cards.d.DireFlail.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Dire Flail", 374, Rarity.RARE, mage.cards.d.DireFlail.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Dire Flail", 374, Rarity.RARE, mage.cards.d.DireFlail.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Disruptor Wanderglyph", 253, Rarity.COMMON, mage.cards.d.DisruptorWanderglyph.class));
|
cards.add(new SetCardInfo("Disruptor Wanderglyph", 253, Rarity.COMMON, mage.cards.d.DisruptorWanderglyph.class));
|
||||||
|
|
@ -180,7 +178,6 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Frilled Cave-Wurm", 57, Rarity.COMMON, mage.cards.f.FrilledCaveWurm.class));
|
cards.add(new SetCardInfo("Frilled Cave-Wurm", 57, Rarity.COMMON, mage.cards.f.FrilledCaveWurm.class));
|
||||||
cards.add(new SetCardInfo("Fungal Fortitude", 106, Rarity.COMMON, mage.cards.f.FungalFortitude.class));
|
cards.add(new SetCardInfo("Fungal Fortitude", 106, Rarity.COMMON, mage.cards.f.FungalFortitude.class));
|
||||||
cards.add(new SetCardInfo("Gargantuan Leech", 107, Rarity.UNCOMMON, mage.cards.g.GargantuanLeech.class));
|
cards.add(new SetCardInfo("Gargantuan Leech", 107, Rarity.UNCOMMON, mage.cards.g.GargantuanLeech.class));
|
||||||
cards.add(new SetCardInfo("Geode Grotto", 146, Rarity.UNCOMMON, mage.cards.g.GeodeGrotto.class));
|
|
||||||
cards.add(new SetCardInfo("Geological Appraiser", 150, Rarity.UNCOMMON, mage.cards.g.GeologicalAppraiser.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Geological Appraiser", 150, Rarity.UNCOMMON, mage.cards.g.GeologicalAppraiser.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Geological Appraiser", 407, Rarity.UNCOMMON, mage.cards.g.GeologicalAppraiser.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Geological Appraiser", 407, Rarity.UNCOMMON, mage.cards.g.GeologicalAppraiser.class, NON_FULL_USE_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Get Lost", 14, Rarity.RARE, mage.cards.g.GetLost.class, NON_FULL_USE_VARIOUS));
|
cards.add(new SetCardInfo("Get Lost", 14, Rarity.RARE, mage.cards.g.GetLost.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@ public class XLNTreasureChest extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Growing Rites of Itlimoc", 191, Rarity.RARE, mage.cards.g.GrowingRitesOfItlimoc.class));
|
cards.add(new SetCardInfo("Growing Rites of Itlimoc", 191, Rarity.RARE, mage.cards.g.GrowingRitesOfItlimoc.class));
|
||||||
cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", 191, Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class));
|
cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", 191, Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class));
|
||||||
cards.add(new SetCardInfo("Legion's Landing", 22, Rarity.RARE, mage.cards.l.LegionsLanding.class));
|
cards.add(new SetCardInfo("Legion's Landing", 22, Rarity.RARE, mage.cards.l.LegionsLanding.class));
|
||||||
cards.add(new SetCardInfo("Lost Vale", 235, Rarity.RARE, mage.cards.l.LostVale.class));
|
|
||||||
cards.add(new SetCardInfo("Primal Amulet", 243, Rarity.RARE, mage.cards.p.PrimalAmulet.class));
|
cards.add(new SetCardInfo("Primal Amulet", 243, Rarity.RARE, mage.cards.p.PrimalAmulet.class));
|
||||||
cards.add(new SetCardInfo("Primal Wellspring", 243, Rarity.RARE, mage.cards.p.PrimalWellspring.class));
|
cards.add(new SetCardInfo("Primal Wellspring", 243, Rarity.RARE, mage.cards.p.PrimalWellspring.class));
|
||||||
cards.add(new SetCardInfo("Search for Azcanta", 74, Rarity.RARE, mage.cards.s.SearchForAzcanta.class));
|
cards.add(new SetCardInfo("Search for Azcanta", 74, Rarity.RARE, mage.cards.s.SearchForAzcanta.class));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue