convert transforming "K" cards to single class file

part of #14099
This commit is contained in:
jmlundeen 2025-12-01 14:05:33 -06:00
parent e0770c8aa5
commit b43ab76d60
45 changed files with 556 additions and 1122 deletions

View file

@ -1,52 +0,0 @@
package mage.cards.a;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.DisturbAbility;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class AncestorsEmbrace extends CardImpl {
public AncestorsEmbrace(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "");
this.subtype.add(SubType.AURA);
this.color.setWhite(true);
this.nightCard = true;
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
this.addAbility(new EnchantAbility(auraTarget));
// Enchanted creature has lifelink.
this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(
LifelinkAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield
)));
// If Ancestor's Embrace would be put into a graveyard from anywhere, exile it instead.
this.addAbility(DisturbAbility.makeBackAbility());
}
private AncestorsEmbrace(final AncestorsEmbrace card) {
super(card);
}
@Override
public AncestorsEmbrace copy() {
return new AncestorsEmbrace(this);
}
}

View file

@ -1,46 +0,0 @@
package mage.cards.d;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.TransformIntoSourceTriggeredAbility;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author fireshoes
*/
public final class DemonPossessedWitch extends CardImpl {
public DemonPossessedWitch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SHAMAN);
this.power = new MageInt(4);
this.toughness = new MageInt(3);
this.color.setBlack(true);
// this card is the second face of double-faced card
this.nightCard = true;
// When this creature transforms into Demon-Possessed Witch, you may destroy target creature.
Ability ability = new TransformIntoSourceTriggeredAbility(new DestroyTargetEffect(), true);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
private DemonPossessedWitch(final DemonPossessedWitch card) {
super(card);
}
@Override
public DemonPossessedWitch copy() {
return new DemonPossessedWitch(this);
}
}

View file

@ -1,88 +0,0 @@
package mage.cards.e;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.constants.*;
import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.watchers.common.DamagedByControlledWatcher;
/**
*
* @author weirddan455
*/
public final class EtchingOfKumano extends CardImpl {
public EtchingOfKumano(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SHAMAN);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.color.setRed(true);
this.nightCard = true;
// Haste
this.addAbility(HasteAbility.getInstance());
// If a creature dealt damage this turn by a source you controlled would die, exile it instead.
this.addAbility(new SimpleStaticAbility(new EtchingOfKumanoReplacementEffect()), new DamagedByControlledWatcher());
}
private EtchingOfKumano(final EtchingOfKumano card) {
super(card);
}
@Override
public EtchingOfKumano copy() {
return new EtchingOfKumano(this);
}
}
class EtchingOfKumanoReplacementEffect extends ReplacementEffectImpl {
EtchingOfKumanoReplacementEffect() {
super(Duration.WhileOnBattlefield, Outcome.Exile);
this.staticText = "If a creature dealt damage this turn by a source you controlled would die, exile it instead";
}
private EtchingOfKumanoReplacementEffect(final EtchingOfKumanoReplacementEffect effect) {
super(effect);
}
@Override
public EtchingOfKumanoReplacementEffect copy() {
return new EtchingOfKumanoReplacementEffect(this);
}
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
((ZoneChangeEvent) event).setToZone(Zone.EXILED);
return false;
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.ZONE_CHANGE;
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
ZoneChangeEvent zce = (ZoneChangeEvent) event;
if (zce.isDiesEvent()) {
DamagedByControlledWatcher watcher = game.getState().getWatcher(DamagedByControlledWatcher.class, source.getControllerId());
if (watcher != null) {
return watcher.wasDamaged(zce.getTarget(), game);
}
}
return false;
}
}

View file

@ -1,44 +0,0 @@
package mage.cards.f;
import mage.MageInt;
import mage.abilities.common.BlocksOrBlockedByCreatureSourceTriggeredAbility;
import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.UUID;
/**
* @author LevelX2
*/
public final class FlameheartWerewolf extends CardImpl {
public FlameheartWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(3);
this.toughness = new MageInt(2);
this.color.setRed(true);
// this card is the second face of double-faced card
this.nightCard = true;
// Whenever Flameheart Werewolf blocks or becomes blocked by a creature, Flameheart Werewolf deals 2 damage to that creature.
this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(2).withTargetDescription("that creature")));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Flameheart Werewolf.
this.addAbility(new WerewolfBackTriggeredAbility());
}
private FlameheartWerewolf(final FlameheartWerewolf card) {
super(card);
}
@Override
public FlameheartWerewolf copy() {
return new FlameheartWerewolf(this);
}
}

View file

@ -1,141 +0,0 @@
package mage.cards.g;
import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.effects.RequirementEffect;
import mage.abilities.effects.common.PreventAllDamageToSourceEffect;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.custom.CreatureToken;
import mage.target.common.TargetCreaturePermanent;
import mage.target.common.TargetOpponentsCreaturePermanent;
import java.util.UUID;
/**
* @author LevelX2
*/
public final class GideonBattleForged extends CardImpl {
public GideonBattleForged(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.GIDEON);
this.color.setWhite(true);
this.nightCard = true;
this.setStartingLoyalty(3);
// +2: Up to one target creature an opponent controls attacks Gideon, Battle-Forged during its controller's next turn if able.
Ability ability = new LoyaltyAbility(new GideonBattleForgedEffect(), 2);
ability.addTarget(new TargetOpponentsCreaturePermanent(0, 1));
this.addAbility(ability);
// +1: Until your next turn, target creature gains indestructible. Untap that creature.
ability = new LoyaltyAbility(new GainAbilityTargetEffect(
IndestructibleAbility.getInstance(), Duration.UntilYourNextTurn
).setText("Until your next turn, target creature gains indestructible"), 1);
ability.addEffect(new UntapTargetEffect().setText("Untap that creature"));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
// 0: Until end of turn, Gideon, Battle-Forged becomes a 4/4 Human Soldier creature with indestructible that's still a planeswalker. Prevent all damage that would be dealt to him this turn.
ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(new CreatureToken(
4, 4, "4/4 Human Soldier creature " +
"with indestructible", SubType.HUMAN, SubType.SOLDIER
).withAbility(IndestructibleAbility.getInstance()), CardType.PLANESWALKER, Duration.EndOfTurn), 0);
ability.addEffect(new PreventAllDamageToSourceEffect(Duration.EndOfTurn)
.setText("Prevent all damage that would be dealt to him this turn"));
this.addAbility(ability);
}
private GideonBattleForged(final GideonBattleForged card) {
super(card);
}
@Override
public GideonBattleForged copy() {
return new GideonBattleForged(this);
}
}
class GideonBattleForgedEffect extends RequirementEffect {
protected MageObjectReference targetPermanentReference;
GideonBattleForgedEffect() {
super(Duration.Custom);
staticText = "up to one target creature an opponent controls attacks {this} during its controller's next turn if able";
}
private GideonBattleForgedEffect(final GideonBattleForgedEffect effect) {
super(effect);
this.targetPermanentReference = effect.targetPermanentReference;
}
@Override
public GideonBattleForgedEffect copy() {
return new GideonBattleForgedEffect(this);
}
@Override
public boolean isInactive(Ability source, Game game) {
if (targetPermanentReference == null) {
return true;
}
Permanent targetPermanent = targetPermanentReference.getPermanent(game);
if (targetPermanent == null) {
return true;
}
return game.getTurnPhaseType() == TurnPhase.END && this.isYourNextTurn(game); // discard on end of their next turn
}
@Override
public void init(Ability source, Game game) {
super.init(source, game);
if (getTargetPointer().getFirst(game, source) == null) {
discard();
} else {
targetPermanentReference = new MageObjectReference(getTargetPointer().getFirst(game, source), game);
}
}
@Override
public boolean applies(Permanent permanent, Ability source, Game game) {
if (!permanent.getId().equals(getTargetPointer().getFirst(game, source))
|| !game.isActivePlayer(permanent.getControllerId())) {
return false;
}
Permanent planeswalker = source.getSourcePermanentIfItStillExists(game);
if (planeswalker == null) {
discard();
return false;
}
return true;
}
@Override
public UUID mustAttackDefender(Ability source, Game game) {
return source.getSourceId();
}
@Override
public boolean mustAttack(Game game) {
return true;
}
@Override
public boolean mustBlock(Game game) {
return false;
}
}

View file

@ -1,52 +0,0 @@
package mage.cards.g;
import mage.MageInt;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.keyword.ProwessAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.abilities.keyword.WardAbility;
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 GitaxianSpellstalker extends CardImpl {
public GitaxianSpellstalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.PHYREXIAN);
this.subtype.add(SubType.JACKAL);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
this.color.setBlue(true);
this.color.setRed(true);
this.nightCard = true;
// Trample
this.addAbility(TrampleAbility.getInstance());
// Ward {2}
this.addAbility(new WardAbility(new ManaCostsImpl<>("{2}"), false));
// Prowess
this.addAbility(new ProwessAbility());
// Prowess
this.addAbility(new ProwessAbility());
}
private GitaxianSpellstalker(final GitaxianSpellstalker card) {
super(card);
}
@Override
public GitaxianSpellstalker copy() {
return new GitaxianSpellstalker(this);
}
}

View file

@ -3,8 +3,8 @@ package mage.cards.k;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
import mage.abilities.keyword.CraftAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.CardType;
import mage.constants.PutCards;
import mage.constants.SubType;
@ -15,23 +15,30 @@ import java.util.UUID;
/**
* @author TheElk801
*/
public final class KaslemsStonetree extends CardImpl {
public final class KaslemsStonetree extends TransformingDoubleFacedCard {
public KaslemsStonetree(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{G}");
this.secondSideCardClazz = mage.cards.k.KaslemsStrider.class;
super(ownerId, setInfo,
new CardType[]{CardType.ARTIFACT}, new SubType[]{}, "{2}{G}",
"Kaslem's Strider",
new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, new SubType[]{SubType.GOLEM}, "G"
);
// Kaslem's Stonetree
// When Kaslem's Stonetree enters the battlefield, look at the top six cards of your library. You may put a land card from among them onto the battlefield tapped. Put the rest on the bottom in a random order.
this.addAbility(new EntersBattlefieldTriggeredAbility(new LookLibraryAndPickControllerEffect(
this.getLeftHalfCard().addAbility(new EntersBattlefieldTriggeredAbility(new LookLibraryAndPickControllerEffect(
6, 1, StaticFilters.FILTER_CARD_LAND_A,
PutCards.BATTLEFIELD_TAPPED, PutCards.BOTTOM_RANDOM
)));
// Craft with Cave {5}{G}
this.addAbility(new CraftAbility(
this.getLeftHalfCard().addAbility(new CraftAbility(
"{5}{G}", "Cave", "another Cave you " +
"control or a Cave card in your graveyard", SubType.CAVE.getPredicate()
));
// Kaslem's Strider
this.getRightHalfCard().setPT(5, 5);
}
private KaslemsStonetree(final KaslemsStonetree card) {

View file

@ -1,34 +0,0 @@
package mage.cards.k;
import mage.MageInt;
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 KaslemsStrider extends CardImpl {
public KaslemsStrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "");
this.subtype.add(SubType.GOLEM);
this.power = new MageInt(5);
this.toughness = new MageInt(5);
this.nightCard = true;
this.color.setGreen(true);
}
private KaslemsStrider(final KaslemsStrider card) {
super(card);
}
@Override
public KaslemsStrider copy() {
return new KaslemsStrider(this);
}
}

View file

@ -1,29 +1,31 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.effects.common.continuous.SetBasePowerToughnessSourceEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.DisturbAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
import mage.abilities.keyword.*;
import mage.cards.CardSetInfo;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class KatildaDawnhartMartyr extends CardImpl {
public final class KatildaDawnhartMartyr extends TransformingDoubleFacedCard {
private static final FilterPermanent filter
= new FilterPermanent(SubType.VAMPIRE, "Vampires");
@ -41,31 +43,56 @@ public final class KatildaDawnhartMartyr extends CardImpl {
private static final Hint hint = new ValueHint("Spirits and enchantments you control", xValue);
public KatildaDawnhartMartyr(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
super(ownerId, setInfo,
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT, SubType.WARLOCK}, "{1}{W}{W}",
"Katilda's Rising Dawn",
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.AURA}, "W"
);
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.SPIRIT);
this.subtype.add(SubType.WARLOCK);
this.power = new MageInt(0);
this.toughness = new MageInt(0);
this.secondSideCardClazz = mage.cards.k.KatildasRisingDawn.class;
// Katilda, Dawnhart Martyr
this.getLeftHalfCard().setPT(0, 0);
// Flying
this.addAbility(FlyingAbility.getInstance());
this.getLeftHalfCard().addAbility(FlyingAbility.getInstance());
// Lifelink
this.addAbility(LifelinkAbility.getInstance());
this.getLeftHalfCard().addAbility(LifelinkAbility.getInstance());
// Protection from Vampires
this.addAbility(new ProtectionAbility(filter));
this.getLeftHalfCard().addAbility(new ProtectionAbility(filter));
// Katilda, Dawnhart Martyr's power and toughness are each equal to the number of permanents you control that are Spirits and/or enchantments.
this.addAbility(new SimpleStaticAbility(
this.getLeftHalfCard().addAbility(new SimpleStaticAbility(
Zone.ALL, new SetBasePowerToughnessSourceEffect(xValue)
).addHint(hint));
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getRightHalfCard().getSpellAbility().addTarget(auraTarget);
this.getRightHalfCard().getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
this.getRightHalfCard().addAbility(new EnchantAbility(auraTarget));
// Disturb {3}{W}{W}
this.addAbility(new DisturbAbility(this, "{3}{W}{W}"));
// needs to be added after right half has spell ability target set
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{3}{W}{W}"));
// Katilda's Rising Dawn
// Enchanted creature has flying, lifelink, and protection from Vampires, and it gets +X/+X where X is the number of permanents you control that are Spirits and/or enchantments.
Ability ability = new SimpleStaticAbility(new GainAbilityAttachedEffect(
FlyingAbility.getInstance(), AttachmentType.AURA
));
ability.addEffect(new GainAbilityAttachedEffect(
LifelinkAbility.getInstance(), AttachmentType.AURA
).setText(", lifelink"));
ability.addEffect(new GainAbilityAttachedEffect(
new ProtectionAbility(filter), AttachmentType.AURA
).setText(", and protection from Vampires"));
ability.addEffect(new BoostEquippedEffect(xValue, xValue)
.setText(", and it gets +X/+X, where X is the number of permanents you control that are Spirits and/or enchantments"));
this.getRightHalfCard().addAbility(ability.addHint(hint));
// If Katilda's Rising Dawn would be put into a graveyard from anywhere, exile it instead.
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
}
private KatildaDawnhartMartyr(final KatildaDawnhartMartyr card) {

View file

@ -1,84 +0,0 @@
package mage.cards.k;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.*;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class KatildasRisingDawn extends CardImpl {
private static final FilterPermanent filter
= new FilterPermanent(SubType.VAMPIRE, "Vampires");
private static final FilterPermanent filter2
= new FilterControlledPermanent("permanents you control that are Spirits and/or enchantments");
static {
filter2.add(Predicates.or(
SubType.SPIRIT.getPredicate(),
CardType.ENCHANTMENT.getPredicate()
));
}
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter2);
private static final Hint hint = new ValueHint("Spirits and enchantments you control", xValue);
public KatildasRisingDawn(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.AURA);
this.color.setWhite(true);
this.nightCard = true;
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
this.addAbility(new EnchantAbility(auraTarget));
// Enchanted creature has flying, lifelink, and protection from Vampires, and it gets +X/+X where X is the number of permanents you control that are Spirits and/or enchantments.
Ability ability = new SimpleStaticAbility(new GainAbilityAttachedEffect(
FlyingAbility.getInstance(), AttachmentType.AURA
));
ability.addEffect(new GainAbilityAttachedEffect(
LifelinkAbility.getInstance(), AttachmentType.AURA
).setText(", lifelink"));
ability.addEffect(new GainAbilityAttachedEffect(
new ProtectionAbility(filter), AttachmentType.AURA
).setText(", and protection from Vampires"));
ability.addEffect(new BoostEquippedEffect(xValue, xValue)
.setText(", and it gets +X/+X, where X is the number of permanents you control that are Spirits and/or enchantments"));
this.addAbility(ability.addHint(hint));
// If Katilda's Rising Dawn would be put into a graveyard from anywhere, exile it instead.
this.addAbility(DisturbAbility.makeBackAbility());
}
private KatildasRisingDawn(final KatildasRisingDawn card) {
super(card);
}
@Override
public KatildasRisingDawn copy() {
return new KatildasRisingDawn(this);
}
}

View file

@ -1,19 +1,19 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility;
import mage.abilities.common.LoseLifeTriggeredAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.dynamicvalue.common.SavedLifeLossValue;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.SacrificeOpponentsEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.*;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.game.Controllable;
import mage.game.Game;
@ -25,28 +25,38 @@ import java.util.*;
/**
* @author TheElk801
*/
public final class KefkaCourtMage extends CardImpl {
public final class KefkaCourtMage extends TransformingDoubleFacedCard {
public KefkaCourtMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{B}{R}");
super(ownerId, setInfo,
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WIZARD}, "{2}{U}{B}{R}",
"Kefka, Ruler of Ruin",
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.AVATAR, SubType.WIZARD}, "UBR");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(4);
this.toughness = new MageInt(5);
this.secondSideCardClazz = mage.cards.k.KefkaRulerOfRuin.class;
// Kefka, Court Mage
this.getLeftHalfCard().setPT(4, 5);
// Whenever Kefka enters or attacks, each player discards a card. Then you draw a card for each card type among cards discarded this way.
this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new KefkaCourtMageEffect()));
this.getLeftHalfCard().addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new KefkaCourtMageEffect()));
// {8}: Each opponent sacrifices a permanent of their choice. Transform Kefka. Activate only as a sorcery.
this.addAbility(new TransformAbility());
Ability ability = new ActivateAsSorceryActivatedAbility(
new SacrificeOpponentsEffect(StaticFilters.FILTER_PERMANENT), new GenericManaCost(8)
);
ability.addEffect(new TransformSourceEffect());
this.addAbility(ability);
this.getLeftHalfCard().addAbility(ability);
// Kefka, Ruler of Ruin
this.getRightHalfCard().setPT(5, 7);
// Flying
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
// Whenever an opponent loses life during your turn, you draw that many cards.
this.getRightHalfCard().addAbility(new LoseLifeTriggeredAbility(
new DrawCardSourceControllerEffect(SavedLifeLossValue.MANY, true),
TargetController.OPPONENT, false, false
).withTriggerCondition(MyTurnCondition.instance));
}
private KefkaCourtMage(final KefkaCourtMage card) {

View file

@ -1,54 +0,0 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.common.LoseLifeTriggeredAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.dynamicvalue.common.SavedLifeLossValue;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class KefkaRulerOfRuin extends CardImpl {
public KefkaRulerOfRuin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.AVATAR);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(5);
this.toughness = new MageInt(7);
this.nightCard = true;
this.color.setBlue(true);
this.color.setBlack(true);
this.color.setRed(true);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Whenever an opponent loses life during your turn, you draw that many cards.
this.addAbility(new LoseLifeTriggeredAbility(
new DrawCardSourceControllerEffect(SavedLifeLossValue.MANY, true),
TargetController.OPPONENT, false, false
).withTriggerCondition(MyTurnCondition.instance));
}
private KefkaRulerOfRuin(final KefkaRulerOfRuin card) {
super(card);
}
@Override
public KefkaRulerOfRuin copy() {
return new KefkaRulerOfRuin(this);
}
}

View file

@ -1,37 +1,48 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.common.BlocksOrBlockedByCreatureSourceTriggeredAbility;
import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
* @author LevelX2
*/
public final class KessigForgemaster extends CardImpl {
public final class KessigForgemaster extends TransformingDoubleFacedCard {
public KessigForgemaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
this.subtype.add(SubType.HUMAN, SubType.SHAMAN, SubType.WEREWOLF);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
super(ownerId, setInfo,
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SHAMAN, SubType.WEREWOLF}, "{1}{R}",
"Flameheart Werewolf",
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "R");
this.secondSideCardClazz = mage.cards.f.FlameheartWerewolf.class;
// Kessig Forgemaster
this.getLeftHalfCard().setPT(2, 1);
// Whenever Kessig Forgemaster blocks or becomes blocked by a creature, Kessig Forgemaster deals 1 damage to that creature.
this.addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(new DamageTargetEffect(1).withTargetDescription("that creature")));
this.getLeftHalfCard().addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(
new DamageTargetEffect(1).withTargetDescription("that creature")
));
// At the beginning of each upkeep, if no spells were cast last turn, transform Kessig Forgemaster.
this.addAbility(new TransformAbility());
this.addAbility(new WerewolfFrontTriggeredAbility());
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
// Flameheart Werewolf
this.getRightHalfCard().setPT(3, 2);
// Whenever Flameheart Werewolf blocks or becomes blocked by a creature, Flameheart Werewolf deals 2 damage to that creature.
this.getRightHalfCard().addAbility(new BlocksOrBlockedByCreatureSourceTriggeredAbility(
new DamageTargetEffect(2).withTargetDescription("that creature")
));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Flameheart Werewolf.
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
}
private KessigForgemaster(final KessigForgemaster card) {

View file

@ -1,16 +1,21 @@
package mage.cards.k;
import mage.MageInt;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.keyword.DayboundAbility;
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.Outcome;
import mage.constants.SubType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.players.Player;
@ -19,23 +24,45 @@ import java.util.UUID;
/**
* @author TheElk801
*/
public final class KessigNaturalist extends CardImpl {
public final class KessigNaturalist extends TransformingDoubleFacedCard {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wolves and Werewolves");
static {
filter.add(Predicates.or(
SubType.WOLF.getPredicate(),
SubType.WEREWOLF.getPredicate()
));
}
public KessigNaturalist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{G}");
super(ownerId, setInfo,
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{R}{G}",
"Lord of the Ulvenwald",
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "RG");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.secondSideCardClazz = mage.cards.l.LordOfTheUlvenwald.class;
// Kessig Naturalist
this.getLeftHalfCard().setPT(2, 2);
// Whenever Kessig Naturalist attacks, add {R} or {G}. Until end of turn, you don't lose this mana as steps and phases end.
this.addAbility(new AttacksTriggeredAbility(new KessigNaturalistEffect()));
this.getLeftHalfCard().addAbility(new AttacksTriggeredAbility(new KessigNaturalistEffect()));
// Daybound
this.addAbility(new DayboundAbility());
this.getLeftHalfCard().addAbility(new DayboundAbility());
// Lord of the Ulvenwald
this.getRightHalfCard().setPT(3, 3);
// Other Wolves and Werewolves you control get +1/+1.
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new BoostControlledEffect(
1, 1, Duration.WhileOnBattlefield, filter, true
)));
// Whenever Lord of the Ulvenwald attacks, add {R} or {G}. Until end of turn, you don't lose this mana as steps and phases end.
this.getRightHalfCard().addAbility(new AttacksTriggeredAbility(new KessigNaturalistEffect()));
// Nightbound
this.getRightHalfCard().addAbility(new NightboundAbility());
}
private KessigNaturalist(final KessigNaturalist card) {

View file

@ -1,36 +1,39 @@
package mage.cards.k;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.abilities.effects.common.combat.CantBeBlockedByMoreThanOneSourceEffect;
import mage.cards.CardSetInfo;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import java.util.UUID;
/**
* @author fireshoes
*/
public final class KessigProwler extends CardImpl {
public final class KessigProwler extends TransformingDoubleFacedCard {
public KessigProwler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
this.subtype.add(SubType.WEREWOLF);
this.subtype.add(SubType.HORROR);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
super(ownerId, setInfo,
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF, SubType.HORROR}, "{G}",
"Sinuous Predator",
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ELDRAZI, SubType.WEREWOLF}, "");
this.secondSideCardClazz = mage.cards.s.SinuousPredator.class;
// Kessig Prowler
this.getLeftHalfCard().setPT(2, 1);
// {4}{G}: Transform Kessig Prowler.
this.addAbility(new TransformAbility());
this.addAbility(new SimpleActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{4}{G}")));
this.getLeftHalfCard().addAbility(new SimpleActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{4}{G}")));
// Sinuous Predator
this.getRightHalfCard().setPT(4, 4);
// Sinuous Predator can't be blocked by more than one creature.
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new CantBeBlockedByMoreThanOneSourceEffect()));
}
private KessigProwler(final KessigProwler card) {

View file

@ -1,14 +1,13 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.ProwessAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.abilities.keyword.WardAbility;
import mage.cards.CardSetInfo;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.CardType;
import mage.constants.SubType;
@ -17,26 +16,38 @@ import java.util.UUID;
/**
* @author TheElk801
*/
public final class KhenraSpellspear extends CardImpl {
public final class KhenraSpellspear extends TransformingDoubleFacedCard {
public KhenraSpellspear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
super(ownerId, setInfo,
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.JACKAL, SubType.WARRIOR}, "{1}{R}",
"Gitaxian Spellstalker",
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.PHYREXIAN, SubType.JACKAL}, "UR");
this.subtype.add(SubType.JACKAL);
this.subtype.add(SubType.WARRIOR);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
this.secondSideCardClazz = mage.cards.g.GitaxianSpellstalker.class;
// Khenra Spellspear
this.getLeftHalfCard().setPT(2, 2);
// Trample
this.addAbility(TrampleAbility.getInstance());
this.getLeftHalfCard().addAbility(TrampleAbility.getInstance());
// Prowess
this.addAbility(new ProwessAbility());
this.getLeftHalfCard().addAbility(new ProwessAbility());
// {3}{U/P}: Transform Khenra Spellspear. Activate only as a sorcery.
this.addAbility(new TransformAbility());
this.addAbility(new ActivateAsSorceryActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{3}{U/P}")));
this.getLeftHalfCard().addAbility(new ActivateAsSorceryActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{3}{U/P}")));
// Gitaxian Spellstalker
this.getRightHalfCard().setPT(3, 3);
// Trample
this.getRightHalfCard().addAbility(TrampleAbility.getInstance());
// Ward {2}
this.getRightHalfCard().addAbility(new WardAbility(new ManaCostsImpl<>("{2}"), false));
// Prowess, Prowess
this.getRightHalfCard().addAbility(new ProwessAbility());
this.getRightHalfCard().addAbility(new ProwessAbility());
}
private KhenraSpellspear(final KhenraSpellspear card) {

View file

@ -1,34 +1,54 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.DisturbAbility;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.*;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class KindlyAncestor extends CardImpl {
public final class KindlyAncestor extends TransformingDoubleFacedCard {
public KindlyAncestor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
super(ownerId, setInfo,
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT}, "{2}{W}",
"Ancestor's Embrace",
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.AURA}, "W");
this.subtype.add(SubType.SPIRIT);
this.power = new MageInt(2);
this.toughness = new MageInt(3);
this.secondSideCardClazz = mage.cards.a.AncestorsEmbrace.class;
// Kindly Ancestor
this.getLeftHalfCard().setPT(2, 3);
// Lifelink
this.addAbility(LifelinkAbility.getInstance());
this.getLeftHalfCard().addAbility(LifelinkAbility.getInstance());
// Ancestor's Embrace
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getRightHalfCard().getSpellAbility().addTarget(auraTarget);
this.getRightHalfCard().getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
this.getRightHalfCard().addAbility(new EnchantAbility(auraTarget));
// Disturb {1}{W}
this.addAbility(new DisturbAbility(this, "{1}{W}"));
// needs to be added after right half has spell ability target set
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{1}{W}"));
// Enchanted creature has lifelink.
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(
LifelinkAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield
)));
// If Ancestor's Embrace would be put into a graveyard from anywhere, exile it instead.
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
}
private KindlyAncestor(final KindlyAncestor card) {

View file

@ -1,38 +1,48 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.common.TransformIntoSourceTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author fireshoes
*/
public final class KindlyStranger extends CardImpl {
public final class KindlyStranger extends TransformingDoubleFacedCard {
public KindlyStranger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.subtype.add(SubType.HUMAN);
this.power = new MageInt(2);
this.toughness = new MageInt(3);
super(ownerId, setInfo,
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN}, "{2}{B}",
"Demon-Possessed Witch",
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SHAMAN}, "B");
this.secondSideCardClazz = mage.cards.d.DemonPossessedWitch.class;
// Kindly Stranger
this.getLeftHalfCard().setPT(2, 3);
// <i>Delirium</i> &mdash; {2}{B}: Transform Kindly Stranger. Activate this ability only if there are four or more card types among cards in your graveyard.
this.addAbility(new TransformAbility());
this.addAbility(new ActivateIfConditionActivatedAbility(
// Delirium {2}{B}: Transform Kindly Stranger. Activate only if there are four or more card types among cards in your graveyard.
this.getLeftHalfCard().addAbility(new ActivateIfConditionActivatedAbility(
new TransformSourceEffect(), new ManaCostsImpl<>("{2}{B}"), DeliriumCondition.instance
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
// Demon-Possessed Witch
this.getRightHalfCard().setPT(4, 3);
// When this creature transforms into Demon-Possessed Witch, you may destroy target creature.
Ability ability = new TransformIntoSourceTriggeredAbility(new DestroyTargetEffect(), true);
ability.addTarget(new TargetCreaturePermanent());
this.getRightHalfCard().addAbility(ability);
}
private KindlyStranger(final KindlyStranger card) {

View file

@ -1,36 +1,56 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardSetInfo;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import java.util.UUID;
/**
* @author North
*/
public final class KruinOutlaw extends CardImpl {
public final class KruinOutlaw extends TransformingDoubleFacedCard {
private static final FilterPermanent filter = new FilterPermanent(SubType.WEREWOLF, "Werewolves");
public KruinOutlaw(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.ROGUE);
this.subtype.add(SubType.WEREWOLF);
super(ownerId, setInfo,
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.ROGUE, SubType.WEREWOLF}, "{1}{R}{R}",
"Terror of Kruin Pass",
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "R");
this.secondSideCardClazz = mage.cards.t.TerrorOfKruinPass.class;
// Kruin Outlaw
this.getLeftHalfCard().setPT(2, 2);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// First strike
this.getLeftHalfCard().addAbility(FirstStrikeAbility.getInstance());
this.addAbility(FirstStrikeAbility.getInstance());
// At the beginning of each upkeep, if no spells were cast last turn, transform Kruin Outlaw.
this.addAbility(new TransformAbility());
this.addAbility(new WerewolfFrontTriggeredAbility());
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
// Terror of Kruin Pass
this.getRightHalfCard().setPT(3, 3);
// Double strike
this.getRightHalfCard().addAbility(DoubleStrikeAbility.getInstance());
// Werewolves you control have menace.
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
new MenaceAbility(), Duration.WhileOnBattlefield, filter, false
)));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Terror of Kruin Pass.
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
}
private KruinOutlaw(final KruinOutlaw card) {

View file

@ -1,48 +1,46 @@
package mage.cards.k;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.ConditionHint;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.TransformAbility;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.constants.ComparisonType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.*;
import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.token.BlackWizardToken;
import mage.util.CardUtil;
import java.util.Optional;
import java.util.UUID;
/**
* @author balazskristof
*/
public final class KujaGenomeSorcerer extends CardImpl {
public final class KujaGenomeSorcerer extends TransformingDoubleFacedCard {
private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.WIZARD);
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.OR_GREATER, 4);
private static final Hint hint = new ValueHint("Wizards you control", new PermanentsOnBattlefieldCount(filter));
public KujaGenomeSorcerer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.MUTANT);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(3);
this.toughness = new MageInt(4);
super(ownerId, setInfo,
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.MUTANT, SubType.WIZARD}, "{2}{B}{R}",
"Trance Kuja, Fate Defied",
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.AVATAR, SubType.WIZARD}, "BR");
this.secondSideCardClazz = mage.cards.t.TranceKujaFateDefied.class;
// Kuja, Genome Sorcerer
this.getLeftHalfCard().setPT(3, 4);
// At the beginning of your end step, create a tapped 0/1 black Wizard creature token with "Whenever you cast a noncreature spell, this token deals 1 damage to each opponent.", Then if you control four or more Wizards, transform Kuja.
Ability ability = new BeginningOfEndStepTriggeredAbility(
@ -54,8 +52,13 @@ public final class KujaGenomeSorcerer extends CardImpl {
"if you control four or more Wizards, transform {this}"
).concatBy("Then"));
ability.addHint(hint);
this.addAbility(ability);
this.addAbility(new TransformAbility());
this.getLeftHalfCard().addAbility(ability);
// Trance Kuja, Fate Defied
this.getRightHalfCard().setPT(4, 6);
// Flame Star -- If a Wizard you control would deal damage to a permanent or player, it deals double that damage instead.
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new TranceKujaFateDefiedEffect()).withFlavorWord("Flare Star"));
}
private KujaGenomeSorcerer(final KujaGenomeSorcerer card) {
@ -67,3 +70,40 @@ public final class KujaGenomeSorcerer extends CardImpl {
return new KujaGenomeSorcerer(this);
}
}
class TranceKujaFateDefiedEffect extends ReplacementEffectImpl {
TranceKujaFateDefiedEffect() {
super(Duration.WhileOnBattlefield, Outcome.Damage);
staticText = "If a Wizard you control would deal damage to a permanent or player, it deals double that damage instead.";
}
private TranceKujaFateDefiedEffect(final TranceKujaFateDefiedEffect effect) {
super(effect);
}
@Override
public TranceKujaFateDefiedEffect copy() {
return new TranceKujaFateDefiedEffect(this);
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType().equals(GameEvent.EventType.DAMAGE_PLAYER)
|| event.getType().equals(GameEvent.EventType.DAMAGE_PERMANENT);
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
return game.getControllerId(event.getSourceId()).equals(source.getControllerId())
&& Optional.ofNullable(game.getObject(event.getSourceId()))
.map(object -> object.hasSubtype(SubType.WIZARD, game))
.orElse(false);
}
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
event.setAmount(CardUtil.overflowMultiply(event.getAmount(), 2));
return false;
}
}

View file

@ -1,27 +1,31 @@
package mage.cards.k;
import mage.abilities.Ability;
import mage.abilities.common.SagaAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.delayed.AddCounterNextSpellDelayedTriggeredAbility;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
import mage.abilities.effects.common.DamageAllEffect;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.abilities.keyword.HasteAbility;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SagaChapter;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterPlaneswalkerPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.watchers.common.DamagedByControlledWatcher;
import java.util.UUID;
/**
* @author weirddan455
*/
public final class KumanoFacesKakkazan extends CardImpl {
public final class KumanoFacesKakkazan extends TransformingDoubleFacedCard {
private static final FilterPermanent filter = new FilterPlaneswalkerPermanent();
@ -30,31 +34,42 @@ public final class KumanoFacesKakkazan extends CardImpl {
}
public KumanoFacesKakkazan(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
this.subtype.add(SubType.SAGA);
this.secondSideCardClazz = mage.cards.e.EtchingOfKumano.class;
super(ownerId, setInfo,
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.SAGA}, "{R}",
"Etching of Kumano",
new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SHAMAN}, "R");
// Kumano Faces Kakkazan
// (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 Kumano Faces Kakkazan deals 1 damage to each opponent and each planeswalker they control.
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I,
sagaAbility.addChapterEffect(this.getLeftHalfCard(), SagaChapter.CHAPTER_I,
new DamagePlayersEffect(1, TargetController.OPPONENT),
new DamageAllEffect(1, filter).setText("and each planeswalker they control")
);
// II When you cast your next creature spell this turn, that creature enters the battlefield with an additional +1/+1 counter on it.
sagaAbility.addChapterEffect(
this, SagaChapter.CHAPTER_II,
this.getLeftHalfCard(), SagaChapter.CHAPTER_II,
new CreateDelayedTriggeredAbilityEffect(new AddCounterNextSpellDelayedTriggeredAbility())
);
// 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);
// Etching of Kumano
this.getRightHalfCard().setPT(2, 2);
// Haste
this.getRightHalfCard().addAbility(HasteAbility.getInstance());
// If a creature dealt damage this turn by a source you controlled would die, exile it instead.
Ability ability = new SimpleStaticAbility(new EtchingOfKumanoReplacementEffect());
ability.addWatcher(new DamagedByControlledWatcher());
this.getRightHalfCard().addAbility(ability);
}
private KumanoFacesKakkazan(final KumanoFacesKakkazan card) {
@ -66,3 +81,43 @@ public final class KumanoFacesKakkazan extends CardImpl {
return new KumanoFacesKakkazan(this);
}
}
class EtchingOfKumanoReplacementEffect extends ReplacementEffectImpl {
EtchingOfKumanoReplacementEffect() {
super(Duration.WhileOnBattlefield, Outcome.Exile);
this.staticText = "If a creature dealt damage this turn by a source you controlled would die, exile it instead";
}
private EtchingOfKumanoReplacementEffect(final EtchingOfKumanoReplacementEffect effect) {
super(effect);
}
@Override
public EtchingOfKumanoReplacementEffect copy() {
return new EtchingOfKumanoReplacementEffect(this);
}
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
((ZoneChangeEvent) event).setToZone(Zone.EXILED);
return false;
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.ZONE_CHANGE;
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
ZoneChangeEvent zce = (ZoneChangeEvent) event;
if (zce.isDiesEvent()) {
DamagedByControlledWatcher watcher = game.getState().getWatcher(DamagedByControlledWatcher.class, source.getControllerId());
if (watcher != null) {
return watcher.wasDamaged(zce.getTarget(), game);
}
}
return false;
}
}

View file

@ -1,19 +1,27 @@
package mage.cards.k;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.common.EndOfCombatTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.Condition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.RequirementEffect;
import mage.abilities.effects.common.ExileAndReturnSourceEffect;
import mage.abilities.effects.common.PreventAllDamageToSourceEffect;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.IndestructibleAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.TransformingDoubleFacedCard;
import mage.constants.*;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.custom.CreatureToken;
import mage.target.common.TargetCreaturePermanent;
import mage.target.common.TargetOpponentsCreaturePermanent;
import mage.watchers.common.AttackedOrBlockedThisCombatWatcher;
import java.util.UUID;
@ -21,30 +29,53 @@ import java.util.UUID;
/**
* @author LevelX2
*/
public final class KytheonHeroOfAkros extends CardImpl {
public final class KytheonHeroOfAkros extends TransformingDoubleFacedCard {
public KytheonHeroOfAkros(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SOLDIER);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
super(ownerId, setInfo,
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SOLDIER}, "{W}",
"Gideon, Battle-Forged",
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.PLANESWALKER}, new SubType[]{SubType.GIDEON}, "W");
this.secondSideCardClazz = mage.cards.g.GideonBattleForged.class;
// Kytheon, Hero of Akros
this.getLeftHalfCard().setPT(2, 1);
// At end of combat, if Kytheon, Hero of Akros and at least two other creatures attacked this combat, exile Kytheon,
// then return him to the battlefield transformed under his owner's control.
this.addAbility(new TransformAbility());
this.addAbility(new EndOfCombatTriggeredAbility(
// At end of combat, if Kytheon, Hero of Akros and at least two other creatures attacked this combat, exile Kytheon, then return him to the battlefield transformed under his owner's control.
Ability kytheonAbility = new EndOfCombatTriggeredAbility(
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED, Pronoun.HE), false
).withInterveningIf(KytheonHeroOfAkrosCondition.instance), new AttackedOrBlockedThisCombatWatcher());
).withInterveningIf(KytheonHeroOfAkrosCondition.instance);
kytheonAbility.addWatcher(new AttackedOrBlockedThisCombatWatcher());
this.getLeftHalfCard().addAbility(kytheonAbility);
// {2}{W}: Kytheon gains indestructible until end of turn.
this.addAbility(new SimpleActivatedAbility(new GainAbilitySourceEffect(
this.getLeftHalfCard().addAbility(new SimpleActivatedAbility(new GainAbilitySourceEffect(
IndestructibleAbility.getInstance(), Duration.EndOfTurn
), new ManaCostsImpl<>("{2}{W}")));
// Gideon, Battle-Forged
this.getRightHalfCard().setStartingLoyalty(3);
// +2: Up to one target creature an opponent controls attacks Gideon, Battle-Forged during its controller's next turn if able.
Ability ability = new LoyaltyAbility(new GideonBattleForgedEffect(), 2);
ability.addTarget(new TargetOpponentsCreaturePermanent(0, 1));
this.getRightHalfCard().addAbility(ability);
// +1: Until your next turn, target creature gains indestructible. Untap that creature.
ability = new LoyaltyAbility(new GainAbilityTargetEffect(
IndestructibleAbility.getInstance(), Duration.UntilYourNextTurn
).setText("Until your next turn, target creature gains indestructible"), 1);
ability.addEffect(new UntapTargetEffect().setText("Untap that creature"));
ability.addTarget(new TargetCreaturePermanent());
this.getRightHalfCard().addAbility(ability);
// 0: Until end of turn, Gideon, Battle-Forged becomes a 4/4 Human Soldier creature with indestructible that's still a planeswalker. Prevent all damage that would be dealt to him this turn.
ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(new CreatureToken(
4, 4, "4/4 Human Soldier creature " +
"with indestructible", SubType.HUMAN, SubType.SOLDIER
).withAbility(IndestructibleAbility.getInstance()), CardType.PLANESWALKER, Duration.EndOfTurn), 0);
ability.addEffect(new PreventAllDamageToSourceEffect(Duration.EndOfTurn)
.setText("Prevent all damage that would be dealt to him this turn"));
this.getRightHalfCard().addAbility(ability);
}
private KytheonHeroOfAkros(final KytheonHeroOfAkros card) {
@ -78,3 +109,74 @@ enum KytheonHeroOfAkrosCondition implements Condition {
return "if {this} and at least two other creatures attacked this combat";
}
}
class GideonBattleForgedEffect extends RequirementEffect {
protected mage.MageObjectReference targetPermanentReference;
GideonBattleForgedEffect() {
super(Duration.Custom);
staticText = "up to one target creature an opponent controls attacks {this} during its controller's next turn if able";
}
private GideonBattleForgedEffect(final GideonBattleForgedEffect effect) {
super(effect);
this.targetPermanentReference = effect.targetPermanentReference;
}
@Override
public GideonBattleForgedEffect copy() {
return new GideonBattleForgedEffect(this);
}
@Override
public boolean isInactive(Ability source, Game game) {
if (targetPermanentReference == null) {
return true;
}
Permanent targetPermanent = targetPermanentReference.getPermanent(game);
if (targetPermanent == null) {
return true;
}
return game.getTurnPhaseType() == TurnPhase.END && this.isYourNextTurn(game); // discard on end of their next turn
}
@Override
public void init(Ability source, Game game) {
super.init(source, game);
if (getTargetPointer().getFirst(game, source) == null) {
discard();
} else {
targetPermanentReference = new mage.MageObjectReference(getTargetPointer().getFirst(game, source), game);
}
}
@Override
public boolean applies(Permanent permanent, Ability source, Game game) {
if (!permanent.getId().equals(getTargetPointer().getFirst(game, source))
|| !game.isActivePlayer(permanent.getControllerId())) {
return false;
}
Permanent planeswalker = source.getSourcePermanentIfItStillExists(game);
if (planeswalker == null) {
discard();
return false;
}
return true;
}
@Override
public UUID mustAttackDefender(Ability source, Game game) {
return source.getSourceId();
}
@Override
public boolean mustAttack(Game game) {
return true;
}
@Override
public boolean mustBlock(Game game) {
return false;
}
}

View file

@ -1,100 +0,0 @@
package mage.cards.l;
import mage.MageInt;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.keyword.NightboundAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.players.Player;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class LordOfTheUlvenwald extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wolves and Werewolves");
static {
filter.add(Predicates.or(
SubType.WOLF.getPredicate(),
SubType.WEREWOLF.getPredicate()
));
}
public LordOfTheUlvenwald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
this.color.setRed(true);
this.color.setGreen(true);
this.nightCard = true;
// Other Wolves and Werewolves you control get +1/+1.
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
1, 1, Duration.WhileOnBattlefield, filter, true
)));
// Whenever Lord of the Ulvenwald attacks, add {R} or {G}. Until end of turn, you don't lose this mana as steps and phases end.
this.addAbility(new AttacksTriggeredAbility(new LordOfTheUlvenwaldEffect()));
// Nightbound
this.addAbility(new NightboundAbility());
}
private LordOfTheUlvenwald(final LordOfTheUlvenwald card) {
super(card);
}
@Override
public LordOfTheUlvenwald copy() {
return new LordOfTheUlvenwald(this);
}
}
class LordOfTheUlvenwaldEffect extends OneShotEffect {
LordOfTheUlvenwaldEffect() {
super(Outcome.Benefit);
staticText = "add {R} or {G}. Until end of turn, you don't lose this mana as steps and phases end";
}
private LordOfTheUlvenwaldEffect(final LordOfTheUlvenwaldEffect effect) {
super(effect);
}
@Override
public LordOfTheUlvenwaldEffect copy() {
return new LordOfTheUlvenwaldEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player == null) {
return false;
}
Mana mana = player.chooseUse(
Outcome.Neutral, "Choose red or green", null,
"Red", "Green", source, game
) ? Mana.RedMana(1) : Mana.GreenMana(1);
player.getManaPool().addMana(mana, game, source, true);
return true;
}
}

