mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 10:40:06 -08:00
parent
e0770c8aa5
commit
b43ab76d60
45 changed files with 556 additions and 1122 deletions
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -3,8 +3,8 @@ package mage.cards.k;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
||||||
import mage.abilities.keyword.CraftAbility;
|
import mage.abilities.keyword.CraftAbility;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.PutCards;
|
import mage.constants.PutCards;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
|
@ -15,23 +15,30 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class KaslemsStonetree extends CardImpl {
|
public final class KaslemsStonetree extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public KaslemsStonetree(UUID ownerId, CardSetInfo setInfo) {
|
public KaslemsStonetree(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{G}");
|
super(ownerId, setInfo,
|
||||||
this.secondSideCardClazz = mage.cards.k.KaslemsStrider.class;
|
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.
|
// 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,
|
6, 1, StaticFilters.FILTER_CARD_LAND_A,
|
||||||
PutCards.BATTLEFIELD_TAPPED, PutCards.BOTTOM_RANDOM
|
PutCards.BATTLEFIELD_TAPPED, PutCards.BOTTOM_RANDOM
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// Craft with Cave {5}{G}
|
// Craft with Cave {5}{G}
|
||||||
this.addAbility(new CraftAbility(
|
this.getLeftHalfCard().addAbility(new CraftAbility(
|
||||||
"{5}{G}", "Cave", "another Cave you " +
|
"{5}{G}", "Cave", "another Cave you " +
|
||||||
"control or a Cave card in your graveyard", SubType.CAVE.getPredicate()
|
"control or a Cave card in your graveyard", SubType.CAVE.getPredicate()
|
||||||
));
|
));
|
||||||
|
|
||||||
|
// Kaslem's Strider
|
||||||
|
this.getRightHalfCard().setPT(5, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
private KaslemsStonetree(final KaslemsStonetree card) {
|
private KaslemsStonetree(final KaslemsStonetree card) {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,29 +1,31 @@
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.dynamicvalue.DynamicValue;
|
import mage.abilities.dynamicvalue.DynamicValue;
|
||||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
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.effects.common.continuous.SetBasePowerToughnessSourceEffect;
|
||||||
import mage.abilities.hint.Hint;
|
import mage.abilities.hint.Hint;
|
||||||
import mage.abilities.hint.ValueHint;
|
import mage.abilities.hint.ValueHint;
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
import mage.abilities.keyword.*;
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
|
||||||
import mage.abilities.keyword.LifelinkAbility;
|
|
||||||
import mage.abilities.keyword.ProtectionAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.filter.predicate.Predicates;
|
import mage.filter.predicate.Predicates;
|
||||||
|
import mage.target.TargetPermanent;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class KatildaDawnhartMartyr extends CardImpl {
|
public final class KatildaDawnhartMartyr extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
private static final FilterPermanent filter
|
private static final FilterPermanent filter
|
||||||
= new FilterPermanent(SubType.VAMPIRE, "Vampires");
|
= 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);
|
private static final Hint hint = new ValueHint("Spirits and enchantments you control", xValue);
|
||||||
|
|
||||||
public KatildaDawnhartMartyr(UUID ownerId, CardSetInfo setInfo) {
|
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);
|
// Katilda, Dawnhart Martyr
|
||||||
this.subtype.add(SubType.SPIRIT);
|
this.getLeftHalfCard().setPT(0, 0);
|
||||||
this.subtype.add(SubType.WARLOCK);
|
|
||||||
this.power = new MageInt(0);
|
|
||||||
this.toughness = new MageInt(0);
|
|
||||||
this.secondSideCardClazz = mage.cards.k.KatildasRisingDawn.class;
|
|
||||||
|
|
||||||
// Flying
|
// Flying
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.getLeftHalfCard().addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// Lifelink
|
// Lifelink
|
||||||
this.addAbility(LifelinkAbility.getInstance());
|
this.getLeftHalfCard().addAbility(LifelinkAbility.getInstance());
|
||||||
|
|
||||||
// Protection from Vampires
|
// 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.
|
// 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)
|
Zone.ALL, new SetBasePowerToughnessSourceEffect(xValue)
|
||||||
).addHint(hint));
|
).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}
|
// 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) {
|
private KatildaDawnhartMartyr(final KatildaDawnhartMartyr card) {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +1,19 @@
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility;
|
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.costs.mana.GenericManaCost;
|
||||||
|
import mage.abilities.dynamicvalue.common.SavedLifeLossValue;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
import mage.abilities.effects.common.SacrificeOpponentsEffect;
|
import mage.abilities.effects.common.SacrificeOpponentsEffect;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.cards.*;
|
import mage.cards.*;
|
||||||
import mage.constants.CardType;
|
import mage.constants.*;
|
||||||
import mage.constants.Outcome;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.SuperType;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Controllable;
|
import mage.game.Controllable;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
|
@ -25,28 +25,38 @@ import java.util.*;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class KefkaCourtMage extends CardImpl {
|
public final class KefkaCourtMage extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public KefkaCourtMage(UUID ownerId, CardSetInfo setInfo) {
|
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);
|
// Kefka, Court Mage
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.getLeftHalfCard().setPT(4, 5);
|
||||||
this.subtype.add(SubType.WIZARD);
|
|
||||||
this.power = new MageInt(4);
|
|
||||||
this.toughness = new MageInt(5);
|
|
||||||
this.secondSideCardClazz = mage.cards.k.KefkaRulerOfRuin.class;
|
|
||||||
|
|
||||||
// Whenever Kefka enters or attacks, each player discards a card. Then you draw a card for each card type among cards discarded this way.
|
// 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.
|
// {8}: Each opponent sacrifices a permanent of their choice. Transform Kefka. Activate only as a sorcery.
|
||||||
this.addAbility(new TransformAbility());
|
|
||||||
Ability ability = new ActivateAsSorceryActivatedAbility(
|
Ability ability = new ActivateAsSorceryActivatedAbility(
|
||||||
new SacrificeOpponentsEffect(StaticFilters.FILTER_PERMANENT), new GenericManaCost(8)
|
new SacrificeOpponentsEffect(StaticFilters.FILTER_PERMANENT), new GenericManaCost(8)
|
||||||
);
|
);
|
||||||
ability.addEffect(new TransformSourceEffect());
|
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) {
|
private KefkaCourtMage(final KefkaCourtMage card) {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,37 +1,48 @@
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.BlocksOrBlockedByCreatureSourceTriggeredAbility;
|
import mage.abilities.common.BlocksOrBlockedByCreatureSourceTriggeredAbility;
|
||||||
|
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||||
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.StaticFilters;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class KessigForgemaster extends CardImpl {
|
public final class KessigForgemaster extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public KessigForgemaster(UUID ownerId, CardSetInfo setInfo) {
|
public KessigForgemaster(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
super(ownerId, setInfo,
|
||||||
this.subtype.add(SubType.HUMAN, SubType.SHAMAN, SubType.WEREWOLF);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SHAMAN, SubType.WEREWOLF}, "{1}{R}",
|
||||||
this.power = new MageInt(2);
|
"Flameheart Werewolf",
|
||||||
this.toughness = new MageInt(1);
|
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.
|
// 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.
|
// At the beginning of each upkeep, if no spells were cast last turn, transform Kessig Forgemaster.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||||
this.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) {
|
private KessigForgemaster(final KessigForgemaster card) {
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,21 @@
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.Mana;
|
import mage.Mana;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
import mage.abilities.common.AttacksTriggeredAbility;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||||
import mage.abilities.keyword.DayboundAbility;
|
import mage.abilities.keyword.DayboundAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.abilities.keyword.NightboundAbility;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
|
import mage.filter.predicate.Predicates;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
|
||||||
|
|
@ -19,23 +24,45 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @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) {
|
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);
|
// Kessig Naturalist
|
||||||
this.subtype.add(SubType.WEREWOLF);
|
this.getLeftHalfCard().setPT(2, 2);
|
||||||
this.power = new MageInt(2);
|
|
||||||
this.toughness = new MageInt(2);
|
|
||||||
|
|
||||||
this.secondSideCardClazz = mage.cards.l.LordOfTheUlvenwald.class;
|
|
||||||
|
|
||||||
// Whenever Kessig Naturalist attacks, add {R} or {G}. Until end of turn, you don't lose this mana as steps and phases end.
|
// 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
|
// 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) {
|
private KessigNaturalist(final KessigNaturalist card) {
|
||||||
|
|
|
||||||
|
|
@ -1,36 +1,39 @@
|
||||||
|
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.effects.common.combat.CantBeBlockedByMoreThanOneSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class KessigProwler extends CardImpl {
|
public final class KessigProwler extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public KessigProwler(UUID ownerId, CardSetInfo setInfo) {
|
public KessigProwler(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
|
super(ownerId, setInfo,
|
||||||
this.subtype.add(SubType.WEREWOLF);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF, SubType.HORROR}, "{G}",
|
||||||
this.subtype.add(SubType.HORROR);
|
"Sinuous Predator",
|
||||||
this.power = new MageInt(2);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ELDRAZI, SubType.WEREWOLF}, "");
|
||||||
this.toughness = new MageInt(1);
|
|
||||||
|
|
||||||
this.secondSideCardClazz = mage.cards.s.SinuousPredator.class;
|
// Kessig Prowler
|
||||||
|
this.getLeftHalfCard().setPT(2, 1);
|
||||||
|
|
||||||
// {4}{G}: Transform Kessig Prowler.
|
// {4}{G}: Transform Kessig Prowler.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new SimpleActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{4}{G}")));
|
||||||
this.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) {
|
private KessigProwler(final KessigProwler card) {
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,13 @@
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.keyword.ProwessAbility;
|
import mage.abilities.keyword.ProwessAbility;
|
||||||
import mage.abilities.keyword.TrampleAbility;
|
import mage.abilities.keyword.TrampleAbility;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.keyword.WardAbility;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
|
||||||
|
|
@ -17,26 +16,38 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class KhenraSpellspear extends CardImpl {
|
public final class KhenraSpellspear extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public KhenraSpellspear(UUID ownerId, CardSetInfo setInfo) {
|
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);
|
// Khenra Spellspear
|
||||||
this.subtype.add(SubType.WARRIOR);
|
this.getLeftHalfCard().setPT(2, 2);
|
||||||
this.power = new MageInt(2);
|
|
||||||
this.toughness = new MageInt(2);
|
|
||||||
this.secondSideCardClazz = mage.cards.g.GitaxianSpellstalker.class;
|
|
||||||
|
|
||||||
// Trample
|
// Trample
|
||||||
this.addAbility(TrampleAbility.getInstance());
|
this.getLeftHalfCard().addAbility(TrampleAbility.getInstance());
|
||||||
|
|
||||||
// Prowess
|
// Prowess
|
||||||
this.addAbility(new ProwessAbility());
|
this.getLeftHalfCard().addAbility(new ProwessAbility());
|
||||||
|
|
||||||
// {3}{U/P}: Transform Khenra Spellspear. Activate only as a sorcery.
|
// {3}{U/P}: Transform Khenra Spellspear. Activate only as a sorcery.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new ActivateAsSorceryActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{3}{U/P}")));
|
||||||
this.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) {
|
private KhenraSpellspear(final KhenraSpellspear card) {
|
||||||
|
|
|
||||||
|
|
@ -1,34 +1,54 @@
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
|
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||||
import mage.abilities.keyword.DisturbAbility;
|
import mage.abilities.keyword.DisturbAbility;
|
||||||
|
import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.abilities.keyword.LifelinkAbility;
|
import mage.abilities.keyword.LifelinkAbility;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.SubType;
|
import mage.constants.*;
|
||||||
|
import mage.target.TargetPermanent;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class KindlyAncestor extends CardImpl {
|
public final class KindlyAncestor extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public KindlyAncestor(UUID ownerId, CardSetInfo setInfo) {
|
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);
|
// Kindly Ancestor
|
||||||
this.power = new MageInt(2);
|
this.getLeftHalfCard().setPT(2, 3);
|
||||||
this.toughness = new MageInt(3);
|
|
||||||
this.secondSideCardClazz = mage.cards.a.AncestorsEmbrace.class;
|
|
||||||
|
|
||||||
// Lifelink
|
// 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}
|
// 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) {
|
private KindlyAncestor(final KindlyAncestor card) {
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,48 @@
|
||||||
package mage.cards.k;
|
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.condition.common.DeliriumCondition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
|
||||||
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
|
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
|
||||||
|
import mage.abilities.effects.common.DestroyTargetEffect;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.AbilityWord;
|
import mage.constants.AbilityWord;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class KindlyStranger extends CardImpl {
|
public final class KindlyStranger extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public KindlyStranger(UUID ownerId, CardSetInfo setInfo) {
|
public KindlyStranger(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
super(ownerId, setInfo,
|
||||||
this.subtype.add(SubType.HUMAN);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN}, "{2}{B}",
|
||||||
this.power = new MageInt(2);
|
"Demon-Possessed Witch",
|
||||||
this.toughness = new MageInt(3);
|
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> — {2}{B}: Transform Kindly Stranger. Activate this ability only if there are four or more card types among cards in your graveyard.
|
// Delirium — {2}{B}: Transform Kindly Stranger. Activate only if there are four or more card types among cards in your graveyard.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new ActivateIfConditionActivatedAbility(
|
||||||
this.addAbility(new ActivateIfConditionActivatedAbility(
|
|
||||||
new TransformSourceEffect(), new ManaCostsImpl<>("{2}{B}"), DeliriumCondition.instance
|
new TransformSourceEffect(), new ManaCostsImpl<>("{2}{B}"), DeliriumCondition.instance
|
||||||
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
|
).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) {
|
private KindlyStranger(final KindlyStranger card) {
|
||||||
|
|
|
||||||
|
|
@ -1,36 +1,56 @@
|
||||||
package mage.cards.k;
|
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.common.WerewolfFrontTriggeredAbility;
|
||||||
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
|
import mage.abilities.keyword.DoubleStrikeAbility;
|
||||||
import mage.abilities.keyword.FirstStrikeAbility;
|
import mage.abilities.keyword.FirstStrikeAbility;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.keyword.MenaceAbility;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
import mage.filter.FilterPermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author North
|
* @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) {
|
public KruinOutlaw(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
|
super(ownerId, setInfo,
|
||||||
this.subtype.add(SubType.HUMAN);
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.ROGUE, SubType.WEREWOLF}, "{1}{R}{R}",
|
||||||
this.subtype.add(SubType.ROGUE);
|
"Terror of Kruin Pass",
|
||||||
this.subtype.add(SubType.WEREWOLF);
|
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);
|
// First strike
|
||||||
this.toughness = new MageInt(2);
|
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.
|
// At the beginning of each upkeep, if no spells were cast last turn, transform Kruin Outlaw.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||||
this.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) {
|
private KruinOutlaw(final KruinOutlaw card) {
|
||||||
|
|
|
||||||
|
|
@ -1,48 +1,46 @@
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||||
|
import mage.abilities.effects.ReplacementEffectImpl;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.hint.ConditionHint;
|
|
||||||
import mage.abilities.hint.Hint;
|
import mage.abilities.hint.Hint;
|
||||||
import mage.abilities.hint.ValueHint;
|
import mage.abilities.hint.ValueHint;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
|
||||||
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
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.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
|
import mage.constants.*;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.permanent.token.BlackWizardToken;
|
import mage.game.permanent.token.BlackWizardToken;
|
||||||
|
import mage.util.CardUtil;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author balazskristof
|
* @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 FilterControlledPermanent filter = new FilterControlledPermanent(SubType.WIZARD);
|
||||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.OR_GREATER, 4);
|
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));
|
private static final Hint hint = new ValueHint("Wizards you control", new PermanentsOnBattlefieldCount(filter));
|
||||||
|
|
||||||
public KujaGenomeSorcerer(UUID ownerId, CardSetInfo setInfo) {
|
public KujaGenomeSorcerer(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}");
|
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.supertype.add(SuperType.LEGENDARY);
|
// Kuja, Genome Sorcerer
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.getLeftHalfCard().setPT(3, 4);
|
||||||
this.subtype.add(SubType.MUTANT);
|
|
||||||
this.subtype.add(SubType.WIZARD);
|
|
||||||
this.power = new MageInt(3);
|
|
||||||
this.toughness = new MageInt(4);
|
|
||||||
|
|
||||||
this.secondSideCardClazz = mage.cards.t.TranceKujaFateDefied.class;
|
|
||||||
|
|
||||||
// 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.
|
// 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(
|
Ability ability = new BeginningOfEndStepTriggeredAbility(
|
||||||
|
|
@ -54,8 +52,13 @@ public final class KujaGenomeSorcerer extends CardImpl {
|
||||||
"if you control four or more Wizards, transform {this}"
|
"if you control four or more Wizards, transform {this}"
|
||||||
).concatBy("Then"));
|
).concatBy("Then"));
|
||||||
ability.addHint(hint);
|
ability.addHint(hint);
|
||||||
this.addAbility(ability);
|
this.getLeftHalfCard().addAbility(ability);
|
||||||
this.addAbility(new TransformAbility());
|
|
||||||
|
// 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) {
|
private KujaGenomeSorcerer(final KujaGenomeSorcerer card) {
|
||||||
|
|
@ -67,3 +70,40 @@ public final class KujaGenomeSorcerer extends CardImpl {
|
||||||
return new KujaGenomeSorcerer(this);
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,27 +1,31 @@
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SagaAbility;
|
import mage.abilities.common.SagaAbility;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.common.delayed.AddCounterNextSpellDelayedTriggeredAbility;
|
import mage.abilities.common.delayed.AddCounterNextSpellDelayedTriggeredAbility;
|
||||||
|
import mage.abilities.effects.ReplacementEffectImpl;
|
||||||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||||
import mage.abilities.effects.common.DamageAllEffect;
|
import mage.abilities.effects.common.DamageAllEffect;
|
||||||
import mage.abilities.effects.common.DamagePlayersEffect;
|
import mage.abilities.effects.common.DamagePlayersEffect;
|
||||||
import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect;
|
import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.keyword.HasteAbility;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.SagaChapter;
|
import mage.constants.*;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.TargetController;
|
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterPlaneswalkerPermanent;
|
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;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author weirddan455
|
* @author weirddan455
|
||||||
*/
|
*/
|
||||||
public final class KumanoFacesKakkazan extends CardImpl {
|
public final class KumanoFacesKakkazan extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterPlaneswalkerPermanent();
|
private static final FilterPermanent filter = new FilterPlaneswalkerPermanent();
|
||||||
|
|
||||||
|
|
@ -30,31 +34,42 @@ public final class KumanoFacesKakkazan extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public KumanoFacesKakkazan(UUID ownerId, CardSetInfo setInfo) {
|
public KumanoFacesKakkazan(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
|
super(ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.SAGA}, "{R}",
|
||||||
this.subtype.add(SubType.SAGA);
|
"Etching of Kumano",
|
||||||
this.secondSideCardClazz = mage.cards.e.EtchingOfKumano.class;
|
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.)
|
// (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.
|
// 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 DamagePlayersEffect(1, TargetController.OPPONENT),
|
||||||
new DamageAllEffect(1, filter).setText("and each planeswalker they control")
|
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.
|
// 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(
|
sagaAbility.addChapterEffect(
|
||||||
this, SagaChapter.CHAPTER_II,
|
this.getLeftHalfCard(), SagaChapter.CHAPTER_II,
|
||||||
new CreateDelayedTriggeredAbilityEffect(new AddCounterNextSpellDelayedTriggeredAbility())
|
new CreateDelayedTriggeredAbilityEffect(new AddCounterNextSpellDelayedTriggeredAbility())
|
||||||
);
|
);
|
||||||
|
|
||||||
// III — Exile this Saga, then return it to the battlefield transformed under your control.
|
// III — Exile this Saga, then return it to the battlefield transformed under your control.
|
||||||
this.addAbility(new TransformAbility());
|
sagaAbility.addChapterEffect(this.getLeftHalfCard(), SagaChapter.CHAPTER_III, new ExileSagaAndReturnTransformedEffect());
|
||||||
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, new ExileSagaAndReturnTransformedEffect());
|
|
||||||
|
|
||||||
this.addAbility(sagaAbility);
|
this.getLeftHalfCard().addAbility(sagaAbility);
|
||||||
|
|
||||||
|
// 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) {
|
private KumanoFacesKakkazan(final KumanoFacesKakkazan card) {
|
||||||
|
|
@ -66,3 +81,43 @@ public final class KumanoFacesKakkazan extends CardImpl {
|
||||||
return new KumanoFacesKakkazan(this);
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,27 @@
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.LoyaltyAbility;
|
||||||
import mage.abilities.common.EndOfCombatTriggeredAbility;
|
import mage.abilities.common.EndOfCombatTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
import mage.abilities.effects.RequirementEffect;
|
||||||
import mage.abilities.effects.common.ExileAndReturnSourceEffect;
|
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.GainAbilitySourceEffect;
|
||||||
|
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||||
import mage.abilities.keyword.IndestructibleAbility;
|
import mage.abilities.keyword.IndestructibleAbility;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.game.Game;
|
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 mage.watchers.common.AttackedOrBlockedThisCombatWatcher;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -21,30 +29,53 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class KytheonHeroOfAkros extends CardImpl {
|
public final class KytheonHeroOfAkros extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public KytheonHeroOfAkros(UUID ownerId, CardSetInfo setInfo) {
|
public KytheonHeroOfAkros(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
|
super(ownerId, setInfo,
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SOLDIER}, "{W}",
|
||||||
this.subtype.add(SubType.HUMAN);
|
"Gideon, Battle-Forged",
|
||||||
this.subtype.add(SubType.SOLDIER);
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.PLANESWALKER}, new SubType[]{SubType.GIDEON}, "W");
|
||||||
this.power = new MageInt(2);
|
|
||||||
this.toughness = new MageInt(1);
|
|
||||||
|
|
||||||
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,
|
// 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.
|
||||||
// then return him to the battlefield transformed under his owner's control.
|
Ability kytheonAbility = new EndOfCombatTriggeredAbility(
|
||||||
this.addAbility(new TransformAbility());
|
|
||||||
this.addAbility(new EndOfCombatTriggeredAbility(
|
|
||||||
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED, Pronoun.HE), false
|
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.
|
// {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
|
IndestructibleAbility.getInstance(), Duration.EndOfTurn
|
||||||
), new ManaCostsImpl<>("{2}{W}")));
|
), 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) {
|
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";
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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("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("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("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("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("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));
|
cards.add(new SetCardInfo("Smoldering Werewolf", 142, Rarity.UNCOMMON, mage.cards.s.SmolderingWerewolf.class));
|
||||||
|
|
|
||||||
|
|
@ -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", 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", 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, 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", 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", 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));
|
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", 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("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("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("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", "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));
|
cards.add(new SetCardInfo("Traveling Chocobo", "551b", Rarity.MYTHIC, mage.cards.t.TravelingChocobo.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -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("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("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("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, 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("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));
|
cards.add(new SetCardInfo("Nissa, Vastwood Seer", 15, Rarity.MYTHIC, mage.cards.n.NissaVastwoodSeer.class));
|
||||||
|
|
|
||||||
|
|
@ -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", 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", 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("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("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 Militia", 38, Rarity.COMMON, mage.cards.t.ThrabenMilitia.class));
|
||||||
cards.add(new SetCardInfo("Thraben Purebloods", 37, Rarity.COMMON, mage.cards.t.ThrabenPurebloods.class));
|
cards.add(new SetCardInfo("Thraben Purebloods", 37, Rarity.COMMON, mage.cards.t.ThrabenPurebloods.class));
|
||||||
|
|
|
||||||
|
|
@ -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("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", 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("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("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("Ancient Lumberknot", 230, Rarity.UNCOMMON, mage.cards.a.AncientLumberknot.class));
|
||||||
cards.add(new SetCardInfo("Angelic Quartermaster", 2, Rarity.UNCOMMON, mage.cards.a.AngelicQuartermaster.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", 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", 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("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", 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("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));
|
cards.add(new SetCardInfo("Kaya, Geist Hunter", 240, Rarity.MYTHIC, mage.cards.k.KayaGeistHunter.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -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("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("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("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("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("Ancient Lumberknot", 497, Rarity.UNCOMMON, mage.cards.a.AncientLumberknot.class));
|
||||||
cards.add(new SetCardInfo("Angelfire Ignition", 209, Rarity.RARE, mage.cards.a.AngelfireIgnition.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("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("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("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 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("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));
|
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("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("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 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("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("Ludevic, Necrogenius", 233, Rarity.RARE, mage.cards.l.LudevicNecrogenius.class));
|
||||||
cards.add(new SetCardInfo("Luminous Phantom", 27, Rarity.COMMON, mage.cards.l.LuminousPhantom.class));
|
cards.add(new SetCardInfo("Luminous Phantom", 27, Rarity.COMMON, mage.cards.l.LuminousPhantom.class));
|
||||||
|
|
|
||||||
|
|
@ -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("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", 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 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("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", 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));
|
cards.add(new SetCardInfo("Ludevic, Necrogenius", 320, Rarity.RARE, mage.cards.l.LudevicNecrogenius.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("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", 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("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", 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", 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));
|
cards.add(new SetCardInfo("Thalia, Heretic Cathar", 44, Rarity.RARE, mage.cards.t.ThaliaHereticCathar.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -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("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("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("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("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 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));
|
cards.add(new SetCardInfo("Explosive Singularity", 140, Rarity.MYTHIC, mage.cards.e.ExplosiveSingularity.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -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("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 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("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("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("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));
|
cards.add(new SetCardInfo("Gnarlroot Trapper", 100, Rarity.UNCOMMON, mage.cards.g.GnarlrootTrapper.class));
|
||||||
|
|
|
||||||
|
|
@ -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("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("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'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("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("Goblin Piledriver", "151s", Rarity.RARE, mage.cards.g.GoblinPiledriver.class));
|
||||||
cards.add(new SetCardInfo("Graveblade Marauder", "101s", Rarity.RARE, mage.cards.g.GravebladeMarauder.class));
|
cards.add(new SetCardInfo("Graveblade Marauder", "101s", Rarity.RARE, mage.cards.g.GravebladeMarauder.class));
|
||||||
|
|
|
||||||
|
|
@ -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", 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("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("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", 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("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));
|
cards.add(new SetCardInfo("Glistening Dawn", 187, Rarity.RARE, mage.cards.g.GlisteningDawn.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -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("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("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, 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("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("Give // Take", 389, Rarity.UNCOMMON, mage.cards.g.GiveTake.class));
|
||||||
cards.add(new SetCardInfo("Gladecover Scout", 175, Rarity.COMMON, mage.cards.g.GladecoverScout.class));
|
cards.add(new SetCardInfo("Gladecover Scout", 175, Rarity.COMMON, mage.cards.g.GladecoverScout.class));
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ public class SanDiegoComicCon2015 extends ExpansionSet {
|
||||||
this.hasBasicLands = false;
|
this.hasBasicLands = false;
|
||||||
|
|
||||||
cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 135, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class));
|
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("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("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));
|
cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 106, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class));
|
||||||
|
|
|
||||||
|
|
@ -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("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("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("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("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("Traitorous Blood", 45, Rarity.COMMON, mage.cards.t.TraitorousBlood.class));
|
||||||
cards.add(new SetCardInfo("Travel Preparations", 57, Rarity.COMMON, mage.cards.t.TravelPreparations.class));
|
cards.add(new SetCardInfo("Travel Preparations", 57, Rarity.COMMON, mage.cards.t.TravelPreparations.class));
|
||||||
|
|
|
||||||
|
|
@ -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("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("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("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("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("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));
|
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("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("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("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("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("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));
|
cards.add(new SetCardInfo("Forest", 295, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS));
|
||||||
|
|
|
||||||
|
|
@ -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("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("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("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("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("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));
|
cards.add(new SetCardInfo("Descend upon the Sinful", 24, Rarity.MYTHIC, mage.cards.d.DescendUponTheSinful.class));
|
||||||
|
|
|
||||||
|
|
@ -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("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("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 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", 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("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));
|
cards.add(new SetCardInfo("Kinjalli's Dawnrunner", 19, Rarity.UNCOMMON, mage.cards.k.KinjallisDawnrunner.class));
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package org.mage.test.cards.abilities.oneshot.damage;
|
package org.mage.test.cards.abilities.oneshot.damage;
|
||||||
|
|
||||||
import mage.constants.PhaseStep;
|
import mage.constants.PhaseStep;
|
||||||
|
|
@ -38,7 +37,7 @@ public class FlameheartWerewolfTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
// both should die
|
// both should die
|
||||||
assertPermanentCount(playerA, "Flameheart Werewolf", 0);
|
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);
|
assertPermanentCount(playerB, "Kalitas, Traitor of Ghet", 0);
|
||||||
assertGraveyardCount(playerB, "Kalitas, Traitor of Ghet", 1);
|
assertGraveyardCount(playerB, "Kalitas, Traitor of Ghet", 1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue