diff --git a/Mage.Sets/src/mage/cards/e/EmbodimentOfFlame.java b/Mage.Sets/src/mage/cards/e/EmbodimentOfFlame.java deleted file mode 100644 index c98e0c8cdb0..00000000000 --- a/Mage.Sets/src/mage/cards/e/EmbodimentOfFlame.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/f/FableOfTheMirrorBreaker.java b/Mage.Sets/src/mage/cards/f/FableOfTheMirrorBreaker.java index d2777c8eba9..a1eb74364d7 100644 --- a/Mage.Sets/src/mage/cards/f/FableOfTheMirrorBreaker.java +++ b/Mage.Sets/src/mage/cards/f/FableOfTheMirrorBreaker.java @@ -1,45 +1,74 @@ package mage.cards.f; +import mage.abilities.Ability; 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.ExileSagaAndReturnTransformedEffect; import mage.abilities.effects.common.discard.DiscardAndDrawThatManyEffect; -import mage.abilities.keyword.TransformAbility; -import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SagaChapter; -import mage.constants.SubType; +import mage.cards.TransformingDoubleFacedCard; +import mage.constants.*; +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.target.TargetPermanent; +import mage.target.targetpointer.FixedTarget; import java.util.UUID; /** * @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) { - super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}"); - - this.subtype.add(SubType.SAGA); - this.secondSideCardClazz = mage.cards.r.ReflectionOfKikiJiki.class; + super(ownerId, setInfo, + new SuperType[]{}, new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.SAGA}, "{2}{R}", + "Reflection of Kiki-Jiki", + 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.) - 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." - 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. - 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")); // III — Exile this Saga, then return it to the battlefield transformed under your control. - this.addAbility(new TransformAbility()); - sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, new ExileSagaAndReturnTransformedEffect()); + sagaAbility.addChapterEffect(this.getLeftHalfCard(), 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) { @@ -51,3 +80,35 @@ public final class FableOfTheMirrorBreaker extends CardImpl { 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; + } +} diff --git a/Mage.Sets/src/mage/cards/f/FangbladeBrigand.java b/Mage.Sets/src/mage/cards/f/FangbladeBrigand.java index e5f33e35fa3..4ed2b5a0af4 100644 --- a/Mage.Sets/src/mage/cards/f/FangbladeBrigand.java +++ b/Mage.Sets/src/mage/cards/f/FangbladeBrigand.java @@ -1,15 +1,16 @@ 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.DayboundAbility; import mage.abilities.keyword.FirstStrikeAbility; -import mage.cards.CardImpl; +import mage.abilities.keyword.NightboundAbility; import mage.cards.CardSetInfo; +import mage.cards.TransformingDoubleFacedCard; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; @@ -19,16 +20,17 @@ import java.util.UUID; /** * @author TheElk801 */ -public final class FangbladeBrigand extends CardImpl { +public final class FangbladeBrigand extends TransformingDoubleFacedCard { 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); - this.subtype.add(SubType.WEREWOLF); - this.power = new MageInt(3); - this.toughness = new MageInt(4); - this.secondSideCardClazz = mage.cards.f.FangbladeEviscerator.class; + // Fangblade Brigand + this.getLeftHalfCard().setPT(3, 4); // {1}{R}: Fangblade Brigand gets +1/+0 and gains first strike until end of turn. Ability ability = new SimpleActivatedAbility(new BoostSourceEffect( @@ -37,10 +39,30 @@ public final class FangbladeBrigand extends CardImpl { ability.addEffect(new GainAbilitySourceEffect( FirstStrikeAbility.getInstance(), Duration.EndOfTurn ).setText("and gains first strike until end of turn")); - this.addAbility(ability); + this.getLeftHalfCard().addAbility(ability); // 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) { diff --git a/Mage.Sets/src/mage/cards/f/FangbladeEviscerator.java b/Mage.Sets/src/mage/cards/f/FangbladeEviscerator.java deleted file mode 100644 index b9c7a4dabec..00000000000 --- a/Mage.Sets/src/mage/cards/f/FangbladeEviscerator.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/f/FearfulVillager.java b/Mage.Sets/src/mage/cards/f/FearfulVillager.java index 175c8feb31f..c54cbe8abbb 100644 --- a/Mage.Sets/src/mage/cards/f/FearfulVillager.java +++ b/Mage.Sets/src/mage/cards/f/FearfulVillager.java @@ -1,10 +1,10 @@ package mage.cards.f; -import mage.MageInt; import mage.abilities.keyword.DayboundAbility; import mage.abilities.keyword.MenaceAbility; -import mage.cards.CardImpl; +import mage.abilities.keyword.NightboundAbility; import mage.cards.CardSetInfo; +import mage.cards.TransformingDoubleFacedCard; import mage.constants.CardType; import mage.constants.SubType; @@ -13,22 +13,32 @@ import java.util.UUID; /** * @author TheElk801 */ -public final class FearfulVillager extends CardImpl { +public final class FearfulVillager extends TransformingDoubleFacedCard { 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); - this.subtype.add(SubType.WEREWOLF); - this.power = new MageInt(2); - this.toughness = new MageInt(3); - this.secondSideCardClazz = mage.cards.f.FearsomeWerewolf.class; + // Fearful Villager + this.getLeftHalfCard().setPT(2, 3); // Menace - this.addAbility(new MenaceAbility()); + this.getLeftHalfCard().addAbility(new MenaceAbility()); // 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) { diff --git a/Mage.Sets/src/mage/cards/f/FearsomeWerewolf.java b/Mage.Sets/src/mage/cards/f/FearsomeWerewolf.java deleted file mode 100644 index 53a629eabc4..00000000000 --- a/Mage.Sets/src/mage/cards/f/FearsomeWerewolf.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/f/FlameChanneler.java b/Mage.Sets/src/mage/cards/f/FlameChanneler.java index 363d8c7c634..5f2e743ec30 100644 --- a/Mage.Sets/src/mage/cards/f/FlameChanneler.java +++ b/Mage.Sets/src/mage/cards/f/FlameChanneler.java @@ -1,14 +1,20 @@ package mage.cards.f; -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.TransformSourceEffect; -import mage.abilities.keyword.TransformAbility; -import mage.cards.CardImpl; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardSetInfo; +import mage.cards.TransformingDoubleFacedCard; 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; @@ -16,22 +22,39 @@ import java.util.UUID; /** * @author TheElk801 */ -public final class FlameChanneler extends CardImpl { +public final class FlameChanneler extends TransformingDoubleFacedCard { 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); - this.subtype.add(SubType.WIZARD); - this.power = new MageInt(2); - this.toughness = new MageInt(2); - this.secondSideCardClazz = mage.cards.e.EmbodimentOfFlame.class; + // Flame Channeler + this.getLeftHalfCard().setPT(2, 2); // When a spell you control deals damage, transform Flame Channeler. - this.addAbility(new TransformAbility()); - this.addAbility(new SpellControlledDealsDamageTriggeredAbility(Zone.BATTLEFIELD, + this.getLeftHalfCard().addAbility(new SpellControlledDealsDamageTriggeredAbility(Zone.BATTLEFIELD, new TransformSourceEffect(), StaticFilters.FILTER_SPELL, false ).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) { diff --git a/Mage.Sets/src/mage/cards/f/FlamewarBrashVeteran.java b/Mage.Sets/src/mage/cards/f/FlamewarBrashVeteran.java index 167a48fc486..345e693acc2 100644 --- a/Mage.Sets/src/mage/cards/f/FlamewarBrashVeteran.java +++ b/Mage.Sets/src/mage/cards/f/FlamewarBrashVeteran.java @@ -1,8 +1,8 @@ package mage.cards.f; -import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.ActivateAsSorceryActivatedAbility; +import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.DiscardHandCost; 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.common.TransformSourceEffect; 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.cards.Card; -import mage.cards.CardImpl; -import mage.cards.CardSetInfo; +import mage.cards.*; import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterControlledArtifactPermanent; @@ -29,7 +30,7 @@ import java.util.stream.Collectors; /** * @author TheElk801 */ -public final class FlamewarBrashVeteran extends CardImpl { +public final class FlamewarBrashVeteran extends TransformingDoubleFacedCard { private static final FilterControlledPermanent filter = new FilterControlledArtifactPermanent("another artifact"); @@ -39,28 +40,46 @@ public final class FlamewarBrashVeteran extends CardImpl { } 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); - this.subtype.add(SubType.ROBOT); - this.power = new MageInt(3); - this.toughness = new MageInt(2); - this.secondSideCardClazz = mage.cards.f.FlamewarStreetwiseOperative.class; + // Flamewar, Brash Veteran + this.getLeftHalfCard().setPT(3, 2); // 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. Ability ability = new ActivateAsSorceryActivatedAbility( new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new SacrificeTargetCost(filter) ); 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. ability = new SimpleActivatedAbility(new FlamewarBrashVeteranEffect(), new GenericManaCost(1)); 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) { @@ -104,3 +123,38 @@ class FlamewarBrashVeteranEffect extends OneShotEffect { 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; + } +} diff --git a/Mage.Sets/src/mage/cards/f/FlamewarStreetwiseOperative.java b/Mage.Sets/src/mage/cards/f/FlamewarStreetwiseOperative.java deleted file mode 100644 index 6541885896a..00000000000 --- a/Mage.Sets/src/mage/cards/f/FlamewarStreetwiseOperative.java +++ /dev/null @@ -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; - } -} diff --git a/Mage.Sets/src/mage/cards/f/ForebodingStatue.java b/Mage.Sets/src/mage/cards/f/ForebodingStatue.java index c9b454f25a3..a850e83d438 100644 --- a/Mage.Sets/src/mage/cards/f/ForebodingStatue.java +++ b/Mage.Sets/src/mage/cards/f/ForebodingStatue.java @@ -1,49 +1,57 @@ package mage.cards.f; -import java.util.UUID; -import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.condition.common.SourceHasCounterCondition; import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.UntapSourceEffect; 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.constants.SubType; -import mage.cards.CardImpl; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; +import mage.abilities.triggers.BeginningOfFirstMainTriggeredAbility; import mage.cards.CardSetInfo; +import mage.cards.TransformingDoubleFacedCard; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.counters.CounterType; +import java.util.UUID; + /** * * @author weirddan455 */ -public final class ForebodingStatue extends CardImpl { +public final class ForebodingStatue extends TransformingDoubleFacedCard { 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); - this.power = new MageInt(1); - this.toughness = new MageInt(2); - this.secondSideCardClazz = mage.cards.f.ForsakenThresher.class; + // Foreboding Statue + this.getLeftHalfCard().setPT(1, 2); // {T}: Add one mana of any color. Put an omen counter on Foreboding Statue. Ability ability = new AnyColorManaAbility(); 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. - this.addAbility(new TransformAbility()); ability = new BeginningOfEndStepTriggeredAbility( TargetController.YOU, new UntapSourceEffect().setText("untap it,"), false, new SourceHasCounterCondition(CounterType.OMEN, 3) ); 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) { diff --git a/Mage.Sets/src/mage/cards/r/ReflectionOfKikiJiki.java b/Mage.Sets/src/mage/cards/r/ReflectionOfKikiJiki.java deleted file mode 100644 index 51abc490f57..00000000000 --- a/Mage.Sets/src/mage/cards/r/ReflectionOfKikiJiki.java +++ /dev/null @@ -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; - } -} diff --git a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java index aa578902369..f7b1c81346e 100644 --- a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java +++ b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java @@ -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("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("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", 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)); diff --git a/Mage.Sets/src/mage/sets/InnistradDoubleFeature.java b/Mage.Sets/src/mage/sets/InnistradDoubleFeature.java index 2b9ac669219..4ba22086499 100644 --- a/Mage.Sets/src/mage/sets/InnistradDoubleFeature.java +++ b/Mage.Sets/src/mage/sets/InnistradDoubleFeature.java @@ -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, 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("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("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)); @@ -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("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 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("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("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("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)); diff --git a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java index 5df60f1e186..df5211502e6 100644 --- a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java +++ b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java @@ -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("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("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", 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)); @@ -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("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 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", 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)); diff --git a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java index 5a166126a18..a60fac005fd 100644 --- a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java +++ b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java @@ -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 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("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("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)); diff --git a/Mage.Sets/src/mage/sets/MagicOnlinePromos.java b/Mage.Sets/src/mage/sets/MagicOnlinePromos.java index fbf0d6992f0..88772257d8b 100644 --- a/Mage.Sets/src/mage/sets/MagicOnlinePromos.java +++ b/Mage.Sets/src/mage/sets/MagicOnlinePromos.java @@ -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 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("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", 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)); diff --git a/Mage.Sets/src/mage/sets/StoreChampionships.java b/Mage.Sets/src/mage/sets/StoreChampionships.java index b9a6e890afe..ea3ef14a33e 100644 --- a/Mage.Sets/src/mage/sets/StoreChampionships.java +++ b/Mage.Sets/src/mage/sets/StoreChampionships.java @@ -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("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("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("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)); diff --git a/Mage.Sets/src/mage/sets/Transformers.java b/Mage.Sets/src/mage/sets/Transformers.java index 7ea26010c82..ca587a56df9 100644 --- a/Mage.Sets/src/mage/sets/Transformers.java +++ b/Mage.Sets/src/mage/sets/Transformers.java @@ -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("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, 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, 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));