View file

@ -1,42 +0,0 @@
package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.combat.CantBeBlockedByMoreThanOneSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
/**
*
* @author fireshoes
*/
public final class SinuousPredator extends CardImpl {
public SinuousPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
this.subtype.add(SubType.ELDRAZI);
this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(4);
this.toughness = new MageInt(4);
// this card is the second face of double-faced card
this.nightCard = true;
// Sinuous Predator can't be blocked by more than one creature.
this.addAbility(new SimpleStaticAbility(new CantBeBlockedByMoreThanOneSourceEffect()));
}
private SinuousPredator(final SinuousPredator card) {
super(card);
}
@Override
public SinuousPredator copy() {
return new SinuousPredator(this);
}
}

View file

@ -1,55 +0,0 @@
package mage.cards.t;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import java.util.UUID;
/**
* @author North
*/
public final class TerrorOfKruinPass extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.WEREWOLF, "Werewolves");
public TerrorOfKruinPass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF);
// this card is the second face of double-faced card
this.nightCard = true;
this.color.setRed(true);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
this.addAbility(DoubleStrikeAbility.getInstance());
// Werewolves you control have menace. (They can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
new MenaceAbility(), Duration.WhileOnBattlefield, filter, false
)));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Terror of Kruin Pass.
this.addAbility(new WerewolfBackTriggeredAbility());
}
private TerrorOfKruinPass(final TerrorOfKruinPass card) {
super(card);
}
@Override
public TerrorOfKruinPass copy() {
return new TerrorOfKruinPass(this);
}
}

View file

@ -1,84 +0,0 @@
package mage.cards.t;
import java.util.Optional;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.util.CardUtil;
/**
* @author balazskristof
*/
public final class TranceKujaFateDefied extends CardImpl {
public TranceKujaFateDefied(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.AVATAR);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(4);
this.toughness = new MageInt(6);
this.color.setBlack(true);
this.color.setRed(true);
this.nightCard = true;
// Flame Star -- If a Wizard you control would deal damage to a permanent or player, it deals double that damage instead.
this.addAbility(new SimpleStaticAbility(new TranceKujaFateDefiedEffect()).withFlavorWord("Flame Star"));
}
private TranceKujaFateDefied(final TranceKujaFateDefied card) {
super(card);
}
@Override
public TranceKujaFateDefied copy() {
return new TranceKujaFateDefied(this);
}
}
class TranceKujaFateDefiedEffect extends ReplacementEffectImpl {
TranceKujaFateDefiedEffect() {
super(Duration.WhileOnBattlefield, Outcome.Damage);
staticText = "If a Wizard you control would deal damage to a permanent or player, it deals double that damage instead.";
}
private TranceKujaFateDefiedEffect(final TranceKujaFateDefiedEffect effect) {
super(effect);
}
@Override
public TranceKujaFateDefiedEffect copy() {
return new TranceKujaFateDefiedEffect(this);
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType().equals(GameEvent.EventType.DAMAGE_PLAYER)
|| event.getType().equals(GameEvent.EventType.DAMAGE_PERMANENT);
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
return game.getControllerId(event.getSourceId()).equals(source.getControllerId())
&& Optional.ofNullable(game.getObject(event.getSourceId()))
.map(object -> object.hasSubtype(SubType.WIZARD, game))
.orElse(false);
}
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
event.setAmount(CardUtil.overflowMultiply(event.getAmount(), 2));
return false;
}
}

View file

@ -202,7 +202,6 @@ public final class EldritchMoon extends ExpansionSet {
cards.add(new SetCardInfo("Shrill Howler", 168, Rarity.UNCOMMON, mage.cards.s.ShrillHowler.class));
cards.add(new SetCardInfo("Sigarda's Aid", 41, Rarity.RARE, mage.cards.s.SigardasAid.class));
cards.add(new SetCardInfo("Sigardian Priest", 42, Rarity.COMMON, mage.cards.s.SigardianPriest.class));
cards.add(new SetCardInfo("Sinuous Predator", 163, Rarity.UNCOMMON, mage.cards.s.SinuousPredator.class));
cards.add(new SetCardInfo("Skirsdag Supplicant", 104, Rarity.COMMON, mage.cards.s.SkirsdagSupplicant.class));
cards.add(new SetCardInfo("Slayer's Cleaver", 198, Rarity.UNCOMMON, mage.cards.s.SlayersCleaver.class));
cards.add(new SetCardInfo("Smoldering Werewolf", 142, Rarity.UNCOMMON, mage.cards.s.SmolderingWerewolf.class));

View file

@ -291,11 +291,6 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Kefka, Court Mage", 398, Rarity.MYTHIC, mage.cards.k.KefkaCourtMage.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kefka, Court Mage", 496, Rarity.MYTHIC, mage.cards.k.KefkaCourtMage.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kefka, Court Mage", 543, Rarity.MYTHIC, mage.cards.k.KefkaCourtMage.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kefka, Ruler of Ruin", 231, Rarity.MYTHIC, mage.cards.k.KefkaRulerOfRuin.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kefka, Ruler of Ruin", 322, Rarity.MYTHIC, mage.cards.k.KefkaRulerOfRuin.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kefka, Ruler of Ruin", 398, Rarity.MYTHIC, mage.cards.k.KefkaRulerOfRuin.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kefka, Ruler of Ruin", 496, Rarity.MYTHIC, mage.cards.k.KefkaRulerOfRuin.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kefka, Ruler of Ruin", 543, Rarity.MYTHIC, mage.cards.k.KefkaRulerOfRuin.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kuja, Genome Sorcerer", 232, Rarity.RARE, mage.cards.k.KujaGenomeSorcerer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kuja, Genome Sorcerer", 399, Rarity.RARE, mage.cards.k.KujaGenomeSorcerer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kuja, Genome Sorcerer", 497, Rarity.RARE, mage.cards.k.KujaGenomeSorcerer.class, NON_FULL_USE_VARIOUS));
@ -561,10 +556,6 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Torgal, A Fine Hound", 345, Rarity.UNCOMMON, mage.cards.t.TorgalAFineHound.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Torgal, A Fine Hound", 474, Rarity.UNCOMMON, mage.cards.t.TorgalAFineHound.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Town Greeter", 209, Rarity.COMMON, mage.cards.t.TownGreeter.class));
cards.add(new SetCardInfo("Trance Kuja, Fate Defied", 232, Rarity.RARE, mage.cards.t.TranceKujaFateDefied.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Trance Kuja, Fate Defied", 399, Rarity.RARE, mage.cards.t.TranceKujaFateDefied.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Trance Kuja, Fate Defied", 497, Rarity.RARE, mage.cards.t.TranceKujaFateDefied.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Trance Kuja, Fate Defied", 544, Rarity.RARE, mage.cards.t.TranceKujaFateDefied.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Travel the Overworld", 82, Rarity.UNCOMMON, mage.cards.t.TravelTheOverworld.class));
cards.add(new SetCardInfo("Traveling Chocobo", "551a", Rarity.MYTHIC, mage.cards.t.TravelingChocobo.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Traveling Chocobo", "551b", Rarity.MYTHIC, mage.cards.t.TravelingChocobo.class, NON_FULL_USE_VARIOUS));

View file

@ -33,7 +33,6 @@ public final class FromTheVaultTransform extends ExpansionSet {
cards.add(new SetCardInfo("Huntmaster of the Fells", 11, Rarity.MYTHIC, mage.cards.h.HuntmasterOfTheFells.class));
cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 12, Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class));
cards.add(new SetCardInfo("Kytheon, Hero of Akros", 13, Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class));
cards.add(new SetCardInfo("Gideon, Battle-Forged", 13, Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class));
cards.add(new SetCardInfo("Liliana, Heretical Healer", 14, Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class));
cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 14, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class));
cards.add(new SetCardInfo("Nissa, Vastwood Seer", 15, Rarity.MYTHIC, mage.cards.n.NissaVastwoodSeer.class));

View file

