convert transforming "F" cards to single class file

This commit is contained in:
jmlundeen 2025-11-29 10:55:56 -06:00
parent 7da85577ef
commit f550f077d0
18 changed files with 257 additions and 447 deletions

View file

@ -1,60 +0,0 @@
package mage.cards.e;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SpellControlledDealsDamageTriggeredAbility;
import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class EmbodimentOfFlame extends CardImpl {
public EmbodimentOfFlame(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.ELEMENTAL);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
this.color.setRed(true);
this.nightCard = true;
// Whenever a spell you control deals damage, put a flame counter on Embodiment of Flame.
this.addAbility(new SpellControlledDealsDamageTriggeredAbility(Zone.BATTLEFIELD,
new AddCountersSourceEffect(CounterType.FLAME.createInstance()),
StaticFilters.FILTER_SPELL, false
));
// {1}, Remove a flame counter from Embodiment of Flame: Exile the top card of your library. You may play that card this turn.
Ability ability = new SimpleActivatedAbility(
new ExileTopXMayPlayUntilEffect(1, Duration.EndOfTurn),
new GenericManaCost(1)
);
ability.addCost(new RemoveCountersSourceCost(CounterType.FLAME.createInstance()));
this.addAbility(ability);
}
private EmbodimentOfFlame(final EmbodimentOfFlame card) {
super(card);
}
@Override
public EmbodimentOfFlame copy() {
return new EmbodimentOfFlame(this);
}
}

View file

@ -1,45 +1,74 @@
package mage.cards.f; package mage.cards.f;
import mage.abilities.Ability;
import mage.abilities.common.SagaAbility; import mage.abilities.common.SagaAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect; import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect;
import mage.abilities.effects.common.discard.DiscardAndDrawThatManyEffect; import mage.abilities.effects.common.discard.DiscardAndDrawThatManyEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.cards.TransformingDoubleFacedCard;
import mage.constants.SagaChapter; import mage.constants.*;
import mage.constants.SubType; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.FableOfTheMirrorBreakerToken; import mage.game.permanent.token.FableOfTheMirrorBreakerToken;
import mage.target.TargetPermanent;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID; import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class FableOfTheMirrorBreaker extends CardImpl { public final class FableOfTheMirrorBreaker extends TransformingDoubleFacedCard {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another nonlegendary creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(Predicates.not(SuperType.LEGENDARY.getPredicate()));
}
public FableOfTheMirrorBreaker(UUID ownerId, CardSetInfo setInfo) { public FableOfTheMirrorBreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}"); super(ownerId, setInfo,
new SuperType[]{}, new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.SAGA}, "{2}{R}",
this.subtype.add(SubType.SAGA); "Reflection of Kiki-Jiki",
this.secondSideCardClazz = mage.cards.r.ReflectionOfKikiJiki.class; new SuperType[]{}, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, new SubType[]{SubType.GOBLIN, SubType.SHAMAN}, "R"
);
// Fable of the Mirror-Breaker
// (As this Saga enters and after your draw step, add a lore counter.) // (As this Saga enters and after your draw step, add a lore counter.)
SagaAbility sagaAbility = new SagaAbility(this); SagaAbility sagaAbility = new SagaAbility(this.getLeftHalfCard());
// I Create a 2/2 red Goblin Shaman creature token with "Whenever this creature attacks, create a Treasure token." // I Create a 2/2 red Goblin Shaman creature token with "Whenever this creature attacks, create a Treasure token."
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I, new CreateTokenEffect(new FableOfTheMirrorBreakerToken())); sagaAbility.addChapterEffect(this.getLeftHalfCard(), SagaChapter.CHAPTER_I, new CreateTokenEffect(new FableOfTheMirrorBreakerToken()));
// II You may discard up to two cards. If you do, draw that many cards. // II You may discard up to two cards. If you do, draw that many cards.
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, new DiscardAndDrawThatManyEffect(2) sagaAbility.addChapterEffect(this.getLeftHalfCard(), SagaChapter.CHAPTER_II, new DiscardAndDrawThatManyEffect(2)
.setText("you may discard up to two cards. If you do, draw that many cards")); .setText("you may discard up to two cards. If you do, draw that many cards"));
// III Exile this Saga, then return it to the battlefield transformed under your control. // III Exile this Saga, then return it to the battlefield transformed under your control.
this.addAbility(new TransformAbility()); sagaAbility.addChapterEffect(this.getLeftHalfCard(), SagaChapter.CHAPTER_III, new ExileSagaAndReturnTransformedEffect());
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, new ExileSagaAndReturnTransformedEffect());
this.addAbility(sagaAbility); this.getLeftHalfCard().addAbility(sagaAbility);
// Reflection of Kiki-Jiki
this.getRightHalfCard().setPT(2, 2);
// {1}, {T}: Create a token that's a copy of another target nonlegendary creature you control, except it has haste. Sacrifice it at the beginning of the next end step.
Ability ability = new SimpleActivatedAbility(new ReflectionOfKikiJikiEffect(), new GenericManaCost(1));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPermanent(filter));
this.getRightHalfCard().addAbility(ability);
} }
private FableOfTheMirrorBreaker(final FableOfTheMirrorBreaker card) { private FableOfTheMirrorBreaker(final FableOfTheMirrorBreaker card) {
@ -51,3 +80,35 @@ public final class FableOfTheMirrorBreaker extends CardImpl {
return new FableOfTheMirrorBreaker(this); return new FableOfTheMirrorBreaker(this);
} }
} }
class ReflectionOfKikiJikiEffect extends OneShotEffect {
ReflectionOfKikiJikiEffect() {
super(Outcome.Benefit);
staticText = "create a token that's a copy of another target nonlegendary creature you control, " +
"except it has haste. Sacrifice it at the beginning of the next end step";
}
private ReflectionOfKikiJikiEffect(final ReflectionOfKikiJikiEffect effect) {
super(effect);
}
@Override
public ReflectionOfKikiJikiEffect copy() {
return new ReflectionOfKikiJikiEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source);
if (permanent == null) {
return false;
}
CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(null, null, true);
effect.setTargetPointer(new FixedTarget(source.getFirstTarget(), game));
effect.apply(game, source);
effect.sacrificeTokensCreatedAtNextEndStep(game, source);
return true;
}
}