@ -274,7 +274,6 @@ public final class Innistrad extends ExpansionSet {
cards.add(new SetCardInfo("Swamp", 256, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Swamp", 257, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Swamp", 258, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Terror of Kruin Pass", 152, Rarity.RARE, mage.cards.t.TerrorOfKruinPass.class));
cards.add(new SetCardInfo("Think Twice", 83, Rarity.COMMON, mage.cards.t.ThinkTwice.class));
cards.add(new SetCardInfo("Thraben Militia", 38, Rarity.COMMON, mage.cards.t.ThrabenMilitia.class));
cards.add(new SetCardInfo("Thraben Purebloods", 37, Rarity.COMMON, mage.cards.t.ThrabenPurebloods.class));

View file

@ -46,7 +46,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
cards.add(new SetCardInfo("Alchemist's Retrieval", 47, Rarity.COMMON, mage.cards.a.AlchemistsRetrieval.class));
cards.add(new SetCardInfo("Alluring Suitor", 141, Rarity.UNCOMMON, mage.cards.a.AlluringSuitor.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Alluring Suitor", 300, Rarity.UNCOMMON, mage.cards.a.AlluringSuitor.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Ancestor's Embrace", 22, Rarity.COMMON, mage.cards.a.AncestorsEmbrace.class));
cards.add(new SetCardInfo("Ancestral Anger", 142, Rarity.COMMON, mage.cards.a.AncestralAnger.class));
cards.add(new SetCardInfo("Ancient Lumberknot", 230, Rarity.UNCOMMON, mage.cards.a.AncientLumberknot.class));
cards.add(new SetCardInfo("Angelic Quartermaster", 2, Rarity.UNCOMMON, mage.cards.a.AngelicQuartermaster.class));
@ -268,8 +267,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
cards.add(new SetCardInfo("Jacob Hauken, Inspector", 320, Rarity.MYTHIC, mage.cards.j.JacobHaukenInspector.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Jacob Hauken, Inspector", 332, Rarity.MYTHIC, mage.cards.j.JacobHaukenInspector.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Jacob Hauken, Inspector", 65, Rarity.MYTHIC, mage.cards.j.JacobHaukenInspector.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Katilda's Rising Dawn", 21, Rarity.RARE, mage.cards.k.KatildasRisingDawn.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Katilda's Rising Dawn", 317, Rarity.RARE, mage.cards.k.KatildasRisingDawn.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Katilda, Dawnhart Martyr", 21, Rarity.RARE, mage.cards.k.KatildaDawnhartMartyr.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Katilda, Dawnhart Martyr", 317, Rarity.RARE, mage.cards.k.KatildaDawnhartMartyr.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kaya, Geist Hunter", 240, Rarity.MYTHIC, mage.cards.k.KayaGeistHunter.class, NON_FULL_USE_VARIOUS));

View file

@ -35,7 +35,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
cards.add(new SetCardInfo("Alchemist's Retrieval", 314, Rarity.COMMON, mage.cards.a.AlchemistsRetrieval.class));
cards.add(new SetCardInfo("Alluring Suitor", 408, Rarity.UNCOMMON, mage.cards.a.AlluringSuitor.class));
cards.add(new SetCardInfo("Ambitious Farmhand", 2, Rarity.UNCOMMON, mage.cards.a.AmbitiousFarmhand.class));
cards.add(new SetCardInfo("Ancestor's Embrace", 289, Rarity.COMMON, mage.cards.a.AncestorsEmbrace.class));
cards.add(new SetCardInfo("Ancestral Anger", 409, Rarity.COMMON, mage.cards.a.AncestralAnger.class));
cards.add(new SetCardInfo("Ancient Lumberknot", 497, Rarity.UNCOMMON, mage.cards.a.AncientLumberknot.class));
cards.add(new SetCardInfo("Angelfire Ignition", 209, Rarity.RARE, mage.cards.a.AngelfireIgnition.class));
@ -313,7 +312,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
cards.add(new SetCardInfo("Jadar, Ghoulcaller of Nephalia", 108, Rarity.RARE, mage.cards.j.JadarGhoulcallerOfNephalia.class));
cards.add(new SetCardInfo("Jerren, Corrupted Bishop", 109, Rarity.MYTHIC, mage.cards.j.JerrenCorruptedBishop.class));
cards.add(new SetCardInfo("Join the Dance", 229, Rarity.UNCOMMON, mage.cards.j.JoinTheDance.class));
cards.add(new SetCardInfo("Katilda's Rising Dawn", 288, Rarity.RARE, mage.cards.k.KatildasRisingDawn.class));
cards.add(new SetCardInfo("Katilda, Dawnhart Martyr", 288, Rarity.RARE, mage.cards.k.KatildaDawnhartMartyr.class));
cards.add(new SetCardInfo("Katilda, Dawnhart Prime", 230, Rarity.RARE, mage.cards.k.KatildaDawnhartPrime.class));
cards.add(new SetCardInfo("Kaya, Geist Hunter", 507, Rarity.MYTHIC, mage.cards.k.KayaGeistHunter.class));
@ -338,7 +336,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
cards.add(new SetCardInfo("Lightning Wolf", 435, Rarity.COMMON, mage.cards.l.LightningWolf.class));
cards.add(new SetCardInfo("Locked in the Cemetery", 60, Rarity.COMMON, mage.cards.l.LockedInTheCemetery.class));
cards.add(new SetCardInfo("Lord of the Forsaken", 110, Rarity.MYTHIC, mage.cards.l.LordOfTheForsaken.class));
cards.add(new SetCardInfo("Lord of the Ulvenwald", 231, Rarity.UNCOMMON, mage.cards.l.LordOfTheUlvenwald.class));
cards.add(new SetCardInfo("Loyal Gryff", 26, Rarity.UNCOMMON, mage.cards.l.LoyalGryff.class));
cards.add(new SetCardInfo("Ludevic, Necrogenius", 233, Rarity.RARE, mage.cards.l.LudevicNecrogenius.class));
cards.add(new SetCardInfo("Luminous Phantom", 27, Rarity.COMMON, mage.cards.l.LuminousPhantom.class));

View file

@ -256,8 +256,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
cards.add(new SetCardInfo("Locked in the Cemetery", 60, Rarity.COMMON, mage.cards.l.LockedInTheCemetery.class));
cards.add(new SetCardInfo("Lord of the Forsaken", 110, Rarity.MYTHIC, mage.cards.l.LordOfTheForsaken.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lord of the Forsaken", 346, Rarity.MYTHIC, mage.cards.l.LordOfTheForsaken.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lord of the Ulvenwald", 231, Rarity.UNCOMMON, mage.cards.l.LordOfTheUlvenwald.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lord of the Ulvenwald", 310, Rarity.UNCOMMON, mage.cards.l.LordOfTheUlvenwald.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Loyal Gryff", 26, Rarity.UNCOMMON, mage.cards.l.LoyalGryff.class));
cards.add(new SetCardInfo("Ludevic, Necrogenius", 233, Rarity.RARE, mage.cards.l.LudevicNecrogenius.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Ludevic, Necrogenius", 320, Rarity.RARE, mage.cards.l.LudevicNecrogenius.class, NON_FULL_USE_VARIOUS));

View file

@ -33,13 +33,13 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Abundant Maw", 329, Rarity.COMMON, mage.cards.a.AbundantMaw.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Aim High", 185, Rarity.COMMON, mage.cards.a.AimHigh.class));
cards.add(new SetCardInfo("Alchemist's Greeting", 140, Rarity.COMMON, mage.cards.a.AlchemistsGreeting.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Alchemist's Greeting", 393, Rarity.COMMON, mage.cards.a.AlchemistsGreeting.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Alchemist's Greeting", 393, Rarity.COMMON, mage.cards.a.AlchemistsGreeting.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Altered Ego", 228, Rarity.RARE, mage.cards.a.AlteredEgo.class));
cards.add(new SetCardInfo("Ambitious Farmhand", 448, Rarity.UNCOMMON, mage.cards.a.AmbitiousFarmhand.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Ambitious Farmhand", 8, Rarity.UNCOMMON, mage.cards.a.AmbitiousFarmhand.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Ambush Viper", 186, Rarity.COMMON, mage.cards.a.AmbushViper.class));
cards.add(new SetCardInfo("Ancestral Anger", 141, Rarity.COMMON, mage.cards.a.AncestralAnger.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Ancestral Anger", 394, Rarity.COMMON, mage.cards.a.AncestralAnger.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Ancestral Anger", 394, Rarity.COMMON, mage.cards.a.AncestralAnger.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Angel's Tomb", 253, Rarity.UNCOMMON, mage.cards.a.AngelsTomb.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Angel's Tomb", 438, Rarity.UNCOMMON, mage.cards.a.AngelsTomb.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Angelfire Ignition", 229, Rarity.RARE, mage.cards.a.AngelfireIgnition.class));
@ -75,7 +75,7 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Blood Artist", 372, Rarity.UNCOMMON, mage.cards.b.BloodArtist.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Blood Artist", 97, Rarity.UNCOMMON, mage.cards.b.BloodArtist.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Blood Mist", 143, Rarity.UNCOMMON, mage.cards.b.BloodMist.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Blood Mist", 395, Rarity.UNCOMMON, mage.cards.b.BloodMist.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Blood Mist", 395, Rarity.UNCOMMON, mage.cards.b.BloodMist.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Blood Petal Celebrant", 144, Rarity.COMMON, mage.cards.b.BloodPetalCelebrant.class));
cards.add(new SetCardInfo("Bloodbat Summoner", 138, Rarity.RARE, mage.cards.b.BloodbatSummoner.class));
cards.add(new SetCardInfo("Bloodhall Priest", 232, Rarity.RARE, mage.cards.b.BloodhallPriest.class));
@ -90,7 +90,7 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Boarded Window", 255, Rarity.UNCOMMON, mage.cards.b.BoardedWindow.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Boarded Window", 439, Rarity.UNCOMMON, mage.cards.b.BoardedWindow.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Borrowed Hostility", 146, Rarity.COMMON, mage.cards.b.BorrowedHostility.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Borrowed Hostility", 396, Rarity.COMMON, mage.cards.b.BorrowedHostility.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Borrowed Hostility", 396, Rarity.COMMON, mage.cards.b.BorrowedHostility.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Bound by Moonsilver", 13, Rarity.COMMON, mage.cards.b.BoundByMoonsilver.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Bound by Moonsilver", 335, Rarity.COMMON, mage.cards.b.BoundByMoonsilver.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Bramble Wurm", 187, Rarity.COMMON, mage.cards.b.BrambleWurm.class, NON_FULL_USE_VARIOUS));
@ -98,7 +98,7 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Brisela, Voice of Nightmares", "14b", Rarity.MYTHIC, mage.cards.b.BriselaVoiceOfNightmares.class));
cards.add(new SetCardInfo("Bruna, the Fading Light", 14, Rarity.RARE, mage.cards.b.BrunaTheFadingLight.class));
cards.add(new SetCardInfo("Burning Vengeance", 147, Rarity.UNCOMMON, mage.cards.b.BurningVengeance.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Burning Vengeance", 397, Rarity.UNCOMMON, mage.cards.b.BurningVengeance.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Burning Vengeance", 397, Rarity.UNCOMMON, mage.cards.b.BurningVengeance.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Butcher Ghoul", 373, Rarity.COMMON, mage.cards.b.ButcherGhoul.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Butcher Ghoul", 99, Rarity.COMMON, mage.cards.b.ButcherGhoul.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Butcher's Cleaver", 256, Rarity.UNCOMMON, mage.cards.b.ButchersCleaver.class, NON_FULL_USE_VARIOUS));
@ -236,10 +236,10 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Grapple with the Past", 199, Rarity.COMMON, mage.cards.g.GrappleWithThePast.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Grapple with the Past", 412, Rarity.COMMON, mage.cards.g.GrappleWithThePast.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Gravecrawler", 114, Rarity.RARE, mage.cards.g.Gravecrawler.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Gravecrawler", 380, Rarity.RARE, mage.cards.g.Gravecrawler.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Gravecrawler", 380, Rarity.RARE, mage.cards.g.Gravecrawler.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Grimgrin, Corpse-Born", 239, Rarity.MYTHIC, mage.cards.g.GrimgrinCorpseBorn.class));
cards.add(new SetCardInfo("Griselbrand", 115, Rarity.MYTHIC, mage.cards.g.Griselbrand.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Griselbrand", 381, Rarity.MYTHIC, mage.cards.g.Griselbrand.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Griselbrand", 381, Rarity.MYTHIC, mage.cards.g.Griselbrand.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Griselbrand", 485, Rarity.MYTHIC, mage.cards.g.Griselbrand.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Grizzled Angler", 458, Rarity.UNCOMMON, mage.cards.g.GrizzledAngler.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Grizzled Angler", 67, Rarity.UNCOMMON, mage.cards.g.GrizzledAngler.class, NON_FULL_USE_VARIOUS));
@ -256,11 +256,11 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Hanweir, the Writhing Township", "157b", Rarity.RARE, mage.cards.h.HanweirTheWrithingTownship.class));
cards.add(new SetCardInfo("Harvest Hand", 265, Rarity.COMMON, mage.cards.h.HarvestHand.class));
cards.add(new SetCardInfo("Haunted Dead", 116, Rarity.UNCOMMON, mage.cards.h.HauntedDead.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Haunted Dead", 382, Rarity.UNCOMMON, mage.cards.h.HauntedDead.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Haunted Dead", 382, Rarity.UNCOMMON, mage.cards.h.HauntedDead.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Haunted Ridge", 280, Rarity.RARE, mage.cards.h.HauntedRidge.class));
cards.add(new SetCardInfo("Heartless Summoning", 117, Rarity.RARE, mage.cards.h.HeartlessSummoning.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Heartless Summoning", 309, Rarity.RARE, mage.cards.h.HeartlessSummoning.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Heartless Summoning", 383, Rarity.RARE, mage.cards.h.HeartlessSummoning.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Heartless Summoning", 383, Rarity.RARE, mage.cards.h.HeartlessSummoning.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Helvault", 266, Rarity.RARE, mage.cards.h.Helvault.class));
cards.add(new SetCardInfo("Hermit Druid", 202, Rarity.RARE, mage.cards.h.HermitDruid.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Hermit Druid", 488, Rarity.RARE, mage.cards.h.HermitDruid.class, FULL_ART_USE_VARIOUS));
@ -285,10 +285,10 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Incited Rabble", 451, Rarity.UNCOMMON, mage.cards.i.IncitedRabble.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Incited Rabble", 46, Rarity.UNCOMMON, mage.cards.i.IncitedRabble.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Indulgent Aristocrat", 118, Rarity.UNCOMMON, mage.cards.i.IndulgentAristocrat.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Indulgent Aristocrat", 384, Rarity.UNCOMMON, mage.cards.i.IndulgentAristocrat.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Indulgent Aristocrat", 384, Rarity.UNCOMMON, mage.cards.i.IndulgentAristocrat.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Infernal Grasp", 119, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Infernal Grasp", 310, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Infernal Grasp", 385, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Infernal Grasp", 385, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Inspiring Captain", 28, Rarity.COMMON, mage.cards.i.InspiringCaptain.class));
cards.add(new SetCardInfo("Intangible Virtue", 29, Rarity.UNCOMMON, mage.cards.i.IntangibleVirtue.class));
cards.add(new SetCardInfo("Intrepid Provisioner", 205, Rarity.COMMON, mage.cards.i.IntrepidProvisioner.class));
@ -301,7 +301,7 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Join the Dance", 242, Rarity.UNCOMMON, mage.cards.j.JoinTheDance.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Join the Dance", 432, Rarity.UNCOMMON, mage.cards.j.JoinTheDance.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Killing Wave", 121, Rarity.UNCOMMON, mage.cards.k.KillingWave.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Killing Wave", 386, Rarity.UNCOMMON, mage.cards.k.KillingWave.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Killing Wave", 386, Rarity.UNCOMMON, mage.cards.k.KillingWave.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Kruin Outlaw", 161, Rarity.RARE, mage.cards.k.KruinOutlaw.class));
cards.add(new SetCardInfo("Laboratory Maniac", 304, Rarity.UNCOMMON, mage.cards.l.LaboratoryManiac.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Laboratory Maniac", 359, Rarity.UNCOMMON, mage.cards.l.LaboratoryManiac.class, RETRO_ART_USE_VARIOUS));
@ -311,9 +311,9 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Liesa, Forgotten Archangel", 243, Rarity.RARE, mage.cards.l.LiesaForgottenArchangel.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Liesa, Forgotten Archangel", 433, Rarity.RARE, mage.cards.l.LiesaForgottenArchangel.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Lightning Axe", 162, Rarity.UNCOMMON, mage.cards.l.LightningAxe.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lightning Axe", 398, Rarity.UNCOMMON, mage.cards.l.LightningAxe.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Lightning Axe", 398, Rarity.UNCOMMON, mage.cards.l.LightningAxe.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Lightning Mauler", 163, Rarity.UNCOMMON, mage.cards.l.LightningMauler.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lightning Mauler", 399, Rarity.UNCOMMON, mage.cards.l.LightningMauler.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Lightning Mauler", 399, Rarity.UNCOMMON, mage.cards.l.LightningMauler.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Liliana of the Veil", 475, Rarity.MYTHIC, mage.cards.l.LilianaOfTheVeil.class, RETRO_ART));
cards.add(new SetCardInfo("Lingering Souls", 30, Rarity.UNCOMMON, mage.cards.l.LingeringSouls.class));
cards.add(new SetCardInfo("Lumberknot", 206, Rarity.UNCOMMON, mage.cards.l.Lumberknot.class, NON_FULL_USE_VARIOUS));
@ -353,7 +353,7 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Moonscarred Werewolf", 212, Rarity.COMMON, mage.cards.m.MoonscarredWerewolf.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Moonscarred Werewolf", 468, Rarity.COMMON, mage.cards.m.MoonscarredWerewolf.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Morbid Opportunist", 124, Rarity.UNCOMMON, mage.cards.m.MorbidOpportunist.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Morbid Opportunist", 388, Rarity.UNCOMMON, mage.cards.m.MorbidOpportunist.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Morbid Opportunist", 388, Rarity.UNCOMMON, mage.cards.m.MorbidOpportunist.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Morkrut Banshee", 125, Rarity.UNCOMMON, mage.cards.m.MorkrutBanshee.class));
cards.add(new SetCardInfo("Mountain", 294, Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Mountain", 295, Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));
@ -407,7 +407,7 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Seize the Storm", 170, Rarity.COMMON, mage.cards.s.SeizeTheStorm.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Seize the Storm", 401, Rarity.COMMON, mage.cards.s.SeizeTheStorm.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Sever the Bloodline", 130, Rarity.UNCOMMON, mage.cards.s.SeverTheBloodline.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sever the Bloodline", 389, Rarity.UNCOMMON, mage.cards.s.SeverTheBloodline.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Sever the Bloodline", 389, Rarity.UNCOMMON, mage.cards.s.SeverTheBloodline.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Shattered Sanctum", 283, Rarity.RARE, mage.cards.s.ShatteredSanctum.class));
cards.add(new SetCardInfo("Shipwreck Marsh", 284, Rarity.RARE, mage.cards.s.ShipwreckMarsh.class));
cards.add(new SetCardInfo("Shrill Howler", 214, Rarity.UNCOMMON, mage.cards.s.ShrillHowler.class, NON_FULL_USE_VARIOUS));
@ -463,7 +463,6 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Tamiyo, Field Researcher", 249, Rarity.MYTHIC, mage.cards.t.TamiyoFieldResearcher.class));
cards.add(new SetCardInfo("Temporal Mastery", 307, Rarity.MYTHIC, mage.cards.t.TemporalMastery.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Temporal Mastery", 90, Rarity.MYTHIC, mage.cards.t.TemporalMastery.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Terror of Kruin Pass", 161, Rarity.RARE, mage.cards.t.TerrorOfKruinPass.class));
cards.add(new SetCardInfo("Thalia, Heretic Cathar", 300, Rarity.RARE, mage.cards.t.ThaliaHereticCathar.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Thalia, Heretic Cathar", 351, Rarity.RARE, mage.cards.t.ThaliaHereticCathar.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Thalia, Heretic Cathar", 44, Rarity.RARE, mage.cards.t.ThaliaHereticCathar.class, NON_FULL_USE_VARIOUS));
@ -471,7 +470,7 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("The Gitrog Monster", 431, Rarity.MYTHIC, mage.cards.t.TheGitrogMonster.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("The Gitrog Monster", 489, Rarity.MYTHIC, mage.cards.t.TheGitrogMonster.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("The Meathook Massacre", 122, Rarity.MYTHIC, mage.cards.t.TheMeathookMassacre.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("The Meathook Massacre", 387, Rarity.MYTHIC, mage.cards.t.TheMeathookMassacre.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("The Meathook Massacre", 387, Rarity.MYTHIC, mage.cards.t.TheMeathookMassacre.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("The Meathook Massacre", 486, Rarity.MYTHIC, mage.cards.t.TheMeathookMassacre.class, FULL_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Thermo-Alchemist", 174, Rarity.UNCOMMON, mage.cards.t.ThermoAlchemist.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Thermo-Alchemist", 403, Rarity.UNCOMMON, mage.cards.t.ThermoAlchemist.class, RETRO_ART_USE_VARIOUS));
@ -491,7 +490,7 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Town Gossipmonger", 451, Rarity.UNCOMMON, mage.cards.t.TownGossipmonger.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Town Gossipmonger", 46, Rarity.UNCOMMON, mage.cards.t.TownGossipmonger.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tragic Slip", 134, Rarity.COMMON, mage.cards.t.TragicSlip.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Tragic Slip", 390, Rarity.COMMON, mage.cards.t.TragicSlip.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Tragic Slip", 390, Rarity.COMMON, mage.cards.t.TragicSlip.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Travel Preparations", 220, Rarity.UNCOMMON, mage.cards.t.TravelPreparations.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Travel Preparations", 421, Rarity.UNCOMMON, mage.cards.t.TravelPreparations.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Traveler's Amulet", 273, Rarity.COMMON, mage.cards.t.TravelersAmulet.class));
@ -499,7 +498,7 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Traverse the Ulvenwald", 422, Rarity.RARE, mage.cards.t.TraverseTheUlvenwald.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Tree of Perdition", 135, Rarity.RARE, mage.cards.t.TreeOfPerdition.class));
cards.add(new SetCardInfo("Triskaidekaphobia", 136, Rarity.UNCOMMON, mage.cards.t.Triskaidekaphobia.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Triskaidekaphobia", 391, Rarity.UNCOMMON, mage.cards.t.Triskaidekaphobia.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Triskaidekaphobia", 391, Rarity.UNCOMMON, mage.cards.t.Triskaidekaphobia.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Twinblade Geist", 452, Rarity.UNCOMMON, mage.cards.t.TwinbladeGeist.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Twinblade Geist", 47, Rarity.UNCOMMON, mage.cards.t.TwinbladeGeist.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Twinblade Invocation", 452, Rarity.UNCOMMON, mage.cards.t.TwinbladeInvocation.class, RETRO_ART_USE_VARIOUS));
@ -520,7 +519,7 @@ public class InnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Village Messenger", 179, Rarity.COMMON, mage.cards.v.VillageMessenger.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Village Messenger", 466, Rarity.COMMON, mage.cards.v.VillageMessenger.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Village Rites", 137, Rarity.COMMON, mage.cards.v.VillageRites.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Village Rites", 392, Rarity.COMMON, mage.cards.v.VillageRites.class,RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Village Rites", 392, Rarity.COMMON, mage.cards.v.VillageRites.class, RETRO_ART_USE_VARIOUS));
cards.add(new SetCardInfo("Villagers of Estwald", 224, Rarity.COMMON, mage.cards.v.VillagersOfEstwald.class));
cards.add(new SetCardInfo("Voice of the Blessed", 50, Rarity.RARE, mage.cards.v.VoiceOfTheBlessed.class));
cards.add(new SetCardInfo("Voldaren Ambusher", 180, Rarity.UNCOMMON, mage.cards.v.VoldarenAmbusher.class));

View file

@ -144,7 +144,6 @@ public final class KamigawaNeonDynasty extends ExpansionSet {
cards.add(new SetCardInfo("Enthusiastic Mechanaut", 509, Rarity.UNCOMMON, mage.cards.e.EnthusiasticMechanaut.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Era of Enlightenment", 11, Rarity.COMMON, mage.cards.e.EraOfEnlightenment.class));
cards.add(new SetCardInfo("Essence Capture", 52, Rarity.UNCOMMON, mage.cards.e.EssenceCapture.class));
cards.add(new SetCardInfo("Etching of Kumano", 152, Rarity.UNCOMMON, mage.cards.e.EtchingOfKumano.class));
cards.add(new SetCardInfo("Experimental Synthesizer", 138, Rarity.COMMON, mage.cards.e.ExperimentalSynthesizer.class));
cards.add(new SetCardInfo("Explosive Entry", 139, Rarity.COMMON, mage.cards.e.ExplosiveEntry.class));
cards.add(new SetCardInfo("Explosive Singularity", 140, Rarity.MYTHIC, mage.cards.e.ExplosiveSingularity.class, NON_FULL_USE_VARIOUS));

View file

@ -132,7 +132,6 @@ public final class MagicOrigins extends ExpansionSet {
cards.add(new SetCardInfo("Gather the Pack", 178, Rarity.UNCOMMON, mage.cards.g.GatherThePack.class));
cards.add(new SetCardInfo("Ghirapur Aether Grid", 148, Rarity.UNCOMMON, mage.cards.g.GhirapurAetherGrid.class));
cards.add(new SetCardInfo("Ghirapur Gearcrafter", 149, Rarity.COMMON, mage.cards.g.GhirapurGearcrafter.class));
cards.add(new SetCardInfo("Gideon, Battle-Forged", 23, Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class));
cards.add(new SetCardInfo("Gideon's Phalanx", 14, Rarity.RARE, mage.cards.g.GideonsPhalanx.class));
cards.add(new SetCardInfo("Gilt-Leaf Winnower", 99, Rarity.RARE, mage.cards.g.GiltLeafWinnower.class));
cards.add(new SetCardInfo("Gnarlroot Trapper", 100, Rarity.UNCOMMON, mage.cards.g.GnarlrootTrapper.class));

View file

@ -35,7 +35,6 @@ public class MagicOriginsPromos extends ExpansionSet {
cards.add(new SetCardInfo("Exquisite Firecraft", "143s", Rarity.RARE, mage.cards.e.ExquisiteFirecraft.class));
cards.add(new SetCardInfo("Gaea's Revenge", "177s", Rarity.RARE, mage.cards.g.GaeasRevenge.class));
cards.add(new SetCardInfo("Gideon's Phalanx", "14s", Rarity.RARE, mage.cards.g.GideonsPhalanx.class));
cards.add(new SetCardInfo("Gideon, Battle-Forged", "23s", Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class));
cards.add(new SetCardInfo("Gilt-Leaf Winnower", "99s", Rarity.RARE, mage.cards.g.GiltLeafWinnower.class));
cards.add(new SetCardInfo("Goblin Piledriver", "151s", Rarity.RARE, mage.cards.g.GoblinPiledriver.class));
cards.add(new SetCardInfo("Graveblade Marauder", "101s", Rarity.RARE, mage.cards.g.GravebladeMarauder.class));

View file

@ -159,7 +159,6 @@ public final class MarchOfTheMachine extends ExpansionSet {
cards.add(new SetCardInfo("Ghalta and Mavren", 307, Rarity.RARE, mage.cards.g.GhaltaAndMavren.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Ghalta and Mavren", 386, Rarity.RARE, mage.cards.g.GhaltaAndMavren.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Gift of Compleation", 106, Rarity.UNCOMMON, mage.cards.g.GiftOfCompleation.class));
cards.add(new SetCardInfo("Gitaxian Spellstalker", 151, Rarity.UNCOMMON, mage.cards.g.GitaxianSpellstalker.class));
cards.add(new SetCardInfo("Glissa, Herald of Predation", 226, Rarity.RARE, mage.cards.g.GlissaHeraldOfPredation.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Glissa, Herald of Predation", 308, Rarity.RARE, mage.cards.g.GlissaHeraldOfPredation.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Glistening Dawn", 187, Rarity.RARE, mage.cards.g.GlisteningDawn.class, NON_FULL_USE_VARIOUS));

View file

@ -166,7 +166,6 @@ public class PioneerMasters extends ExpansionSet {
cards.add(new SetCardInfo("Ghor-Clan Rampager", 226, Rarity.UNCOMMON, mage.cards.g.GhorClanRampager.class));
cards.add(new SetCardInfo("Ghostblade Eidolon", 13, Rarity.COMMON, mage.cards.g.GhostbladeEidolon.class));
cards.add(new SetCardInfo("Gideon, Ally of Zendikar", 14, Rarity.MYTHIC, mage.cards.g.GideonAllyOfZendikar.class));
cards.add(new SetCardInfo("Gideon, Battle-Forged", 23, Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class));
cards.add(new SetCardInfo("Gift of Orzhova", 307, Rarity.UNCOMMON, mage.cards.g.GiftOfOrzhova.class));
cards.add(new SetCardInfo("Give // Take", 389, Rarity.UNCOMMON, mage.cards.g.GiveTake.class));
cards.add(new SetCardInfo("Gladecover Scout", 175, Rarity.COMMON, mage.cards.g.GladecoverScout.class));

View file

@ -21,7 +21,6 @@ public class SanDiegoComicCon2015 extends ExpansionSet {
this.hasBasicLands = false;
cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 135, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class));
cards.add(new SetCardInfo("Gideon, Battle-Forged", 23, Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class));
cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 60, Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class));
cards.add(new SetCardInfo("Kytheon, Hero of Akros", 23, Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class));
cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 106, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class));

View file

@ -90,7 +90,6 @@ public class ShadowsOfThePast extends ExpansionSet {
cards.add(new SetCardInfo("Spider Spawning", 56, Rarity.UNCOMMON, mage.cards.s.SpiderSpawning.class));
cards.add(new SetCardInfo("Stitcher's Apprentice", 24, Rarity.COMMON, mage.cards.s.StitchersApprentice.class));
cards.add(new SetCardInfo("Stromkirk Captain", 67, Rarity.UNCOMMON, mage.cards.s.StromkirkCaptain.class));
cards.add(new SetCardInfo("Terror of Kruin Pass", 42, Rarity.RARE, mage.cards.t.TerrorOfKruinPass.class));
cards.add(new SetCardInfo("Tragic Slip", 35, Rarity.COMMON, mage.cards.t.TragicSlip.class));
cards.add(new SetCardInfo("Traitorous Blood", 45, Rarity.COMMON, mage.cards.t.TraitorousBlood.class));
cards.add(new SetCardInfo("Travel Preparations", 57, Rarity.COMMON, mage.cards.t.TravelPreparations.class));

View file

@ -89,7 +89,6 @@ public final class ShadowsOverInnistrad extends ExpansionSet {
cards.add(new SetCardInfo("Dead Weight", 106, Rarity.COMMON, mage.cards.d.DeadWeight.class));
cards.add(new SetCardInfo("Deathcap Cultivator", 202, Rarity.RARE, mage.cards.d.DeathcapCultivator.class));
cards.add(new SetCardInfo("Declaration in Stone", 12, Rarity.RARE, mage.cards.d.DeclarationInStone.class));
cards.add(new SetCardInfo("Demon-Possessed Witch", 119, Rarity.UNCOMMON, mage.cards.d.DemonPossessedWitch.class));
cards.add(new SetCardInfo("Deny Existence", 55, Rarity.COMMON, mage.cards.d.DenyExistence.class));
cards.add(new SetCardInfo("Descend upon the Sinful", 13, Rarity.MYTHIC, mage.cards.d.DescendUponTheSinful.class));
cards.add(new SetCardInfo("Devils' Playground", 151, Rarity.RARE, mage.cards.d.DevilsPlayground.class));
@ -121,7 +120,6 @@ public final class ShadowsOverInnistrad extends ExpansionSet {
cards.add(new SetCardInfo("Fevered Visions", 244, Rarity.RARE, mage.cards.f.FeveredVisions.class));
cards.add(new SetCardInfo("Fiery Temper", 156, Rarity.COMMON, mage.cards.f.FieryTemper.class));
cards.add(new SetCardInfo("Flameblade Angel", 157, Rarity.RARE, mage.cards.f.FlamebladeAngel.class));
cards.add(new SetCardInfo("Flameheart Werewolf", 169, Rarity.UNCOMMON, mage.cards.f.FlameheartWerewolf.class));
cards.add(new SetCardInfo("Fleeting Memories", 62, Rarity.UNCOMMON, mage.cards.f.FleetingMemories.class));
cards.add(new SetCardInfo("Foreboding Ruins", 272, Rarity.RARE, mage.cards.f.ForebodingRuins.class));
cards.add(new SetCardInfo("Forest", 295, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));

View file

@ -88,7 +88,6 @@ public class ShadowsOverInnistradRemastered extends ExpansionSet {
cards.add(new SetCardInfo("Deathcap Cultivator", 193, Rarity.UNCOMMON, mage.cards.d.DeathcapCultivator.class));
cards.add(new SetCardInfo("Decimator of the Provinces", 2, Rarity.MYTHIC, mage.cards.d.DecimatorOfTheProvinces.class));
cards.add(new SetCardInfo("Declaration in Stone", 23, Rarity.RARE, mage.cards.d.DeclarationInStone.class));
cards.add(new SetCardInfo("Demon-Possessed Witch", 107, Rarity.UNCOMMON, mage.cards.d.DemonPossessedWitch.class));
cards.add(new SetCardInfo("Deny Existence", 60, Rarity.COMMON, mage.cards.d.DenyExistence.class));
cards.add(new SetCardInfo("Deranged Whelp", 150, Rarity.COMMON, mage.cards.d.DerangedWhelp.class));
cards.add(new SetCardInfo("Descend upon the Sinful", 24, Rarity.MYTHIC, mage.cards.d.DescendUponTheSinful.class));

View file

@ -237,7 +237,6 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet {
cards.add(new SetCardInfo("Jadelight Spelunker", 403, Rarity.RARE, mage.cards.j.JadelightSpelunker.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Join the Dead", 110, Rarity.COMMON, mage.cards.j.JoinTheDead.class));
cards.add(new SetCardInfo("Kaslem's Stonetree", 197, Rarity.COMMON, mage.cards.k.KaslemsStonetree.class));
cards.add(new SetCardInfo("Kaslem's Strider", 197, Rarity.COMMON, mage.cards.k.KaslemsStrider.class));
cards.add(new SetCardInfo("Kellan, Daring Traveler", 231, Rarity.RARE, mage.cards.k.KellanDaringTraveler.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kellan, Daring Traveler", 341, Rarity.RARE, mage.cards.k.KellanDaringTraveler.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kinjalli's Dawnrunner", 19, Rarity.UNCOMMON, mage.cards.k.KinjallisDawnrunner.class));

View file

@ -1,4 +1,3 @@
package org.mage.test.cards.abilities.oneshot.damage;
import mage.constants.PhaseStep;
@ -38,7 +37,7 @@ public class FlameheartWerewolfTest extends CardTestPlayerBase {
// both should die
assertPermanentCount(playerA, "Flameheart Werewolf", 0);
assertExileCount("Flameheart Werewolf", 1); // exiled by Kalitas
assertExileCount("Kessig Forgemaster", 1); // exiled by Kalitas
assertPermanentCount(playerB, "Kalitas, Traitor of Ghet", 0);
assertGraveyardCount(playerB, "Kalitas, Traitor of Ghet", 1);
}