View file

@ -1,15 +1,16 @@
package mage.cards.f; package mage.cards.f;
import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.DayboundAbility; import mage.abilities.keyword.DayboundAbility;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl; import mage.abilities.keyword.NightboundAbility;
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.Duration;
import mage.constants.SubType; import mage.constants.SubType;
@ -19,16 +20,17 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class FangbladeBrigand extends CardImpl { public final class FangbladeBrigand extends TransformingDoubleFacedCard {
public FangbladeBrigand(UUID ownerId, CardSetInfo setInfo) { public FangbladeBrigand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); super(ownerId, setInfo,
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{3}{R}",
"Fangblade Eviscerator",
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "R"
);
this.subtype.add(SubType.HUMAN); // Fangblade Brigand
this.subtype.add(SubType.WEREWOLF); this.getLeftHalfCard().setPT(3, 4);
this.power = new MageInt(3);
this.toughness = new MageInt(4);
this.secondSideCardClazz = mage.cards.f.FangbladeEviscerator.class;
// {1}{R}: Fangblade Brigand gets +1/+0 and gains first strike until end of turn. // {1}{R}: Fangblade Brigand gets +1/+0 and gains first strike until end of turn.
Ability ability = new SimpleActivatedAbility(new BoostSourceEffect( Ability ability = new SimpleActivatedAbility(new BoostSourceEffect(
@ -37,10 +39,30 @@ public final class FangbladeBrigand extends CardImpl {
ability.addEffect(new GainAbilitySourceEffect( ability.addEffect(new GainAbilitySourceEffect(
FirstStrikeAbility.getInstance(), Duration.EndOfTurn FirstStrikeAbility.getInstance(), Duration.EndOfTurn
).setText("and gains first strike until end of turn")); ).setText("and gains first strike until end of turn"));
this.addAbility(ability); this.getLeftHalfCard().addAbility(ability);
// Daybound // Daybound
this.addAbility(new DayboundAbility()); this.getLeftHalfCard().addAbility(new DayboundAbility());
// Fangblade Eviscerator
this.getRightHalfCard().setPT(4, 5);
// {1}{R}: Fangblade Eviscerator gets +1/+0 and gains first strike until end of turn.
ability = new SimpleActivatedAbility(new BoostSourceEffect(
1, 0, Duration.EndOfTurn
).setText("{this} gets +1/+0"), new ManaCostsImpl<>("{1}{R}"));
ability.addEffect(new GainAbilitySourceEffect(
FirstStrikeAbility.getInstance(), Duration.EndOfTurn
).setText("and gains first strike until end of turn"));
this.getRightHalfCard().addAbility(ability);
// {4}{R}: Creatures you control get +2/+0 until end of turn.
this.getRightHalfCard().addAbility(new SimpleActivatedAbility(new BoostControlledEffect(
2, 0, Duration.EndOfTurn
), new ManaCostsImpl<>("{4}{R}")));
// Nightbound
this.getRightHalfCard().addAbility(new NightboundAbility());
} }
private FangbladeBrigand(final FangbladeBrigand card) { private FangbladeBrigand(final FangbladeBrigand card) {

View file

@ -1,60 +0,0 @@
package mage.cards.f;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.NightboundAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class FangbladeEviscerator extends CardImpl {
public FangbladeEviscerator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(4);
this.toughness = new MageInt(5);
this.color.setRed(true);
this.nightCard = true;
// {1}{R}: Fangblade Eviscerator gets +1/+0 and gains first strike until end of turn.
Ability ability = new SimpleActivatedAbility(new BoostSourceEffect(
1, 0, Duration.EndOfTurn
).setText("{this} gets +1/+0"), new ManaCostsImpl<>("{1}{R}"));
ability.addEffect(new GainAbilitySourceEffect(
FirstStrikeAbility.getInstance(), Duration.EndOfTurn
).setText("and gains first strike until end of turn"));
this.addAbility(ability);
// {4}{R}: Creatures you control get +2/+0 until end of turn.
this.addAbility(new SimpleActivatedAbility(new BoostControlledEffect(
2, 0, Duration.EndOfTurn
), new ManaCostsImpl<>("{4}{R}")));
// Nightbound
this.addAbility(new NightboundAbility());
}
private FangbladeEviscerator(final FangbladeEviscerator card) {
super(card);
}
@Override
public FangbladeEviscerator copy() {
return new FangbladeEviscerator(this);
}
}

View file

@ -1,10 +1,10 @@
package mage.cards.f; package mage.cards.f;
import mage.MageInt;
import mage.abilities.keyword.DayboundAbility; import mage.abilities.keyword.DayboundAbility;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl; import mage.abilities.keyword.NightboundAbility;
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;
@ -13,22 +13,32 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class FearfulVillager extends CardImpl { public final class FearfulVillager extends TransformingDoubleFacedCard {
public FearfulVillager(UUID ownerId, CardSetInfo setInfo) { public FearfulVillager(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); super(ownerId, setInfo,
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{2}{R}",
"Fearsome Werewolf",
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "R"
);
this.subtype.add(SubType.HUMAN); // Fearful Villager
this.subtype.add(SubType.WEREWOLF); this.getLeftHalfCard().setPT(2, 3);
this.power = new MageInt(2);
this.toughness = new MageInt(3);
this.secondSideCardClazz = mage.cards.f.FearsomeWerewolf.class;
// Menace // Menace
this.addAbility(new MenaceAbility()); this.getLeftHalfCard().addAbility(new MenaceAbility());
// Daybound // Daybound
this.addAbility(new DayboundAbility()); this.getLeftHalfCard().addAbility(new DayboundAbility());
// Fearsome Werewolf
this.getRightHalfCard().setPT(4, 3);
// Menace
this.getRightHalfCard().addAbility(new MenaceAbility());
// Nightbound
this.getRightHalfCard().addAbility(new NightboundAbility());
} }
private FearfulVillager(final FearfulVillager card) { private FearfulVillager(final FearfulVillager card) {

View file

@ -1,42 +0,0 @@
package mage.cards.f;
import mage.MageInt;
import mage.abilities.keyword.MenaceAbility;
import mage.abilities.keyword.NightboundAbility;
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 FearsomeWerewolf extends CardImpl {
public FearsomeWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(4);
this.toughness = new MageInt(3);
this.color.setRed(true);
this.nightCard = true;
// Menace
this.addAbility(new MenaceAbility());
// Nightbound
this.addAbility(new NightboundAbility());
}
private FearsomeWerewolf(final FearsomeWerewolf card) {
super(card);
}
@Override
public FearsomeWerewolf copy() {
return new FearsomeWerewolf(this);
}
}

View file

@ -1,14 +1,20 @@
package mage.cards.f; package mage.cards.f;
import mage.MageInt; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SpellControlledDealsDamageTriggeredAbility; import mage.abilities.common.SpellControlledDealsDamageTriggeredAbility;
import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
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.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import java.util.UUID; import java.util.UUID;
@ -16,22 +22,39 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class FlameChanneler extends CardImpl { public final class FlameChanneler extends TransformingDoubleFacedCard {
public FlameChanneler(UUID ownerId, CardSetInfo setInfo) { public FlameChanneler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); super(ownerId, setInfo,
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WIZARD}, "{1}{R}",
"Embodiment of Flame",
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ELEMENTAL, SubType.WIZARD}, "R"
);
this.subtype.add(SubType.HUMAN); // Flame Channeler
this.subtype.add(SubType.WIZARD); this.getLeftHalfCard().setPT(2, 2);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.secondSideCardClazz = mage.cards.e.EmbodimentOfFlame.class;
// When a spell you control deals damage, transform Flame Channeler. // When a spell you control deals damage, transform Flame Channeler.
this.addAbility(new TransformAbility()); this.getLeftHalfCard().addAbility(new SpellControlledDealsDamageTriggeredAbility(Zone.BATTLEFIELD,
this.addAbility(new SpellControlledDealsDamageTriggeredAbility(Zone.BATTLEFIELD,
new TransformSourceEffect(), StaticFilters.FILTER_SPELL, false new TransformSourceEffect(), StaticFilters.FILTER_SPELL, false
).setTriggerPhrase("When a spell you control deals damage, ")); ).setTriggerPhrase("When a spell you control deals damage, "));
// Embodiment of Flame
this.getRightHalfCard().setPT(3, 3);
// Whenever a spell you control deals damage, put a flame counter on Embodiment of Flame.
this.getRightHalfCard().addAbility(new SpellControlledDealsDamageTriggeredAbility(Zone.BATTLEFIELD,
new AddCountersSourceEffect(CounterType.FLAME.createInstance()),
StaticFilters.FILTER_SPELL, false
));
// {1}, Remove a flame counter from Embodiment of Flame: Exile the top card of your library. You may play that card this turn.
Ability ability = new SimpleActivatedAbility(
new ExileTopXMayPlayUntilEffect(1, Duration.EndOfTurn),
new GenericManaCost(1)
);
ability.addCost(new RemoveCountersSourceCost(CounterType.FLAME.createInstance()));
this.getRightHalfCard().addAbility(ability);
} }
private FlameChanneler(final FlameChanneler card) { private FlameChanneler(final FlameChanneler card) {

View file

@ -1,8 +1,8 @@
package mage.cards.f; package mage.cards.f;
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.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.DiscardHandCost; import mage.abilities.costs.common.DiscardHandCost;
import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.SacrificeTargetCost;
@ -10,10 +10,11 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.keyword.LivingMetalAbility;
import mage.abilities.keyword.MenaceAbility;
import mage.abilities.keyword.MoreThanMeetsTheEyeAbility; import mage.abilities.keyword.MoreThanMeetsTheEyeAbility;
import mage.cards.Card; import mage.cards.*;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterControlledArtifactPermanent; import mage.filter.common.FilterControlledArtifactPermanent;
@ -29,7 +30,7 @@ import java.util.stream.Collectors;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class FlamewarBrashVeteran extends CardImpl { public final class FlamewarBrashVeteran extends TransformingDoubleFacedCard {
private static final FilterControlledPermanent filter private static final FilterControlledPermanent filter
= new FilterControlledArtifactPermanent("another artifact"); = new FilterControlledArtifactPermanent("another artifact");
@ -39,28 +40,46 @@ public final class FlamewarBrashVeteran extends CardImpl {
} }
public FlamewarBrashVeteran(UUID ownerId, CardSetInfo setInfo) { public FlamewarBrashVeteran(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{B}{R}"); super(ownerId, setInfo,
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, new SubType[]{SubType.ROBOT}, "{1}{B}{R}",
"Flamewar, Streetwise Operative",
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ARTIFACT}, new SubType[]{SubType.VEHICLE}, "BR"
);
this.supertype.add(SuperType.LEGENDARY); // Flamewar, Brash Veteran
this.subtype.add(SubType.ROBOT); this.getLeftHalfCard().setPT(3, 2);
this.power = new MageInt(3);
this.toughness = new MageInt(2);
this.secondSideCardClazz = mage.cards.f.FlamewarStreetwiseOperative.class;
// More Than Meets the Eye {B}{R} // More Than Meets the Eye {B}{R}
this.addAbility(new MoreThanMeetsTheEyeAbility(this, "{B}{R}")); this.getLeftHalfCard().addAbility(new MoreThanMeetsTheEyeAbility(this, "{B}{R}"));
// Sacrifice another artifact: Put a +1/+1 counter on Flamewar and convert it. Activate only as a sorcery. // Sacrifice another artifact: Put a +1/+1 counter on Flamewar and convert it. Activate only as a sorcery.
Ability ability = new ActivateAsSorceryActivatedAbility( Ability ability = new ActivateAsSorceryActivatedAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new SacrificeTargetCost(filter) new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new SacrificeTargetCost(filter)
); );
ability.addEffect(new TransformSourceEffect().setText("and convert it")); ability.addEffect(new TransformSourceEffect().setText("and convert it"));
this.addAbility(ability); this.getLeftHalfCard().addAbility(ability);
// {1}, Discard your hand: Put all exiled cards you own with intel counters on them into your hand. // {1}, Discard your hand: Put all exiled cards you own with intel counters on them into your hand.
ability = new SimpleActivatedAbility(new FlamewarBrashVeteranEffect(), new GenericManaCost(1)); ability = new SimpleActivatedAbility(new FlamewarBrashVeteranEffect(), new GenericManaCost(1));
ability.addCost(new DiscardHandCost()); ability.addCost(new DiscardHandCost());
this.addAbility(ability); this.getLeftHalfCard().addAbility(ability);
// Flamewar, Streetwise Operative
this.getRightHalfCard().setPT(2, 1);
// Living metal
this.getRightHalfCard().addAbility(new LivingMetalAbility());
// Menace
this.getRightHalfCard().addAbility(new MenaceAbility(false));
// Deathtouch
this.getRightHalfCard().addAbility(DeathtouchAbility.getInstance());
// Whenever Flamewar deals combat damage to a player, exile that many cards from the top of your library face down. Put an intel counter on each of them. Convert Flamewar.
Ability backAbility = new DealsCombatDamageToAPlayerTriggeredAbility(new FlamewarStreetwiseOperativeEffect(), false);
backAbility.addEffect(new TransformSourceEffect().setText("convert {this}"));
this.getRightHalfCard().addAbility(backAbility);
} }
private FlamewarBrashVeteran(final FlamewarBrashVeteran card) { private FlamewarBrashVeteran(final FlamewarBrashVeteran card) {
@ -104,3 +123,38 @@ class FlamewarBrashVeteranEffect extends OneShotEffect {
return !cards.isEmpty() && player.moveCards(cards, Zone.HAND, source, game); return !cards.isEmpty() && player.moveCards(cards, Zone.HAND, source, game);
} }
} }
class FlamewarStreetwiseOperativeEffect extends OneShotEffect {
FlamewarStreetwiseOperativeEffect() {
super(Outcome.Benefit);
staticText = "exile that many cards from the top of your library face down. " +
"Put an intel counter on each of them";
}
private FlamewarStreetwiseOperativeEffect(final FlamewarStreetwiseOperativeEffect effect) {
super(effect);
}
@Override
public FlamewarStreetwiseOperativeEffect copy() {
return new FlamewarStreetwiseOperativeEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
int damage = (Integer) getValue("damage");
if (player == null || damage < 1) {
return false;
}
Cards cards = new CardsImpl(player.getLibrary().getTopCards(game, damage));
player.moveCards(cards, Zone.EXILED, source, game);
cards.retainZone(Zone.EXILED, game);
cards.getCards(game).forEach(card -> {
card.setFaceDown(true, game);
card.addCounters(CounterType.INTEL.createInstance(), source, game);
});
return true;
}
}

View file

@ -1,96 +0,0 @@
package mage.cards.f;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.keyword.LivingMetalAbility;
import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.*;
import mage.counters.CounterType;
import mage.game.Game;
import mage.players.Player;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class FlamewarStreetwiseOperative extends CardImpl {
public FlamewarStreetwiseOperative(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.VEHICLE);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
this.color.setRed(true);
this.color.setBlack(true);
this.nightCard = true;
// Living metal
this.addAbility(new LivingMetalAbility());
// Menace
this.addAbility(new MenaceAbility(false));
// Deathtouch
this.addAbility(DeathtouchAbility.getInstance());
// Whenever Flamewar deals combat damage to a player, exile that many cards from the top of your library face down. Put an intel counter on each of them. Convert Flamewar.
Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new FlamewarStreetwiseOperativeEffect(), false);
ability.addEffect(new TransformSourceEffect().setText("convert {this}"));
this.addAbility(ability);
}
private FlamewarStreetwiseOperative(final FlamewarStreetwiseOperative card) {
super(card);
}
@Override
public FlamewarStreetwiseOperative copy() {
return new FlamewarStreetwiseOperative(this);
}
}
class FlamewarStreetwiseOperativeEffect extends OneShotEffect {
FlamewarStreetwiseOperativeEffect() {
super(Outcome.Benefit);
staticText = "exile that many cards from the top of your library face down. " +
"Put an intel counter on each of them";
}
private FlamewarStreetwiseOperativeEffect(final FlamewarStreetwiseOperativeEffect effect) {
super(effect);
}
@Override
public FlamewarStreetwiseOperativeEffect copy() {
return new FlamewarStreetwiseOperativeEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
int damage = (Integer) getValue("damage");
if (player == null || damage < 1) {
return false;
}
Cards cards = new CardsImpl(player.getLibrary().getTopCards(game, damage));
player.moveCards(cards, Zone.EXILED, source, game);
cards.retainZone(Zone.EXILED, game);
cards.getCards(game).stream().forEach(card -> {
card.setFaceDown(true, game);
card.addCounters(CounterType.INTEL.createInstance(), source, game);
});
return true;
}
}

View file

@ -1,49 +1,57 @@
package mage.cards.f; package mage.cards.f;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.common.SourceHasCounterCondition; import mage.abilities.condition.common.SourceHasCounterCondition;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
import mage.abilities.mana.AnyColorManaAbility; import mage.abilities.mana.AnyColorManaAbility;
import mage.constants.SubType; import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.cards.CardImpl; import mage.abilities.triggers.BeginningOfFirstMainTriggeredAbility;
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.TargetController; import mage.constants.TargetController;
import mage.counters.CounterType; import mage.counters.CounterType;
import java.util.UUID;
/** /**
* *
* @author weirddan455 * @author weirddan455
*/ */
public final class ForebodingStatue extends CardImpl { public final class ForebodingStatue extends TransformingDoubleFacedCard {
public ForebodingStatue(UUID ownerId, CardSetInfo setInfo) { public ForebodingStatue(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}"); super(ownerId, setInfo,
new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, new SubType[]{SubType.CONSTRUCT}, "{3}",
"Forsaken Thresher",
new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, new SubType[]{SubType.CONSTRUCT}, ""
);
this.subtype.add(SubType.CONSTRUCT); // Foreboding Statue
this.power = new MageInt(1); this.getLeftHalfCard().setPT(1, 2);
this.toughness = new MageInt(2);
this.secondSideCardClazz = mage.cards.f.ForsakenThresher.class;
// {T}: Add one mana of any color. Put an omen counter on Foreboding Statue. // {T}: Add one mana of any color. Put an omen counter on Foreboding Statue.
Ability ability = new AnyColorManaAbility(); Ability ability = new AnyColorManaAbility();
ability.addEffect(new AddCountersSourceEffect(CounterType.OMEN.createInstance())); ability.addEffect(new AddCountersSourceEffect(CounterType.OMEN.createInstance()));
this.addAbility(ability); this.getLeftHalfCard().addAbility(ability);
// At the beginning of your end step, if there are three or more omen counters on Foreboding Statue, untap it, then transform it. // At the beginning of your end step, if there are three or more omen counters on Foreboding Statue, untap it, then transform it.
this.addAbility(new TransformAbility());
ability = new BeginningOfEndStepTriggeredAbility( ability = new BeginningOfEndStepTriggeredAbility(
TargetController.YOU, new UntapSourceEffect().setText("untap it,"), TargetController.YOU, new UntapSourceEffect().setText("untap it,"),
false, new SourceHasCounterCondition(CounterType.OMEN, 3) false, new SourceHasCounterCondition(CounterType.OMEN, 3)
); );
ability.addEffect(new TransformSourceEffect().setText("then transform it")); ability.addEffect(new TransformSourceEffect().setText("then transform it"));
this.addAbility(ability); this.getLeftHalfCard().addAbility(ability);
// Forsaken Thresher
this.getRightHalfCard().setPT(5, 5);
// At the beginning of your precombat main phase, add one mana of any color.
this.getRightHalfCard().addAbility(new BeginningOfFirstMainTriggeredAbility(new AddManaOfAnyColorEffect()));
} }
private ForebodingStatue(final ForebodingStatue card) { private ForebodingStatue(final ForebodingStatue card) {

View file

@ -1,97 +0,0 @@
package mage.cards.r;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class ReflectionOfKikiJiki extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another nonlegendary creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(Predicates.not(SuperType.LEGENDARY.getPredicate()));
}
public ReflectionOfKikiJiki(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "");
this.subtype.add(SubType.GOBLIN);
this.subtype.add(SubType.SHAMAN);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.color.setRed(true);
this.nightCard = true;
// {1}, {T}: Create a token that's a copy of another target nonlegendary creature you control, except it has haste. Sacrifice it at the beginning of the next end step.
Ability ability = new SimpleActivatedAbility(new ReflectionOfKikiJikiEffect(), new GenericManaCost(1));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
private ReflectionOfKikiJiki(final ReflectionOfKikiJiki card) {
super(card);
}
@Override
public ReflectionOfKikiJiki copy() {
return new ReflectionOfKikiJiki(this);
}
}
class ReflectionOfKikiJikiEffect extends OneShotEffect {
ReflectionOfKikiJikiEffect() {
super(Outcome.Benefit);
staticText = "create a token that's a copy of another target nonlegendary creature you control, " +
"except it has haste. Sacrifice it at the beginning of the next end step";
}
private ReflectionOfKikiJikiEffect(final ReflectionOfKikiJikiEffect effect) {
super(effect);
}
@Override
public ReflectionOfKikiJikiEffect copy() {
return new ReflectionOfKikiJikiEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source);
if (permanent == null) {
return false;
}
CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(null, null, true);
effect.setTargetPointer(new FixedTarget(source.getFirstTarget(), game));
effect.apply(game, source);
effect.sacrificeTokensCreatedAtNextEndStep(game, source);
return true;
}
}

View file

@ -188,7 +188,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
cards.add(new SetCardInfo("Falkenrath Forebear", 334, Rarity.RARE, mage.cards.f.FalkenrathForebear.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Falkenrath Forebear", 334, Rarity.RARE, mage.cards.f.FalkenrathForebear.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fear of Death", 59, Rarity.COMMON, mage.cards.f.FearOfDeath.class)); cards.add(new SetCardInfo("Fear of Death", 59, Rarity.COMMON, mage.cards.f.FearOfDeath.class));
cards.add(new SetCardInfo("Fearful Villager", 157, Rarity.COMMON, mage.cards.f.FearfulVillager.class)); cards.add(new SetCardInfo("Fearful Villager", 157, Rarity.COMMON, mage.cards.f.FearfulVillager.class));
cards.add(new SetCardInfo("Fearsome Werewolf", 157, Rarity.COMMON, mage.cards.f.FearsomeWerewolf.class));
cards.add(new SetCardInfo("Fell Stinger", 112, Rarity.UNCOMMON, mage.cards.f.FellStinger.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fell Stinger", 112, Rarity.UNCOMMON, mage.cards.f.FellStinger.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fell Stinger", 406, Rarity.UNCOMMON, mage.cards.f.FellStinger.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fell Stinger", 406, Rarity.UNCOMMON, mage.cards.f.FellStinger.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fierce Retribution", 13, Rarity.COMMON, mage.cards.f.FierceRetribution.class)); cards.add(new SetCardInfo("Fierce Retribution", 13, Rarity.COMMON, mage.cards.f.FierceRetribution.class));

View file

@ -207,7 +207,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
cards.add(new SetCardInfo("Edgar's Awakening", 377, Rarity.UNCOMMON, mage.cards.e.EdgarsAwakening.class)); cards.add(new SetCardInfo("Edgar's Awakening", 377, Rarity.UNCOMMON, mage.cards.e.EdgarsAwakening.class));
cards.add(new SetCardInfo("Edgar, Charmed Groom", 503, Rarity.RARE, mage.cards.e.EdgarCharmedGroom.class)); cards.add(new SetCardInfo("Edgar, Charmed Groom", 503, Rarity.RARE, mage.cards.e.EdgarCharmedGroom.class));
cards.add(new SetCardInfo("Electric Revelation", 135, Rarity.COMMON, mage.cards.e.ElectricRevelation.class)); cards.add(new SetCardInfo("Electric Revelation", 135, Rarity.COMMON, mage.cards.e.ElectricRevelation.class));
cards.add(new SetCardInfo("Embodiment of Flame", 141, Rarity.UNCOMMON, mage.cards.e.EmbodimentOfFlame.class));
cards.add(new SetCardInfo("End the Festivities", 422, Rarity.COMMON, mage.cards.e.EndTheFestivities.class)); cards.add(new SetCardInfo("End the Festivities", 422, Rarity.COMMON, mage.cards.e.EndTheFestivities.class));
cards.add(new SetCardInfo("Endless Ranks of the Dead", 535, Rarity.RARE, mage.cards.e.EndlessRanksOfTheDead.class)); cards.add(new SetCardInfo("Endless Ranks of the Dead", 535, Rarity.RARE, mage.cards.e.EndlessRanksOfTheDead.class));
cards.add(new SetCardInfo("Enduring Angel", 17, Rarity.MYTHIC, mage.cards.e.EnduringAngel.class)); cards.add(new SetCardInfo("Enduring Angel", 17, Rarity.MYTHIC, mage.cards.e.EnduringAngel.class));
@ -225,11 +224,9 @@ public final class InnistradDoubleFeature extends ExpansionSet {
cards.add(new SetCardInfo("Falkenrath Pit Fighter", 137, Rarity.RARE, mage.cards.f.FalkenrathPitFighter.class)); cards.add(new SetCardInfo("Falkenrath Pit Fighter", 137, Rarity.RARE, mage.cards.f.FalkenrathPitFighter.class));
cards.add(new SetCardInfo("Famished Foragers", 138, Rarity.COMMON, mage.cards.f.FamishedForagers.class)); cards.add(new SetCardInfo("Famished Foragers", 138, Rarity.COMMON, mage.cards.f.FamishedForagers.class));
cards.add(new SetCardInfo("Fangblade Brigand", 139, Rarity.UNCOMMON, mage.cards.f.FangbladeBrigand.class)); cards.add(new SetCardInfo("Fangblade Brigand", 139, Rarity.UNCOMMON, mage.cards.f.FangbladeBrigand.class));
cards.add(new SetCardInfo("Fangblade Eviscerator", 139, Rarity.UNCOMMON, mage.cards.f.FangbladeEviscerator.class));
cards.add(new SetCardInfo("Fateful Absence", 18, Rarity.RARE, mage.cards.f.FatefulAbsence.class)); cards.add(new SetCardInfo("Fateful Absence", 18, Rarity.RARE, mage.cards.f.FatefulAbsence.class));
cards.add(new SetCardInfo("Fear of Death", 326, Rarity.COMMON, mage.cards.f.FearOfDeath.class)); cards.add(new SetCardInfo("Fear of Death", 326, Rarity.COMMON, mage.cards.f.FearOfDeath.class));
cards.add(new SetCardInfo("Fearful Villager", 424, Rarity.COMMON, mage.cards.f.FearfulVillager.class)); cards.add(new SetCardInfo("Fearful Villager", 424, Rarity.COMMON, mage.cards.f.FearfulVillager.class));
cards.add(new SetCardInfo("Fearsome Werewolf", 424, Rarity.COMMON, mage.cards.f.FearsomeWerewolf.class));
cards.add(new SetCardInfo("Fell Stinger", 379, Rarity.UNCOMMON, mage.cards.f.FellStinger.class)); cards.add(new SetCardInfo("Fell Stinger", 379, Rarity.UNCOMMON, mage.cards.f.FellStinger.class));
cards.add(new SetCardInfo("Festival Crasher", 140, Rarity.COMMON, mage.cards.f.FestivalCrasher.class)); cards.add(new SetCardInfo("Festival Crasher", 140, Rarity.COMMON, mage.cards.f.FestivalCrasher.class));
cards.add(new SetCardInfo("Field of Ruin", 262, Rarity.UNCOMMON, mage.cards.f.FieldOfRuin.class)); cards.add(new SetCardInfo("Field of Ruin", 262, Rarity.UNCOMMON, mage.cards.f.FieldOfRuin.class));

View file

@ -162,7 +162,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
cards.add(new SetCardInfo("Eccentric Farmer", 185, Rarity.COMMON, mage.cards.e.EccentricFarmer.class)); cards.add(new SetCardInfo("Eccentric Farmer", 185, Rarity.COMMON, mage.cards.e.EccentricFarmer.class));
cards.add(new SetCardInfo("Ecstatic Awakener", 100, Rarity.COMMON, mage.cards.e.EcstaticAwakener.class)); cards.add(new SetCardInfo("Ecstatic Awakener", 100, Rarity.COMMON, mage.cards.e.EcstaticAwakener.class));
cards.add(new SetCardInfo("Electric Revelation", 135, Rarity.COMMON, mage.cards.e.ElectricRevelation.class)); cards.add(new SetCardInfo("Electric Revelation", 135, Rarity.COMMON, mage.cards.e.ElectricRevelation.class));
cards.add(new SetCardInfo("Embodiment of Flame", 141, Rarity.UNCOMMON, mage.cards.e.EmbodimentOfFlame.class));
cards.add(new SetCardInfo("Enduring Angel", 17, Rarity.MYTHIC, mage.cards.e.EnduringAngel.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Enduring Angel", 17, Rarity.MYTHIC, mage.cards.e.EnduringAngel.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Enduring Angel", 327, Rarity.MYTHIC, mage.cards.e.EnduringAngel.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Enduring Angel", 327, Rarity.MYTHIC, mage.cards.e.EnduringAngel.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Evolving Wilds", 261, Rarity.COMMON, mage.cards.e.EvolvingWilds.class)); cards.add(new SetCardInfo("Evolving Wilds", 261, Rarity.COMMON, mage.cards.e.EvolvingWilds.class));
@ -175,8 +174,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
cards.add(new SetCardInfo("Famished Foragers", 138, Rarity.COMMON, mage.cards.f.FamishedForagers.class)); cards.add(new SetCardInfo("Famished Foragers", 138, Rarity.COMMON, mage.cards.f.FamishedForagers.class));
cards.add(new SetCardInfo("Fangblade Brigand", 139, Rarity.UNCOMMON, mage.cards.f.FangbladeBrigand.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fangblade Brigand", 139, Rarity.UNCOMMON, mage.cards.f.FangbladeBrigand.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fangblade Brigand", 292, Rarity.UNCOMMON, mage.cards.f.FangbladeBrigand.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fangblade Brigand", 292, Rarity.UNCOMMON, mage.cards.f.FangbladeBrigand.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fangblade Eviscerator", 139, Rarity.UNCOMMON, mage.cards.f.FangbladeEviscerator.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fangblade Eviscerator", 292, Rarity.UNCOMMON, mage.cards.f.FangbladeEviscerator.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fateful Absence", 18, Rarity.RARE, mage.cards.f.FatefulAbsence.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fateful Absence", 18, Rarity.RARE, mage.cards.f.FatefulAbsence.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fateful Absence", 328, Rarity.RARE, mage.cards.f.FatefulAbsence.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fateful Absence", 328, Rarity.RARE, mage.cards.f.FatefulAbsence.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Festival Crasher", 140, Rarity.COMMON, mage.cards.f.FestivalCrasher.class)); cards.add(new SetCardInfo("Festival Crasher", 140, Rarity.COMMON, mage.cards.f.FestivalCrasher.class));

View file

@ -419,9 +419,6 @@ public final class KamigawaNeonDynasty extends ExpansionSet {
cards.add(new SetCardInfo("Reckoner Bankbuster", 499, Rarity.RARE, mage.cards.r.ReckonerBankbuster.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Reckoner Bankbuster", 499, Rarity.RARE, mage.cards.r.ReckonerBankbuster.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Reckoner Shakedown", 119, Rarity.COMMON, mage.cards.r.ReckonerShakedown.class)); cards.add(new SetCardInfo("Reckoner Shakedown", 119, Rarity.COMMON, mage.cards.r.ReckonerShakedown.class));
cards.add(new SetCardInfo("Reckoner's Bargain", 120, Rarity.COMMON, mage.cards.r.ReckonersBargain.class)); cards.add(new SetCardInfo("Reckoner's Bargain", 120, Rarity.COMMON, mage.cards.r.ReckonersBargain.class));
cards.add(new SetCardInfo("Reflection of Kiki-Jiki", 141, Rarity.RARE, mage.cards.r.ReflectionOfKikiJiki.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Reflection of Kiki-Jiki", 357, Rarity.RARE, mage.cards.r.ReflectionOfKikiJiki.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Reflection of Kiki-Jiki", 465, Rarity.RARE, mage.cards.r.ReflectionOfKikiJiki.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Regent's Authority", 32, Rarity.COMMON, mage.cards.r.RegentsAuthority.class)); cards.add(new SetCardInfo("Regent's Authority", 32, Rarity.COMMON, mage.cards.r.RegentsAuthority.class));
cards.add(new SetCardInfo("Reinforced Ronin", 158, Rarity.UNCOMMON, mage.cards.r.ReinforcedRonin.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Reinforced Ronin", 158, Rarity.UNCOMMON, mage.cards.r.ReinforcedRonin.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Reinforced Ronin", 323, Rarity.UNCOMMON, mage.cards.r.ReinforcedRonin.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Reinforced Ronin", 323, Rarity.UNCOMMON, mage.cards.r.ReinforcedRonin.class, NON_FULL_USE_VARIOUS));

View file

@ -2179,7 +2179,6 @@ public class MagicOnlinePromos extends ExpansionSet {
cards.add(new SetCardInfo("Red Dragon", 92754, Rarity.UNCOMMON, mage.cards.r.RedDragon.class)); cards.add(new SetCardInfo("Red Dragon", 92754, Rarity.UNCOMMON, mage.cards.r.RedDragon.class));
cards.add(new SetCardInfo("Red Elemental Blast", 43610, Rarity.UNCOMMON, mage.cards.r.RedElementalBlast.class)); cards.add(new SetCardInfo("Red Elemental Blast", 43610, Rarity.UNCOMMON, mage.cards.r.RedElementalBlast.class));
cards.add(new SetCardInfo("Reflecting Pool", 62487, Rarity.RARE, mage.cards.r.ReflectingPool.class)); cards.add(new SetCardInfo("Reflecting Pool", 62487, Rarity.RARE, mage.cards.r.ReflectingPool.class));
cards.add(new SetCardInfo("Reflection of Kiki-Jiki", 98009, Rarity.RARE, mage.cards.r.ReflectionOfKikiJiki.class));
cards.add(new SetCardInfo("Reflections of Littjara", 88252, Rarity.RARE, mage.cards.r.ReflectionsOfLittjara.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Reflections of Littjara", 88252, Rarity.RARE, mage.cards.r.ReflectionsOfLittjara.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Reflections of Littjara", 88254, Rarity.RARE, mage.cards.r.ReflectionsOfLittjara.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Reflections of Littjara", 88254, Rarity.RARE, mage.cards.r.ReflectionsOfLittjara.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Regal Leosaur", 80967, Rarity.UNCOMMON, mage.cards.r.RegalLeosaur.class)); cards.add(new SetCardInfo("Regal Leosaur", 80967, Rarity.UNCOMMON, mage.cards.r.RegalLeosaur.class));

View file

@ -55,7 +55,6 @@ public final class StoreChampionships extends ExpansionSet {
cards.add(new SetCardInfo("Preacher of the Schism", 34, Rarity.RARE, mage.cards.p.PreacherOfTheSchism.class)); cards.add(new SetCardInfo("Preacher of the Schism", 34, Rarity.RARE, mage.cards.p.PreacherOfTheSchism.class));
cards.add(new SetCardInfo("Preordain", 39, Rarity.RARE, mage.cards.p.Preordain.class)); cards.add(new SetCardInfo("Preordain", 39, Rarity.RARE, mage.cards.p.Preordain.class));
cards.add(new SetCardInfo("Reality Smasher", 31, Rarity.RARE, mage.cards.r.RealitySmasher.class)); cards.add(new SetCardInfo("Reality Smasher", 31, Rarity.RARE, mage.cards.r.RealitySmasher.class));
cards.add(new SetCardInfo("Reflection of Kiki-Jiki", 44, Rarity.RARE, mage.cards.r.ReflectionOfKikiJiki.class));
cards.add(new SetCardInfo("Shark Typhoon", 28, Rarity.RARE, mage.cards.s.SharkTyphoon.class)); cards.add(new SetCardInfo("Shark Typhoon", 28, Rarity.RARE, mage.cards.s.SharkTyphoon.class));
cards.add(new SetCardInfo("Slickshot Show-Off", 43, Rarity.RARE, mage.cards.s.SlickshotShowOff.class)); cards.add(new SetCardInfo("Slickshot Show-Off", 43, Rarity.RARE, mage.cards.s.SlickshotShowOff.class));
cards.add(new SetCardInfo("Spell Pierce", 4, Rarity.RARE, mage.cards.s.SpellPierce.class)); cards.add(new SetCardInfo("Spell Pierce", 4, Rarity.RARE, mage.cards.s.SpellPierce.class));

View file

@ -23,7 +23,6 @@ public final class Transformers extends ExpansionSet {
cards.add(new SetCardInfo("Blitzwing, Cruel Tormentor", 4, Rarity.MYTHIC, mage.cards.b.BlitzwingCruelTormentor.class)); cards.add(new SetCardInfo("Blitzwing, Cruel Tormentor", 4, Rarity.MYTHIC, mage.cards.b.BlitzwingCruelTormentor.class));
cards.add(new SetCardInfo("Cyclonus, the Saboteur", 9, Rarity.MYTHIC, mage.cards.c.CyclonusTheSaboteur.class)); cards.add(new SetCardInfo("Cyclonus, the Saboteur", 9, Rarity.MYTHIC, mage.cards.c.CyclonusTheSaboteur.class));
cards.add(new SetCardInfo("Flamewar, Brash Veteran", 10, Rarity.MYTHIC, mage.cards.f.FlamewarBrashVeteran.class)); cards.add(new SetCardInfo("Flamewar, Brash Veteran", 10, Rarity.MYTHIC, mage.cards.f.FlamewarBrashVeteran.class));
cards.add(new SetCardInfo("Flamewar, Streetwise Operative", 10, Rarity.MYTHIC, mage.cards.f.FlamewarStreetwiseOperative.class));
cards.add(new SetCardInfo("Goldbug, Humanity's Ally", 11, Rarity.MYTHIC, mage.cards.g.GoldbugHumanitysAlly.class)); cards.add(new SetCardInfo("Goldbug, Humanity's Ally", 11, Rarity.MYTHIC, mage.cards.g.GoldbugHumanitysAlly.class));
cards.add(new SetCardInfo("Goldbug, Scrappy Scout", 11, Rarity.MYTHIC, mage.cards.g.GoldbugScrappyScout.class)); cards.add(new SetCardInfo("Goldbug, Scrappy Scout", 11, Rarity.MYTHIC, mage.cards.g.GoldbugScrappyScout.class));
cards.add(new SetCardInfo("Jetfire, Air Guardian", 3, Rarity.MYTHIC, mage.cards.j.JetfireAirGuardian.class)); cards.add(new SetCardInfo("Jetfire, Air Guardian", 3, Rarity.MYTHIC, mage.cards.j.JetfireAirGuardian.class));