forked from External/mage
convert transforming "C" cards to single class file
This commit is contained in:
parent
436ac5bbbd
commit
a5d14f91f6
65 changed files with 804 additions and 1623 deletions
|
|
@ -1,49 +0,0 @@
|
|||
|
||||
package mage.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.effects.common.LoseLifeOpponentsEffect;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class AuroraOfEmrakul extends CardImpl {
|
||||
|
||||
public AuroraOfEmrakul(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
|
||||
this.subtype.add(SubType.ELDRAZI);
|
||||
this.subtype.add(SubType.REFLECTION);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Deathtouch
|
||||
this.addAbility(DeathtouchAbility.getInstance());
|
||||
|
||||
// Whenever Aurora of Emrakul attacks, each opponent loses 3 life.
|
||||
this.addAbility(new AttacksTriggeredAbility(new LoseLifeOpponentsEffect(3),false));
|
||||
}
|
||||
|
||||
private AuroraOfEmrakul(final AuroraOfEmrakul card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AuroraOfEmrakul copy() {
|
||||
return new AuroraOfEmrakul(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class BrandedHowler extends CardImpl {
|
||||
|
||||
public BrandedHowler(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
this.color.setRed(true);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Branded Howler.
|
||||
this.addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private BrandedHowler(final BrandedHowler card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BrandedHowler copy() {
|
||||
return new BrandedHowler(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,14 +1,15 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.TransformIntoSourceTriggeredAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.DefenderAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -16,22 +17,33 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CaptiveWeird extends CardImpl {
|
||||
public final class CaptiveWeird extends TransformingDoubleFacedCard {
|
||||
|
||||
public CaptiveWeird(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEIRD}, "{U}",
|
||||
"Compleated Conjurer",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.PHYREXIAN, SubType.WEIRD}, "UR");
|
||||
|
||||
this.subtype.add(SubType.WEIRD);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(3);
|
||||
this.secondSideCardClazz = mage.cards.c.CompleatedConjurer.class;
|
||||
// Captive Weird
|
||||
this.getLeftHalfCard().setPT(1, 3);
|
||||
|
||||
// Defender
|
||||
this.addAbility(DefenderAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(DefenderAbility.getInstance());
|
||||
|
||||
// {3}{R/P}: Transform Captive Weird. Activate only as a sorcery.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new ActivateAsSorceryActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{3}{R/P}")));
|
||||
this.getLeftHalfCard().addAbility(new ActivateAsSorceryActivatedAbility(
|
||||
new TransformSourceEffect(), new ManaCostsImpl<>("{3}{R/P}")
|
||||
));
|
||||
|
||||
// Compleated Conjurer
|
||||
this.getRightHalfCard().setPT(3, 3);
|
||||
|
||||
// When this creature transforms into Compleated Conjurer, exile the top card of your library.
|
||||
// Until the end of your next turn, you may play that card.
|
||||
this.getRightHalfCard().addAbility(new TransformIntoSourceTriggeredAbility(
|
||||
new ExileTopXMayPlayUntilEffect(1, Duration.UntilEndOfYourNextTurn)
|
||||
));
|
||||
}
|
||||
|
||||
private CaptiveWeird(final CaptiveWeird card) {
|
||||
|
|
|
|||
|
|
@ -1,53 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.dynamicvalue.common.SacrificeCostCreaturesToughness;
|
||||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetOpponent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author weirddan455
|
||||
*/
|
||||
public final class CatapultCaptain extends CardImpl {
|
||||
|
||||
public CatapultCaptain(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.ZOMBIE);
|
||||
this.color.setBlack(true);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(6);
|
||||
|
||||
// Back half of Catapult Fodder
|
||||
this.nightCard = true;
|
||||
|
||||
// {2}{B}, {T}, Sacrifice another creature: Target opponent loses life equal to the sacrificed creature's toughness.
|
||||
Ability ability = new SimpleActivatedAbility(new LoseLifeTargetEffect(SacrificeCostCreaturesToughness.instance)
|
||||
.setText("Target opponent loses life equal to the sacrificed creature's toughness"), new ManaCostsImpl<>("{2}{B}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE));
|
||||
ability.addTarget(new TargetOpponent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private CatapultCaptain(final CatapultCaptain card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CatapultCaptain copy() {
|
||||
return new CatapultCaptain(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,29 +1,36 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||
import mage.abilities.dynamicvalue.common.SacrificeCostCreaturesToughness;
|
||||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.ToughnessGreaterThanPowerPredicate;
|
||||
import mage.target.common.TargetOpponent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author weirddan455
|
||||
*/
|
||||
public final class CatapultFodder extends CardImpl {
|
||||
public final class CatapultFodder extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent(
|
||||
"you control three or more creatures that each have toughness greater than their power"
|
||||
|
|
@ -39,16 +46,27 @@ public final class CatapultFodder extends CardImpl {
|
|||
);
|
||||
|
||||
public CatapultFodder(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ZOMBIE}, "{2}{B}",
|
||||
"Catapult Captain",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ZOMBIE}, "B");
|
||||
|
||||
this.subtype.add(SubType.ZOMBIE);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(5);
|
||||
this.secondSideCardClazz = mage.cards.c.CatapultCaptain.class;
|
||||
// Catapult Fodder
|
||||
this.getLeftHalfCard().setPT(1, 5);
|
||||
|
||||
// At the beginning of combat on your turn, if you control three or more creatures that each have toughness greater than their power, transform Catapult Fodder.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new BeginningOfCombatTriggeredAbility(new TransformSourceEffect()).withInterveningIf(condition));
|
||||
this.getLeftHalfCard().addAbility(new BeginningOfCombatTriggeredAbility(new TransformSourceEffect()).withInterveningIf(condition).addHint(hint));
|
||||
|
||||
// Catapult Captain
|
||||
this.getRightHalfCard().setPT(2, 6);
|
||||
|
||||
// {2}{B}, {T}, Sacrifice another creature: Target opponent loses life equal to the sacrificed creature's toughness.
|
||||
Ability ability = new SimpleActivatedAbility(new LoseLifeTargetEffect(SacrificeCostCreaturesToughness.instance)
|
||||
.setText("Target opponent loses life equal to the sacrificed creature's toughness"), new ManaCostsImpl<>("{2}{B}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE));
|
||||
ability.addTarget(new TargetOpponent());
|
||||
this.getRightHalfCard().addAbility(ability);
|
||||
}
|
||||
|
||||
private CatapultFodder(final CatapultFodder card) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.common.DealsDamageSourceTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
|
|
@ -9,13 +9,17 @@ import mage.abilities.dynamicvalue.common.SavedDamageValue;
|
|||
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.common.UntapSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.IndestructibleAbility;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Controllable;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
|
|
@ -26,24 +30,21 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author balazskristof
|
||||
*/
|
||||
public final class CecilDarkKnight extends CardImpl {
|
||||
public final class CecilDarkKnight extends TransformingDoubleFacedCard {
|
||||
|
||||
public CecilDarkKnight(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.KNIGHT}, "{B}",
|
||||
"Cecil, Redeemed Paladin",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.KNIGHT}, "W");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.KNIGHT);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.c.CecilRedeemedPaladin.class;
|
||||
// Cecil, Dark Knight
|
||||
this.getLeftHalfCard().setPT(2, 3);
|
||||
|
||||
// Deathtouch
|
||||
this.addAbility(DeathtouchAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(DeathtouchAbility.getInstance());
|
||||
|
||||
// Darkness -- Whenever Cecil deals damage, you lose that much life. Then if your life total is less than or equal to half your starting life total, untap Cecil and transform it.
|
||||
this.addAbility(new TransformAbility());
|
||||
Ability ability = new DealsDamageSourceTriggeredAbility(new LoseLifeSourceControllerEffect(SavedDamageValue.MUCH), false).withFlavorWord("Darkness");
|
||||
ability.addEffect(new ConditionalOneShotEffect(
|
||||
new UntapSourceEffect(),
|
||||
|
|
@ -51,7 +52,19 @@ public final class CecilDarkKnight extends CardImpl {
|
|||
).addEffect(
|
||||
new TransformSourceEffect(true).concatBy("and")
|
||||
).concatBy("Then"));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Cecil, Redeemed Paladin
|
||||
this.getRightHalfCard().setPT(4, 4);
|
||||
|
||||
// Lifelink
|
||||
this.getRightHalfCard().addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// Protect -- Whenever Cecil attacks, other attacking creatures gain indestructible until end of turn.
|
||||
this.getRightHalfCard().addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(
|
||||
IndestructibleAbility.getInstance(), Duration.EndOfTurn,
|
||||
StaticFilters.FILTER_ATTACKING_CREATURES, true
|
||||
)).withFlavorWord("Protect"));
|
||||
}
|
||||
|
||||
private CecilDarkKnight(final CecilDarkKnight card) {
|
||||
|
|
|
|||
|
|
@ -1,52 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||
import mage.abilities.keyword.IndestructibleAbility;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
|
||||
/**
|
||||
* @author balazskristof
|
||||
*/
|
||||
public final class CecilRedeemedPaladin extends CardImpl {
|
||||
|
||||
public CecilRedeemedPaladin(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.KNIGHT);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.color.setWhite(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// Protect -- Whenever Cecil attacks, other attacking creatures gain indestructible until end of turn.
|
||||
this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(
|
||||
IndestructibleAbility.getInstance(), Duration.EndOfTurn,
|
||||
StaticFilters.FILTER_ATTACKING_CREATURES, true
|
||||
)).withFlavorWord("Protect"));
|
||||
}
|
||||
|
||||
private CecilRedeemedPaladin(final CecilRedeemedPaladin card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CecilRedeemedPaladin copy() {
|
||||
return new CecilRedeemedPaladin(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.target.TargetPlayer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author intimidatingant
|
||||
*/
|
||||
public final class ChaliceOfDeath extends CardImpl {
|
||||
|
||||
public ChaliceOfDeath(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"");
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
// {tap}: Target player loses 5 life.
|
||||
Ability ability = new SimpleActivatedAbility(new LoseLifeTargetEffect(5), new TapSourceCost());
|
||||
ability.addTarget(new TargetPlayer());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private ChaliceOfDeath(final ChaliceOfDeath card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChaliceOfDeath copy() {
|
||||
return new ChaliceOfDeath(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -6,32 +6,41 @@ import mage.abilities.condition.common.MoreThanStartingLifeTotalCondition;
|
|||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.TargetPlayer;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author intimidatingant
|
||||
*/
|
||||
public final class ChaliceOfLife extends CardImpl {
|
||||
public final class ChaliceOfLife extends TransformingDoubleFacedCard {
|
||||
|
||||
public ChaliceOfLife(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{}, "{3}",
|
||||
"Chalice of Death",
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{}, "");
|
||||
|
||||
this.secondSideCardClazz = mage.cards.c.ChaliceOfDeath.class;
|
||||
this.addAbility(new TransformAbility());
|
||||
|
||||
// {tap}: You gain 1 life. Then if you have at least 10 life more than your starting life total, transform Chalice of Life.
|
||||
// Chalice of Life
|
||||
// {T}: You gain 1 life. Then if you have at least 10 life more than your starting life total, transform Chalice of Life.
|
||||
Ability ability = new SimpleActivatedAbility(new GainLifeEffect(1), new TapSourceCost());
|
||||
ability.addEffect(new ConditionalOneShotEffect(
|
||||
new TransformSourceEffect(), MoreThanStartingLifeTotalCondition.TEN,
|
||||
"Then if you have at least 10 life more than your starting life total, transform {this}"
|
||||
));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Chalice of Death
|
||||
// {T}: Target player loses 5 life.
|
||||
Ability deathAbility = new SimpleActivatedAbility(new LoseLifeTargetEffect(5), new TapSourceCost());
|
||||
deathAbility.addTarget(new TargetPlayer());
|
||||
this.getRightHalfCard().addAbility(deathAbility);
|
||||
}
|
||||
|
||||
private ChaliceOfLife(final ChaliceOfLife card) {
|
||||
|
|
|
|||
|
|
@ -1,63 +1,79 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.LoyaltyAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.SourceDealtDamageCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.effects.common.ExileAndReturnSourceEffect;
|
||||
import mage.abilities.effects.common.UntapSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterSpell;
|
||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.command.emblems.ChandraRoaringFlameEmblem;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||
import mage.watchers.common.DamageDoneWatcher;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class ChandraFireOfKaladesh extends CardImpl {
|
||||
public final class ChandraFireOfKaladesh extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterSpell filter = new FilterSpell("a red spell");
|
||||
|
||||
static {
|
||||
filter.add(new ColorPredicate(ObjectColor.RED));
|
||||
}
|
||||
|
||||
static { filter.add(new ColorPredicate(ObjectColor.RED)); }
|
||||
private static final Condition condition = new SourceDealtDamageCondition(3);
|
||||
|
||||
public ChandraFireOfKaladesh(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.SHAMAN);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SHAMAN}, "{1}{R}{R}",
|
||||
"Chandra, Roaring Flame",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.PLANESWALKER}, new SubType[]{SubType.CHANDRA}, "R");
|
||||
|
||||
this.secondSideCardClazz = mage.cards.c.ChandraRoaringFlame.class;
|
||||
// Chandra, Fire of Kaladesh
|
||||
this.getLeftHalfCard().setPT(2, 2);
|
||||
|
||||
// Whenever you cast a red spell, untap Chandra, Fire of Kaladesh.
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new UntapSourceEffect(), filter, false));
|
||||
this.getLeftHalfCard().addAbility(new SpellCastControllerTriggeredAbility(new UntapSourceEffect(), filter, false));
|
||||
|
||||
// {T}: Chandra, Fire of Kaladesh deals 1 damage to target player. If Chandra has dealt 3 or more damage this turn, exile her, then return her to the battlefield transformed under her owner's control.
|
||||
this.addAbility(new TransformAbility());
|
||||
// {T}: Chandra, Fire of Kaladesh deals 1 damage to target player or planeswalker. If Chandra has dealt 3 or more damage this turn, exile her, then return her to the battlefield transformed under her owner's control.
|
||||
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost());
|
||||
ability.addEffect(new ConditionalOneShotEffect(
|
||||
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED, Pronoun.SHE), condition
|
||||
));
|
||||
ability.addTarget(new TargetPlayerOrPlaneswalker());
|
||||
this.addAbility(ability, new DamageDoneWatcher());
|
||||
ability.addWatcher(new DamageDoneWatcher());
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Chandra, Roaring Flame
|
||||
this.getRightHalfCard().setStartingLoyalty(4);
|
||||
|
||||
// +1: Chandra, Roaring Flame deals 2 damage to target player or planeswalker.
|
||||
LoyaltyAbility loyaltyAbility = new LoyaltyAbility(new DamageTargetEffect(2), 1);
|
||||
loyaltyAbility.addTarget(new TargetPlayerOrPlaneswalker());
|
||||
this.getRightHalfCard().addAbility(loyaltyAbility);
|
||||
|
||||
// -2: Chandra, Roaring Flame deals 2 damage to target creature.
|
||||
loyaltyAbility = new LoyaltyAbility(new DamageTargetEffect(2), -2);
|
||||
loyaltyAbility.addTarget(new TargetCreaturePermanent());
|
||||
this.getRightHalfCard().addAbility(loyaltyAbility);
|
||||
|
||||
// -7: Chandra, Roaring Flame deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with "At the beginning of your upkeep, this emblem deals 3 damage to you."
|
||||
this.getRightHalfCard().addAbility(new LoyaltyAbility(new ChandraRoaringFlameEmblemEffect(), -7));
|
||||
}
|
||||
|
||||
private ChandraFireOfKaladesh(final ChandraFireOfKaladesh card) {
|
||||
|
|
@ -69,3 +85,31 @@ public final class ChandraFireOfKaladesh extends CardImpl {
|
|||
return new ChandraFireOfKaladesh(this);
|
||||
}
|
||||
}
|
||||
|
||||
class ChandraRoaringFlameEmblemEffect extends OneShotEffect {
|
||||
|
||||
ChandraRoaringFlameEmblemEffect() {
|
||||
super(Outcome.Damage);
|
||||
this.staticText = "{this} deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with \"At the beginning of your upkeep, this emblem deals 3 damage to you.\"";
|
||||
}
|
||||
|
||||
private ChandraRoaringFlameEmblemEffect(final ChandraRoaringFlameEmblemEffect effect) { super(effect); }
|
||||
@Override public ChandraRoaringFlameEmblemEffect copy() { return new ChandraRoaringFlameEmblemEffect(this); }
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller == null) { return false; }
|
||||
List<Player> opponentsEmblem = new ArrayList<>();
|
||||
for (UUID playerId : game.getOpponents(controller.getId())) {
|
||||
Player opponent = game.getPlayer(playerId);
|
||||
if (opponent != null && opponent.damage(6, source, game) > 0) {
|
||||
opponentsEmblem.add(opponent);
|
||||
}
|
||||
}
|
||||
for (Player opponent : opponentsEmblem) {
|
||||
game.addEmblem(new ChandraRoaringFlameEmblem(), source.getSourceObject(game), opponent.getId());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,96 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.LoyaltyAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.game.Game;
|
||||
import mage.game.command.emblems.ChandraRoaringFlameEmblem;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class ChandraRoaringFlame extends CardImpl {
|
||||
|
||||
public ChandraRoaringFlame(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.CHANDRA);
|
||||
this.color.setRed(true);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
this.setStartingLoyalty(4);
|
||||
|
||||
// +1: Chandra, Roaring Flame deals 2 damage to target player.
|
||||
LoyaltyAbility loyaltyAbility = new LoyaltyAbility(new DamageTargetEffect(2), 1);
|
||||
loyaltyAbility.addTarget(new TargetPlayerOrPlaneswalker());
|
||||
this.addAbility(loyaltyAbility);
|
||||
|
||||
//-2: Chandra, Roaring Flame deals 2 damage to target creature.
|
||||
loyaltyAbility = new LoyaltyAbility(new DamageTargetEffect(2), -2);
|
||||
loyaltyAbility.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(loyaltyAbility);
|
||||
|
||||
//-7: Chandra, Roaring Flame deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with "At the beginning of your upkeep, this emblem deals 3 damage to you."
|
||||
this.addAbility(new LoyaltyAbility(new ChandraRoaringFlameEmblemEffect(), -7));
|
||||
}
|
||||
|
||||
private ChandraRoaringFlame(final ChandraRoaringFlame card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChandraRoaringFlame copy() {
|
||||
return new ChandraRoaringFlame(this);
|
||||
}
|
||||
}
|
||||
|
||||
class ChandraRoaringFlameEmblemEffect extends OneShotEffect {
|
||||
|
||||
ChandraRoaringFlameEmblemEffect() {
|
||||
super(Outcome.Damage);
|
||||
this.staticText = "{this} deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with \"At the beginning of your upkeep, this emblem deals 3 damage to you.\"";
|
||||
}
|
||||
|
||||
private ChandraRoaringFlameEmblemEffect(final ChandraRoaringFlameEmblemEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChandraRoaringFlameEmblemEffect copy() {
|
||||
return new ChandraRoaringFlameEmblemEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
List<Player> opponentsEmblem = new ArrayList<>();
|
||||
for (UUID playerId : game.getOpponents(controller.getId())) {
|
||||
Player opponent = game.getPlayer(playerId);
|
||||
if (opponent != null && opponent.damage(6, source, game) > 0) {
|
||||
opponentsEmblem.add(opponent);
|
||||
}
|
||||
}
|
||||
for (Player opponent : opponentsEmblem) {
|
||||
game.addEmblem(new ChandraRoaringFlameEmblem(), source.getSourceObject(game), opponent.getId());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.WardAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ChapelShieldgeist extends CardImpl {
|
||||
|
||||
public ChapelShieldgeist(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.SPIRIT);
|
||||
this.subtype.add(SubType.CLERIC);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
this.color.setWhite(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// First strike
|
||||
this.addAbility(FirstStrikeAbility.getInstance());
|
||||
|
||||
// Each creature you control has ward {1}.
|
||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||
new WardAbility(new GenericManaCost(1)), Duration.WhileOnBattlefield,
|
||||
StaticFilters.FILTER_PERMANENT_CREATURE
|
||||
).setText("each creature you control has ward {1}. " +
|
||||
"<i>(Whenever it becomes the target of a spell or ability an opponent controls, " +
|
||||
"counter it unless that player pays 1.)</i>")));
|
||||
|
||||
// If Chapel Shieldgeist would be put into a graveyard from anywhere, exile it instead.
|
||||
this.addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private ChapelShieldgeist(final ChapelShieldgeist card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChapelShieldgeist copy() {
|
||||
return new ChapelShieldgeist(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,39 +1,63 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.WardAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ChaplainOfAlms extends CardImpl {
|
||||
public final class ChaplainOfAlms extends TransformingDoubleFacedCard {
|
||||
|
||||
public ChaplainOfAlms(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.CLERIC}, "{W}",
|
||||
"Chapel Shieldgeist",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT, SubType.CLERIC}, "W");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.CLERIC);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
this.secondSideCardClazz = mage.cards.c.ChapelShieldgeist.class;
|
||||
// Chaplain of Alms
|
||||
this.getLeftHalfCard().setPT(1, 1);
|
||||
|
||||
// First strike
|
||||
this.addAbility(FirstStrikeAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(FirstStrikeAbility.getInstance());
|
||||
|
||||
// Ward {1}
|
||||
this.addAbility(new WardAbility(new ManaCostsImpl<>("{1}")));
|
||||
this.getLeftHalfCard().addAbility(new WardAbility(new ManaCostsImpl<>("{1}")));
|
||||
|
||||
// Disturb {3}{W}
|
||||
this.addAbility(new DisturbAbility(this, "{3}{W}"));
|
||||
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{3}{W}"));
|
||||
|
||||
// Chapel Shieldgeist
|
||||
this.getRightHalfCard().setPT(2, 1);
|
||||
|
||||
// Flying
|
||||
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// First strike
|
||||
this.getRightHalfCard().addAbility(FirstStrikeAbility.getInstance());
|
||||
|
||||
// Each creature you control has ward {1}.
|
||||
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||
new WardAbility(new GenericManaCost(1)), Duration.WhileOnBattlefield,
|
||||
StaticFilters.FILTER_PERMANENT_CREATURE
|
||||
).setText("each creature you control has ward {1}. " +
|
||||
"<i>(Whenever it becomes the target of a spell or ability an opponent controls, counter it unless that player pays 1.)</i>")));
|
||||
|
||||
// If Chapel Shieldgeist would be put into a graveyard from anywhere, exile it instead.
|
||||
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private ChaplainOfAlms(final ChaplainOfAlms card) {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,17 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.abilities.keyword.DayboundAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.game.permanent.token.WolfToken;
|
||||
|
||||
|
|
@ -16,24 +20,38 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ChildOfThePack extends CardImpl {
|
||||
public final class ChildOfThePack extends TransformingDoubleFacedCard {
|
||||
|
||||
public ChildOfThePack(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{G}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{2}{R}{G}",
|
||||
"Savage Packmate",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "RG");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(5);
|
||||
this.secondSideCardClazz = mage.cards.s.SavagePackmate.class;
|
||||
// Child of the Pack
|
||||
this.getLeftHalfCard().setPT(2, 5);
|
||||
|
||||
// {2}{R}{G}: Create a 2/2 green Wolf creature token.
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
this.getLeftHalfCard().addAbility(new SimpleActivatedAbility(
|
||||
new CreateTokenEffect(new WolfToken()), new ManaCostsImpl<>("{2}{R}{G}")
|
||||
));
|
||||
|
||||
// Daybound
|
||||
this.addAbility(new DayboundAbility());
|
||||
this.getLeftHalfCard().addAbility(new DayboundAbility());
|
||||
|
||||
// Savage Packmate
|
||||
this.getRightHalfCard().setPT(5, 5);
|
||||
|
||||
// Trample
|
||||
this.getRightHalfCard().addAbility(TrampleAbility.getInstance());
|
||||
|
||||
// Other creatures you control get +1/+0.
|
||||
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new BoostControlledEffect(
|
||||
1, 0, Duration.WhileOnBattlefield, true
|
||||
)));
|
||||
|
||||
// Nightbound
|
||||
this.getRightHalfCard().addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private ChildOfThePack(final ChildOfThePack card) {
|
||||
|
|
|
|||
|
|
@ -1,28 +1,25 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.common.TapTargetCost;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.permanent.TappedPredicate;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
public final class ChosenOfMarkov extends CardImpl {
|
||||
public final class ChosenOfMarkov extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Vampire you control");
|
||||
|
||||
static {
|
||||
|
|
@ -31,27 +28,28 @@ public final class ChosenOfMarkov extends CardImpl {
|
|||
}
|
||||
|
||||
public ChosenOfMarkov(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN}, "{2}{B}",
|
||||
"Markov's Servant",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.VAMPIRE}, "B");
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
// Chosen of Markov
|
||||
this.getLeftHalfCard().setPT(2, 2);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.m.MarkovsServant.class;
|
||||
|
||||
// {tap}, Tap an untapped Vampire you control: Transform Chosen of Markov.
|
||||
this.addAbility(new TransformAbility());
|
||||
// {T}, Tap an untapped Vampire you control: Transform Chosen of Markov.
|
||||
Ability ability = new SimpleActivatedAbility(new TransformSourceEffect(), new TapSourceCost());
|
||||
ability.addCost(new TapTargetCost(new TargetControlledPermanent(filter)));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Markov's Servant
|
||||
this.getRightHalfCard().setPT(4, 4);
|
||||
}
|
||||
|
||||
private ChosenOfMarkov(final ChosenOfMarkov card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChosenOfMarkov copy() {
|
||||
@Override public ChosenOfMarkov copy() {
|
||||
return new ChosenOfMarkov(this);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,20 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.TriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.AttackedThisTurnSourceCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.abilities.effects.common.TapSourceEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
|
|
@ -22,23 +27,33 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author nantuko
|
||||
*/
|
||||
public final class CivilizedScholar extends CardImpl {
|
||||
public final class CivilizedScholar extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final Condition condition = new InvertCondition(
|
||||
AttackedThisTurnSourceCondition.instance, "{this} didn't attack this turn"
|
||||
);
|
||||
|
||||
public CivilizedScholar(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.ADVISOR);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.ADVISOR}, "{2}{U}",
|
||||
"Homicidal Brute",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.MUTANT}, "R");
|
||||
|
||||
this.secondSideCardClazz = mage.cards.h.HomicidalBrute.class;
|
||||
// Civilized Scholar
|
||||
this.getLeftHalfCard().setPT(0, 1);
|
||||
|
||||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// {tap}: Draw a card, then discard a card. If a creature card is discarded this way, untap Civilized Scholar, then transform it.
|
||||
// {T}: Draw a card, then discard a card. If a creature card is discarded this way, untap Civilized Scholar, then transform it.
|
||||
Ability ability = new SimpleActivatedAbility(new DrawCardSourceControllerEffect(1), new TapSourceCost());
|
||||
ability.addEffect(new CivilizedScholarEffect());
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Homicidal Brute
|
||||
this.getRightHalfCard().setPT(5, 1);
|
||||
|
||||
// At the beginning of your end step, if Homicidal Brute didn't attack this turn, tap Homicidal Brute, then transform it.
|
||||
TriggeredAbility bruteAbility = new BeginningOfEndStepTriggeredAbility(new TapSourceEffect());
|
||||
bruteAbility.addEffect(new TransformSourceEffect().setText(", then transform it"));
|
||||
this.getRightHalfCard().addAbility(bruteAbility.withInterveningIf(condition));
|
||||
}
|
||||
|
||||
private CivilizedScholar(final CivilizedScholar card) {
|
||||
|
|
@ -51,7 +66,6 @@ public final class CivilizedScholar extends CardImpl {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
class CivilizedScholarEffect extends OneShotEffect {
|
||||
|
||||
CivilizedScholarEffect() {
|
||||
|
|
|
|||
|
|
@ -2,13 +2,19 @@ package mage.cards.c;
|
|||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
||||
import mage.abilities.keyword.CraftAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.permanent.token.GnomeToken;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -16,21 +22,33 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ClayFiredBricks extends CardImpl {
|
||||
public final class ClayFiredBricks extends TransformingDoubleFacedCard {
|
||||
|
||||
public ClayFiredBricks(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{W}");
|
||||
this.secondSideCardClazz = mage.cards.c.CosmiumKiln.class;
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{}, "{1}{W}",
|
||||
"Cosmium Kiln",
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{}, "W");
|
||||
|
||||
// Clay-Fired Bricks
|
||||
|
||||
// When Clay-Fired Bricks enters the battlefield, search your library for a basic Plains card, reveal it, put it into your hand, then shuffle. You gain 2 life.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(
|
||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true)
|
||||
);
|
||||
ability.addEffect(new GainLifeEffect(2));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Craft with artifact {5}{W}{W}
|
||||
this.addAbility(new CraftAbility("{5}{W}{W}"));
|
||||
this.getLeftHalfCard().addAbility(new CraftAbility("{5}{W}{W}"));
|
||||
|
||||
// Cosmium Kiln
|
||||
|
||||
// When Cosmium Kiln enters the battlefield, create two 1/1 colorless Gnome artifact creature tokens.
|
||||
this.getRightHalfCard().addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GnomeToken(), 2)));
|
||||
|
||||
// Creatures you control get +1/+1.
|
||||
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield)));
|
||||
}
|
||||
|
||||
private ClayFiredBricks(final ClayFiredBricks card) {
|
||||
|
|
|
|||
|
|
@ -1,54 +1,85 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.Mana;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SagaAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.SourceHasCounterCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.dynamicvalue.common.DevotionCount;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.ExileAndReturnSourceEffect;
|
||||
import mage.abilities.effects.common.FightTargetSourceEffect;
|
||||
import mage.abilities.effects.common.discard.DiscardHandControllerEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.effects.mana.BasicManaEffect;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.PutCards;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CliveIfritsDominant extends CardImpl {
|
||||
public final class CliveIfritsDominant extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterPermanent filter = new FilterCreaturePermanent("other target creature");
|
||||
private static final Condition condition = new SourceHasCounterCondition(CounterType.LORE, 3);
|
||||
|
||||
public CliveIfritsDominant(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.NOBLE, SubType.WARRIOR}, "{4}{R}{R}",
|
||||
"Ifrit, Warden of Inferno",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, new SubType[]{SubType.SAGA, SubType.DEMON}, "R");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.NOBLE);
|
||||
this.subtype.add(SubType.WARRIOR);
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
this.secondSideCardClazz = mage.cards.i.IfritWardenOfInferno.class;
|
||||
// Clive, Ifrit's Dominant
|
||||
this.getLeftHalfCard().setPT(5, 5);
|
||||
|
||||
// When Clive enters, you may discard your hand, then draw cards equal to your devotion to red.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new DiscardHandControllerEffect(), true);
|
||||
ability.addEffect(new DrawCardSourceControllerEffect(DevotionCount.R)
|
||||
.setText(", then draw cards equal to your devotion to red"));
|
||||
this.addAbility(ability.addHint(DevotionCount.R.getHint()));
|
||||
this.getLeftHalfCard().addAbility(ability.addHint(DevotionCount.R.getHint()));
|
||||
|
||||
// {4}{R}{R}, {T}: Exile Clive, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery.
|
||||
this.addAbility(new TransformAbility());
|
||||
ability = new ActivateAsSorceryActivatedAbility(
|
||||
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED), new ManaCostsImpl<>("{4}{R}{R}")
|
||||
);
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
|
||||
// Ifrit, Warden of Inferno
|
||||
this.getRightHalfCard().setPT(9, 9);
|
||||
|
||||
// Saga (chapters)
|
||||
SagaAbility sagaAbility = new SagaAbility(this.getRightHalfCard());
|
||||
|
||||
// I -- Lunge -- Ifrit fights up to one other target creature.
|
||||
sagaAbility.addChapterEffect(this.getRightHalfCard(), SagaChapter.CHAPTER_I, sagaChapterAbility -> {
|
||||
sagaChapterAbility.addEffect(new FightTargetSourceEffect());
|
||||
sagaChapterAbility.addTarget(new TargetPermanent(0, 1, filter));
|
||||
sagaChapterAbility.withFlavorWord("Lunge");
|
||||
});
|
||||
|
||||
// II, III -- Brimstone -- Add {R}{R}{R}{R}. If Ifrit has three or more lore counters on it, exile it, then return it to the battlefield (front face up.)
|
||||
sagaAbility.addChapterEffect(this.getRightHalfCard(), SagaChapter.CHAPTER_II, SagaChapter.CHAPTER_III, sagaChapterAbility -> {
|
||||
sagaChapterAbility.addEffect(new BasicManaEffect(Mana.RedMana(4)));
|
||||
sagaChapterAbility.addEffect(new ConditionalOneShotEffect(
|
||||
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD), condition,
|
||||
"If {this} has three or more lore counters on it, exile it, then return it to the battlefield. <i>(front face up.)</i>"
|
||||
));
|
||||
sagaChapterAbility.withFlavorWord("Brimstone");
|
||||
});
|
||||
this.getRightHalfCard().addAbility(sagaAbility);
|
||||
}
|
||||
|
||||
private CliveIfritsDominant(final CliveIfritsDominant card) {
|
||||
|
|
|
|||
|
|
@ -1,34 +1,38 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
public final class CloisteredYouth extends CardImpl {
|
||||
public final class CloisteredYouth extends TransformingDoubleFacedCard {
|
||||
|
||||
public CloisteredYouth(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN}, "{1}{W}",
|
||||
"Unholy Fiend",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HORROR}, "B");
|
||||
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.u.UnholyFiend.class;
|
||||
// Cloistered Youth
|
||||
this.getLeftHalfCard().setPT(1, 1);
|
||||
|
||||
// At the beginning of your upkeep, you may transform Cloistered Youth.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(), true));
|
||||
this.getLeftHalfCard().addAbility(new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(), true));
|
||||
|
||||
// Unholy Fiend
|
||||
this.getRightHalfCard().setPT(3, 3);
|
||||
|
||||
// At the beginning of your end step, you lose 1 life.
|
||||
this.getRightHalfCard().addAbility(new BeginningOfEndStepTriggeredAbility(new LoseLifeSourceControllerEffect(1)));
|
||||
}
|
||||
|
||||
private CloisteredYouth(final CloisteredYouth card) {
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.TransformIntoSourceTriggeredAbility;
|
||||
import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CompleatedConjurer extends CardImpl {
|
||||
|
||||
public CompleatedConjurer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.PHYREXIAN);
|
||||
this.subtype.add(SubType.WEIRD);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
this.color.setBlue(true);
|
||||
this.color.setRed(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// When this creature transforms into Compleated Conjurer, exile the top card of your library. Until the end of your next turn, you may play that card.
|
||||
this.addAbility(new TransformIntoSourceTriggeredAbility(
|
||||
new ExileTopXMayPlayUntilEffect(1, Duration.UntilEndOfYourNextTurn)
|
||||
));
|
||||
}
|
||||
|
||||
private CompleatedConjurer(final CompleatedConjurer card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompleatedConjurer copy() {
|
||||
return new CompleatedConjurer(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,39 +1,58 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.TransformIntoSourceTriggeredAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.DefenderAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetCard;
|
||||
import mage.target.common.TargetOpponent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ConcealingCurtains extends CardImpl {
|
||||
public final class ConcealingCurtains extends TransformingDoubleFacedCard {
|
||||
|
||||
public ConcealingCurtains(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WALL}, "{B}",
|
||||
"Revealing Eye",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.EYE, SubType.HORROR}, "B");
|
||||
|
||||
this.subtype.add(SubType.WALL);
|
||||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(4);
|
||||
this.secondSideCardClazz = mage.cards.r.RevealingEye.class;
|
||||
// Concealing Curtains
|
||||
this.getLeftHalfCard().setPT(0, 4);
|
||||
|
||||
// Defender
|
||||
this.addAbility(DefenderAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(DefenderAbility.getInstance());
|
||||
|
||||
// {2}{B}: Transform Concealing Curtains. Activate only as a sorcery.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new ActivateAsSorceryActivatedAbility(
|
||||
this.getLeftHalfCard().addAbility(new ActivateAsSorceryActivatedAbility(
|
||||
new TransformSourceEffect(), new ManaCostsImpl<>("{2}{B}")
|
||||
));
|
||||
|
||||
// Revealing Eye
|
||||
this.getRightHalfCard().setPT(3, 4);
|
||||
|
||||
// Menace
|
||||
this.getRightHalfCard().addAbility(new MenaceAbility(false));
|
||||
|
||||
// When this creature transforms into Revealing Eye, target opponent reveals their hand. You may choose a nonland card from it. If you do, that player discards that card, then draws a card.
|
||||
Ability ability = new TransformIntoSourceTriggeredAbility(new RevealingEyeEffect());
|
||||
ability.addTarget(new TargetOpponent());
|
||||
this.getRightHalfCard().addAbility(ability);
|
||||
}
|
||||
|
||||
private ConcealingCurtains(final ConcealingCurtains card) {
|
||||
|
|
@ -45,3 +64,43 @@ public final class ConcealingCurtains extends CardImpl {
|
|||
return new ConcealingCurtains(this);
|
||||
}
|
||||
}
|
||||
|
||||
class RevealingEyeEffect extends OneShotEffect {
|
||||
|
||||
RevealingEyeEffect() {
|
||||
super(Outcome.Discard);
|
||||
staticText = "target opponent reveals their hand. You may choose a nonland card from it. " +
|
||||
"If you do, that player discards that card, then draws a card";
|
||||
}
|
||||
|
||||
private RevealingEyeEffect(final RevealingEyeEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RevealingEyeEffect copy() {
|
||||
return new RevealingEyeEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(mage.game.Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
Player opponent = game.getPlayer(source.getFirstTarget());
|
||||
if (controller == null || opponent == null) {
|
||||
return false;
|
||||
}
|
||||
opponent.revealCards(source, opponent.getHand(), game);
|
||||
if (opponent.getHand().count(StaticFilters.FILTER_CARD_NON_LAND, game) < 1) {
|
||||
return true;
|
||||
}
|
||||
TargetCard target = new TargetCard(0, 1, Zone.HAND, StaticFilters.FILTER_CARD_NON_LAND);
|
||||
controller.choose(outcome, opponent.getHand(), target, source, game);
|
||||
mage.cards.Card card = game.getCard(target.getFirstTarget());
|
||||
if (card == null) {
|
||||
return true;
|
||||
}
|
||||
opponent.discard(card, false, source, game);
|
||||
opponent.drawCards(1, source, game);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,49 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.Mana;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.common.delayed.AtTheBeginOfMainPhaseDelayedTriggeredAbility;
|
||||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||
import mage.abilities.effects.mana.AddManaToManaPoolSourceControllerEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class ConduitOfEmrakul extends CardImpl {
|
||||
|
||||
public ConduitOfEmrakul(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(5);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
// Whenever Conduit of Emrakul attacks, add {C}{C} at the beginning of your next main phase this turn.
|
||||
this.addAbility(new AttacksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
||||
new AtTheBeginOfMainPhaseDelayedTriggeredAbility(
|
||||
new AddManaToManaPoolSourceControllerEffect(Mana.GenericMana(2)), false,
|
||||
TargetController.YOU, AtTheBeginOfMainPhaseDelayedTriggeredAbility.PhaseSelection.NEXT_MAIN_THIS_TURN
|
||||
)
|
||||
).setText("add {C}{C} at the beginning of your next main phase this turn"), false));
|
||||
}
|
||||
|
||||
private ConduitOfEmrakul(final ConduitOfEmrakul card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConduitOfEmrakul copy() {
|
||||
return new ConduitOfEmrakul(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.Mana;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
|
@ -9,9 +8,8 @@ import mage.abilities.costs.mana.ManaCostsImpl;
|
|||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.mana.AddManaToManaPoolSourceControllerEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
|
|
@ -21,19 +19,19 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class ConduitOfStorms extends CardImpl {
|
||||
public final class ConduitOfStorms extends TransformingDoubleFacedCard {
|
||||
|
||||
public ConduitOfStorms(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.subtype.add(SubType.HORROR);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF, SubType.HORROR}, "{2}{R}",
|
||||
"Conduit of Emrakul",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ELDRAZI, SubType.WEREWOLF}, "");
|
||||
|
||||
this.secondSideCardClazz = mage.cards.c.ConduitOfEmrakul.class;
|
||||
// Conduit of Storms
|
||||
this.getLeftHalfCard().setPT(2, 3);
|
||||
|
||||
// Whenever Conduit of Storms attacks, add {R} at the beginning of your next main phase this turn.
|
||||
this.addAbility(new AttacksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
||||
this.getLeftHalfCard().addAbility(new AttacksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
||||
new AtTheBeginOfMainPhaseDelayedTriggeredAbility(
|
||||
new AddManaToManaPoolSourceControllerEffect(Mana.RedMana(1)), false,
|
||||
TargetController.YOU, AtTheBeginOfMainPhaseDelayedTriggeredAbility.PhaseSelection.NEXT_MAIN_THIS_TURN
|
||||
|
|
@ -41,8 +39,18 @@ public final class ConduitOfStorms extends CardImpl {
|
|||
).setText("add {R} at the beginning of your next main phase this turn"), false));
|
||||
|
||||
// {3}{R}{R}: Transform Conduit of Storms.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new SimpleActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{3}{R}{R}")));
|
||||
this.getLeftHalfCard().addAbility(new SimpleActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{3}{R}{R}")));
|
||||
|
||||
// Conduit of Emrakul
|
||||
this.getRightHalfCard().setPT(5, 4);
|
||||
|
||||
// Whenever Conduit of Emrakul attacks, add {C}{C} at the beginning of your next main phase this turn.
|
||||
this.getRightHalfCard().addAbility(new AttacksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
||||
new AtTheBeginOfMainPhaseDelayedTriggeredAbility(
|
||||
new AddManaToManaPoolSourceControllerEffect(Mana.GenericMana(2)), false,
|
||||
TargetController.YOU, AtTheBeginOfMainPhaseDelayedTriggeredAbility.PhaseSelection.NEXT_MAIN_THIS_TURN
|
||||
)
|
||||
).setText("add {C}{C} at the beginning of your next main phase this turn"), false));
|
||||
}
|
||||
|
||||
private ConduitOfStorms(final ConduitOfStorms card) {
|
||||
|
|
|
|||
|
|
@ -1,63 +0,0 @@
|
|||
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.DrawDiscardControllerEffect;
|
||||
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
|
||||
import mage.abilities.mana.ColorlessManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ConquerorsFoothold extends CardImpl {
|
||||
|
||||
public ConquerorsFoothold(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
// {T}: Add {C}.
|
||||
this.addAbility(new ColorlessManaAbility());
|
||||
|
||||
// {2}, {T}: Draw a card, then discard a card.
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(
|
||||
new DrawDiscardControllerEffect(),
|
||||
new ManaCostsImpl<>("{2}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.addAbility(ability);
|
||||
|
||||
// {4}, {T}: Draw a card.
|
||||
SimpleActivatedAbility ability2 = new SimpleActivatedAbility(
|
||||
new DrawCardSourceControllerEffect(1),
|
||||
new ManaCostsImpl<>("{4}"));
|
||||
ability2.addCost(new TapSourceCost());
|
||||
this.addAbility(ability2);
|
||||
|
||||
// {6}, {T}: Return target card from your graveyard to your hand.
|
||||
SimpleActivatedAbility ability3 = new SimpleActivatedAbility(
|
||||
new ReturnFromGraveyardToHandTargetEffect(),
|
||||
new ManaCostsImpl<>("{6}"));
|
||||
ability3.addCost(new TapSourceCost());
|
||||
ability3.addTarget(new TargetCardInYourGraveyard());
|
||||
this.addAbility(ability3);
|
||||
}
|
||||
|
||||
private ConquerorsFoothold(final ConquerorsFoothold card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConquerorsFoothold copy() {
|
||||
return new ConquerorsFoothold(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,48 +1,69 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.constants.Pronoun;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility;
|
||||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||
import mage.abilities.effects.common.ExileAndReturnSourceEffect;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.*;
|
||||
import mage.abilities.keyword.CrewAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.mana.ColorlessManaAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Pronoun;
|
||||
import mage.constants.PutCards;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ConquerorsGalleon extends CardImpl {
|
||||
public final class ConquerorsGalleon extends TransformingDoubleFacedCard {
|
||||
|
||||
public ConquerorsGalleon(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{SubType.VEHICLE}, "{4}",
|
||||
"Conqueror's Foothold",
|
||||
new CardType[]{CardType.LAND}, new SubType[]{}, "");
|
||||
|
||||
this.subtype.add(SubType.VEHICLE);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(10);
|
||||
// Conqueror's Galleon
|
||||
this.getLeftHalfCard().setPT(2, 10);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.c.ConquerorsFoothold.class;
|
||||
|
||||
// When Conqueror's Galleon attacks, exile it at the end of combat, then return it to the battlefield transformed under your control.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new AttacksTriggeredAbility(
|
||||
// When Conqueror's Galleon attacks, exile it at end of combat, then return it to the battlefield transformed under your control.
|
||||
this.getLeftHalfCard().addAbility(new AttacksTriggeredAbility(
|
||||
new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(
|
||||
new ExileAndReturnSourceEffect(
|
||||
PutCards.BATTLEFIELD_TRANSFORMED, Pronoun.IT, true
|
||||
)
|
||||
)), false, "When {this} attacks, exile it at end of combat, " +
|
||||
"then return it to the battlefield transformed under your control."
|
||||
)), false, "When {this} attacks, exile it at end of combat, then return it to the battlefield transformed under your control."
|
||||
));
|
||||
|
||||
// Crew 4
|
||||
this.addAbility(new CrewAbility(4));
|
||||
this.getLeftHalfCard().addAbility(new CrewAbility(4));
|
||||
|
||||
|
||||
// Conqueror's Foothold
|
||||
// {T}: Add {C}.
|
||||
this.getRightHalfCard().addAbility(new ColorlessManaAbility());
|
||||
|
||||
// {2}, {T}: Draw a card, then discard a card.
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(new DrawDiscardControllerEffect(), new ManaCostsImpl<>("{2}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.getRightHalfCard().addAbility(ability);
|
||||
|
||||
// {4}, {T}: Draw a card.
|
||||
SimpleActivatedAbility ability2 = new SimpleActivatedAbility(new DrawCardSourceControllerEffect(1), new ManaCostsImpl<>("{4}"));
|
||||
ability2.addCost(new TapSourceCost());
|
||||
this.getRightHalfCard().addAbility(ability2);
|
||||
|
||||
// {6}, {T}: Return target card from your graveyard to your hand.
|
||||
SimpleActivatedAbility ability3 = new SimpleActivatedAbility(new ReturnFromGraveyardToHandTargetEffect(), new ManaCostsImpl<>("{6}"));
|
||||
ability3.addCost(new TapSourceCost());
|
||||
ability3.addTarget(new TargetCardInYourGraveyard());
|
||||
this.getRightHalfCard().addAbility(ability3);
|
||||
}
|
||||
|
||||
private ConquerorsGalleon(final ConquerorsGalleon card) {
|
||||
|
|
|
|||
|
|
@ -1,40 +1,38 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class ConvictedKiller extends CardImpl {
|
||||
public final class ConvictedKiller extends TransformingDoubleFacedCard {
|
||||
|
||||
public ConvictedKiller(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{2}{R}",
|
||||
"Branded Howler",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "R");
|
||||
|
||||
this.secondSideCardClazz = mage.cards.b.BrandedHowler.class;
|
||||
// Convicted Killer
|
||||
this.getLeftHalfCard().setPT(2, 2);
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Convicted Killer.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new WerewolfFrontTriggeredAbility());
|
||||
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||
|
||||
// Branded Howler
|
||||
this.getRightHalfCard().setPT(4, 4);
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Branded Howler.
|
||||
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private ConvictedKiller(final ConvictedKiller card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConvictedKiller copy() {
|
||||
return new ConvictedKiller(this);
|
||||
}
|
||||
private ConvictedKiller(final ConvictedKiller card) { super(card); }
|
||||
@Override public ConvictedKiller copy() { return new ConvictedKiller(this); }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,41 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.game.permanent.token.GnomeToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CosmiumKiln extends CardImpl {
|
||||
|
||||
public CosmiumKiln(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "");
|
||||
|
||||
this.nightCard = true;
|
||||
this.color.setWhite(true);
|
||||
|
||||
// When Cosmium Kiln enters the battlefield, create two 1/1 colorless Gnome artifact creature tokens.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GnomeToken(), 2)));
|
||||
|
||||
// Creatures you control get +1/+1.
|
||||
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield)));
|
||||
}
|
||||
|
||||
private CosmiumKiln(final CosmiumKiln card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CosmiumKiln copy() {
|
||||
return new CosmiumKiln(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +1,13 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.common.DestroyTargetEffect;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
|
|
@ -20,40 +21,44 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CovertCutpurse extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter
|
||||
= new FilterCreaturePermanent("creature you don't control that was dealt damage this turn");
|
||||
public final class CovertCutpurse extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterPermanent filter = new FilterCreaturePermanent("creature you don't control that was dealt damage this turn");
|
||||
static {
|
||||
filter.add(TargetController.NOT_YOU.getControllerPredicate());
|
||||
filter.add(WasDealtDamageThisTurnPredicate.instance);
|
||||
}
|
||||
|
||||
public CovertCutpurse(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.ROGUE}, "{2}{B}",
|
||||
"Covetous Geist",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT, SubType.ROGUE}, "B");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.ROGUE);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
this.secondSideCardClazz = mage.cards.c.CovetousGeist.class;
|
||||
// Covert Cutpurse
|
||||
this.getLeftHalfCard().setPT(2, 1);
|
||||
|
||||
// When Covert Cutpurse enters the battlefield, destroy target creature you don't control that was dealt damage this turn.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect());
|
||||
ability.addTarget(new TargetPermanent(filter));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Disturb {4}{B}
|
||||
this.addAbility(new DisturbAbility(this, "{4}{B}"));
|
||||
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{4}{B}"));
|
||||
|
||||
// Covetous Geist
|
||||
this.getRightHalfCard().setPT(2, 2);
|
||||
|
||||
// Flying
|
||||
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Deathtouch
|
||||
this.getRightHalfCard().addAbility(DeathtouchAbility.getInstance());
|
||||
|
||||
// If Covetous Geist would be put into a graveyard from anywhere, exile it instead.
|
||||
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private CovertCutpurse(final CovertCutpurse card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CovertCutpurse copy() {
|
||||
return new CovertCutpurse(this);
|
||||
}
|
||||
private CovertCutpurse(final CovertCutpurse card) { super(card); }
|
||||
@Override public CovertCutpurse copy() { return new CovertCutpurse(this); }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,35 +1,53 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DiesSourceTriggeredAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.common.MillCardsControllerEffect;
|
||||
import mage.abilities.effects.common.ShuffleIntoLibraryTargetEffect;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CovetousCastaway extends CardImpl {
|
||||
public final class CovetousCastaway extends TransformingDoubleFacedCard {
|
||||
|
||||
public CovetousCastaway(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN}, "{1}{U}",
|
||||
"Ghostly Castigator",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT}, "U");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(3);
|
||||
this.secondSideCardClazz = mage.cards.g.GhostlyCastigator.class;
|
||||
|
||||
// Covetous Castaway
|
||||
this.getLeftHalfCard().setPT(1, 3);
|
||||
|
||||
// When Covetous Castaway dies, mill three cards.
|
||||
this.addAbility(new DiesSourceTriggeredAbility(new MillCardsControllerEffect(3)));
|
||||
this.getLeftHalfCard().addAbility(new DiesSourceTriggeredAbility(new MillCardsControllerEffect(3)));
|
||||
|
||||
// Disturb {3}{U}{U}
|
||||
this.addAbility(new DisturbAbility(this, "{3}{U}{U}"));
|
||||
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{3}{U}{U}"));
|
||||
|
||||
// Ghostly Castigator
|
||||
this.getRightHalfCard().setPT(3, 4);
|
||||
|
||||
// Flying
|
||||
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// When Ghostly Castigator enters the battlefield, you may shuffle up to three target cards from your graveyard into your library.
|
||||
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new ShuffleIntoLibraryTargetEffect(), true);
|
||||
ability.addTarget(new TargetCardInYourGraveyard(0, 3));
|
||||
this.getRightHalfCard().addAbility(ability);
|
||||
|
||||
// If Ghostly Castigator would be put into a graveyard from anywhere, exile it instead.
|
||||
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private CovetousCastaway(final CovetousCastaway card) {
|
||||
|
|
|
|||
|
|
@ -1,47 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CovetousGeist extends CardImpl {
|
||||
|
||||
public CovetousGeist(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.SPIRIT);
|
||||
this.subtype.add(SubType.ROGUE);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
this.color.setBlack(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Deathtouch
|
||||
this.addAbility(DeathtouchAbility.getInstance());
|
||||
|
||||
// If Covetous Geist would be put into a graveyard from anywhere, exile it instead.
|
||||
this.addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private CovetousGeist(final CovetousGeist card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CovetousGeist copy() {
|
||||
return new CovetousGeist(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,18 +1,22 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.LifeCompareCondition;
|
||||
import mage.abilities.effects.common.LoseLifeAllPlayersEffect;
|
||||
import mage.abilities.effects.common.LoseLifeOpponentsEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.mana.AnyColorManaAbility;
|
||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -20,26 +24,39 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class CryptolithFragment extends CardImpl {
|
||||
public final class CryptolithFragment extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final Condition condition = new LifeCompareCondition(TargetController.EACH_PLAYER, ComparisonType.OR_LESS, 10);
|
||||
|
||||
public CryptolithFragment(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
|
||||
this.secondSideCardClazz = mage.cards.a.AuroraOfEmrakul.class;
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{}, "{3}",
|
||||
"Aurora of Emrakul",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ELDRAZI, SubType.REFLECTION}, "");
|
||||
|
||||
// Cryptolith Fragment
|
||||
// Cryptolith Fragment enters the battlefield tapped.
|
||||
this.addAbility(new EntersBattlefieldTappedAbility());
|
||||
this.getLeftHalfCard().addAbility(new EntersBattlefieldTappedAbility());
|
||||
|
||||
// {T}: Add one mana of any color. Each player loses 1 life.
|
||||
Ability anyColorManaAbility = new AnyColorManaAbility();
|
||||
anyColorManaAbility.addEffect(new LoseLifeAllPlayersEffect(1));
|
||||
this.addAbility(anyColorManaAbility);
|
||||
this.getLeftHalfCard().addAbility(anyColorManaAbility);
|
||||
|
||||
// At the beginning of your upkeep, if each player has 10 or less life, transform Cryptolith Fragment.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect()).withInterveningIf(condition));
|
||||
this.getLeftHalfCard().addAbility(new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect()).withInterveningIf(condition));
|
||||
|
||||
// Aurora of Emrakul
|
||||
this.getRightHalfCard().setPT(1, 4);
|
||||
|
||||
// Flying
|
||||
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Deathtouch
|
||||
this.getRightHalfCard().addAbility(DeathtouchAbility.getInstance());
|
||||
|
||||
// Whenever Aurora of Emrakul attacks, each opponent loses 3 life.
|
||||
this.getRightHalfCard().addAbility(new AttacksTriggeredAbility(new LoseLifeOpponentsEffect(3), false));
|
||||
}
|
||||
|
||||
private CryptolithFragment(final CryptolithFragment card) {
|
||||
|
|
|
|||
|
|
@ -1,42 +1,65 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.SagaAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.ExileAndReturnSourceEffect;
|
||||
import mage.abilities.effects.common.PreventAllDamageToAllEffect;
|
||||
import mage.abilities.effects.common.TapAllEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
||||
import mage.abilities.keyword.EquipAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.PutCards;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CrystalFragments extends CardImpl {
|
||||
public final class CrystalFragments extends TransformingDoubleFacedCard {
|
||||
|
||||
public CrystalFragments(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{W}");
|
||||
|
||||
this.subtype.add(SubType.EQUIPMENT);
|
||||
this.secondSideCardClazz = mage.cards.s.SummonAlexander.class;
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{SubType.EQUIPMENT}, "{W}",
|
||||
"Summon: Alexander",
|
||||
new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, new SubType[]{SubType.SAGA, SubType.CONSTRUCT}, "W");
|
||||
|
||||
// Crystal Fragments
|
||||
// Equipped creature gets +1/+1.
|
||||
this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(1, 1)));
|
||||
this.getLeftHalfCard().addAbility(new SimpleStaticAbility(new BoostEquippedEffect(1, 1)));
|
||||
|
||||
// {5}{W}{W}: Exile this Equipment, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new ActivateAsSorceryActivatedAbility(
|
||||
this.getLeftHalfCard().addAbility(new ActivateAsSorceryActivatedAbility(
|
||||
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED), new ManaCostsImpl<>("{5}{W}{W}")
|
||||
));
|
||||
|
||||
// Equip {1}
|
||||
this.addAbility(new EquipAbility(1));
|
||||
this.getLeftHalfCard().addAbility(new EquipAbility(1));
|
||||
|
||||
// Summon: Alexander
|
||||
this.getRightHalfCard().setPT(4, 3);
|
||||
|
||||
// Saga setup (As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)
|
||||
SagaAbility sagaAbility = new SagaAbility(this.getRightHalfCard()).withShowSacText(true);
|
||||
|
||||
// I, II -- Prevent all damage that would be dealt to creatures you control this turn.
|
||||
sagaAbility.addChapterEffect(this.getRightHalfCard(), SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II,
|
||||
chapterAbility -> chapterAbility.addEffect(new PreventAllDamageToAllEffect(
|
||||
Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES_CONTROLLED
|
||||
)));
|
||||
|
||||
// III -- Tap all creatures your opponents control.
|
||||
sagaAbility.addChapterEffect(this.getRightHalfCard(), SagaChapter.CHAPTER_III,
|
||||
chapterAbility -> chapterAbility.addEffect(new TapAllEffect(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES)));
|
||||
|
||||
this.getRightHalfCard().addAbility(sagaAbility);
|
||||
|
||||
// Flying
|
||||
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
}
|
||||
|
||||
private CrystalFragments(final CrystalFragments card) {
|
||||
|
|
|
|||
|
|
@ -1,21 +1,23 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.CardsInControllerGraveyardCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.abilities.keyword.ProwessAbility;
|
||||
import mage.abilities.mana.ConditionalColorlessManaAbility;
|
||||
import mage.abilities.mana.builder.common.InstantOrSorcerySpellManaBuilder;
|
||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterInstantOrSorceryCard;
|
||||
|
||||
|
|
@ -24,25 +26,35 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class CuriousHomunculus extends CardImpl {
|
||||
public final class CuriousHomunculus extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final Condition condition = new CardsInControllerGraveyardCondition(3, new FilterInstantOrSorceryCard("instant and/or sorcery cards"));
|
||||
private static final Hint hint = new ValueHint("Instant and sorcery cards in your graveyard", new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY));
|
||||
private static final FilterCard filter = new FilterInstantOrSorceryCard("Instant and sorcery spells");
|
||||
|
||||
public CuriousHomunculus(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
|
||||
this.subtype.add(SubType.HOMUNCULUS);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HOMUNCULUS}, "{1}{U}",
|
||||
"Voracious Reader",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ELDRAZI, SubType.HOMUNCULUS}, "");
|
||||
|
||||
this.secondSideCardClazz = mage.cards.v.VoraciousReader.class;
|
||||
// Curious Homunculus
|
||||
this.getLeftHalfCard().setPT(1, 1);
|
||||
|
||||
// {T}: Add {C}. Spend this mana only to cast an instant or sorcery spell.
|
||||
this.addAbility(new ConditionalColorlessManaAbility(new TapSourceCost(), 1, new InstantOrSorcerySpellManaBuilder()));
|
||||
this.getLeftHalfCard().addAbility(new ConditionalColorlessManaAbility(new TapSourceCost(), 1, new InstantOrSorcerySpellManaBuilder()));
|
||||
|
||||
// At the beginning of your upkeep, if there are three or more instant and/or sorcery cards in your graveyard, transform Curious Homunculus.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect()).withInterveningIf(condition).addHint(hint));
|
||||
this.getLeftHalfCard().addAbility(new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect()).withInterveningIf(condition).addHint(hint));
|
||||
|
||||
// Voracious Reader
|
||||
this.getRightHalfCard().setPT(3, 4);
|
||||
|
||||
// Prowess
|
||||
this.getRightHalfCard().addAbility(new ProwessAbility());
|
||||
|
||||
// Instant and sorcery spells you cast cost {1} less to cast.
|
||||
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 1)));
|
||||
}
|
||||
|
||||
private CuriousHomunculus(final CuriousHomunculus card) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.ReplacementEffectImpl;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
|
|
@ -9,8 +8,11 @@ import mage.abilities.effects.common.GainLifeEffect;
|
|||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||
import mage.abilities.keyword.DayboundAbility;
|
||||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
|
|
@ -23,24 +25,24 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CurseOfLeeches extends CardImpl {
|
||||
public final class CurseOfLeeches extends TransformingDoubleFacedCard {
|
||||
|
||||
public CurseOfLeeches(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
|
||||
|
||||
this.subtype.add(SubType.AURA);
|
||||
this.subtype.add(SubType.CURSE);
|
||||
this.secondSideCardClazz = mage.cards.l.LeechingLurker.class;
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.AURA, SubType.CURSE}, "{2}{B}",
|
||||
"Leeching Lurker",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.LEECH, SubType.HORROR}, "B");
|
||||
|
||||
// Curse of Leeches
|
||||
// Enchant player
|
||||
TargetPlayer auraTarget = new TargetPlayer();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||
this.getLeftHalfCard().getSpellAbility().addTarget(auraTarget);
|
||||
this.getLeftHalfCard().getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||
Ability ability = new EnchantAbility(auraTarget);
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// As this permanent transforms into Curse of Leeches, attach it to a player.
|
||||
this.addAbility(new SimpleStaticAbility(new CurseOfLeechesEffect()));
|
||||
this.getLeftHalfCard().addAbility(new SimpleStaticAbility(new CurseOfLeechesEffect()));
|
||||
|
||||
// At the beginning of enchanted player's upkeep, they lose 1 life and you gain 1 life.
|
||||
ability = new BeginningOfUpkeepTriggeredAbility(
|
||||
|
|
@ -48,10 +50,19 @@ public final class CurseOfLeeches extends CardImpl {
|
|||
false
|
||||
);
|
||||
ability.addEffect(new GainLifeEffect(1).concatBy("and"));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Daybound
|
||||
this.addAbility(new DayboundAbility());
|
||||
this.getLeftHalfCard().addAbility(new DayboundAbility());
|
||||
|
||||
// Leeching Lurker
|
||||
this.getRightHalfCard().setPT(4, 4);
|
||||
|
||||
// Lifelink
|
||||
this.getRightHalfCard().addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// Nightbound
|
||||
this.getRightHalfCard().addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private CurseOfLeeches(final CurseOfLeeches card) {
|
||||
|
|
@ -75,6 +86,11 @@ class CurseOfLeechesEffect extends ReplacementEffectImpl {
|
|||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CurseOfLeechesEffect copy() {
|
||||
return new CurseOfLeechesEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
|
|
@ -101,9 +117,4 @@ class CurseOfLeechesEffect extends ReplacementEffectImpl {
|
|||
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||
return source.getSourceId().equals(event.getTargetId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CurseOfLeechesEffect copy() {
|
||||
return new CurseOfLeechesEffect(this);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,86 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.LivingMetalAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.TurnPhase;
|
||||
import mage.game.Game;
|
||||
import mage.game.turn.TurnMod;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author mllagostera
|
||||
*/
|
||||
public final class CyclonusCybertronianFighter extends CardImpl {
|
||||
|
||||
public CyclonusCybertronianFighter(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.VEHICLE);
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
this.color.setBlack(true);
|
||||
this.color.setBlue(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Living metal
|
||||
this.addAbility(new LivingMetalAbility());
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever Cyclonus deals combat damage to a player, convert it.
|
||||
// If you do, there is an additional beginning phase after this phase.
|
||||
Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||
new CyclonusCybertronianFighterEffect(),
|
||||
false
|
||||
);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private CyclonusCybertronianFighter(final CyclonusCybertronianFighter card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CyclonusCybertronianFighter copy() {
|
||||
return new CyclonusCybertronianFighter(this);
|
||||
}
|
||||
}
|
||||
|
||||
class CyclonusCybertronianFighterEffect extends TransformSourceEffect {
|
||||
|
||||
CyclonusCybertronianFighterEffect() {
|
||||
super();
|
||||
staticText = "transform it. If you do, there is an additional beginning phase after this phase";
|
||||
}
|
||||
|
||||
private CyclonusCybertronianFighterEffect(final CyclonusCybertronianFighterEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CyclonusCybertronianFighterEffect copy() {
|
||||
return new CyclonusCybertronianFighterEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
if (!super.apply(game, source)) {
|
||||
return false;
|
||||
}
|
||||
TurnMod beginning = new TurnMod(game.getState().getActivePlayerId()).withExtraPhase(TurnPhase.BEGINNING);
|
||||
game.getState().getTurnMods().add(beginning);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
|
|
@ -9,58 +8,67 @@ import mage.abilities.decorator.ConditionalOneShotEffect;
|
|||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.keyword.ConniveSourceEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.LivingMetalAbility;
|
||||
import mage.abilities.keyword.MoreThanMeetsTheEyeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.predicate.mageobject.PowerPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.turn.TurnMod;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author mllagostera
|
||||
*/
|
||||
public final class CyclonusTheSaboteur extends CardImpl {
|
||||
public final class CyclonusTheSaboteur extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent();
|
||||
|
||||
static {
|
||||
filter.add(new PowerPredicate(ComparisonType.MORE_THAN,4));
|
||||
}
|
||||
|
||||
static { filter.add(new PowerPredicate(ComparisonType.MORE_THAN,4)); }
|
||||
private static final Condition condition = new SourceMatchesFilterCondition(filter);
|
||||
|
||||
public CyclonusTheSaboteur(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{U}{B}");
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, new SubType[]{SubType.ROBOT}, "{2}{U}{B}",
|
||||
"Cyclonus, Cybertronian Fighter",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ARTIFACT}, new SubType[]{SubType.VEHICLE}, "UB");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.ROBOT);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(5);
|
||||
this.secondSideCardClazz = mage.cards.c.CyclonusCybertronianFighter.class;
|
||||
// Cyclonus, the Saboteur
|
||||
this.getLeftHalfCard().setPT(2, 5);
|
||||
|
||||
// More Than Meets the Eye {5}{U}{B}
|
||||
this.addAbility(new MoreThanMeetsTheEyeAbility(this, "{5}{U}{B}"));
|
||||
this.getLeftHalfCard().addAbility(new MoreThanMeetsTheEyeAbility(this, "{5}{U}{B}"));
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever Cyclonus deals combat damage to a player, it connives.
|
||||
// Whenever Cyclonus deals combat damage to a player, it connives. Then if Cyclonus's power is 5 or greater, convert it.
|
||||
Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||
new ConniveSourceEffect("it"),
|
||||
false,
|
||||
true
|
||||
new ConniveSourceEffect("it"), false, true
|
||||
);
|
||||
|
||||
// Then if Cyclonus's power is 5 or greater, convert it
|
||||
ability.addEffect((new ConditionalOneShotEffect(
|
||||
new TransformSourceEffect(),
|
||||
condition,
|
||||
ability.addEffect(new ConditionalOneShotEffect(
|
||||
new TransformSourceEffect(), condition,
|
||||
"Then if {this}'s power is 5 or greater, convert it."
|
||||
)));
|
||||
));
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
this.addAbility(ability);
|
||||
// Cyclonus, Cybertronian Fighter
|
||||
this.getRightHalfCard().setPT(5, 5);
|
||||
|
||||
// Living metal
|
||||
this.getRightHalfCard().addAbility(new LivingMetalAbility());
|
||||
|
||||
// Flying
|
||||
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever Cyclonus deals combat damage to a player, transform it. If you do, there is an additional beginning phase after this phase.
|
||||
Ability abilityBack = new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||
new CyclonusCybertronianFighterEffect(),
|
||||
false
|
||||
);
|
||||
this.getRightHalfCard().addAbility(abilityBack);
|
||||
}
|
||||
|
||||
private CyclonusTheSaboteur(final CyclonusTheSaboteur card) {
|
||||
|
|
@ -72,3 +80,30 @@ public final class CyclonusTheSaboteur extends CardImpl {
|
|||
return new CyclonusTheSaboteur(this);
|
||||
}
|
||||
}
|
||||
|
||||
class CyclonusCybertronianFighterEffect extends TransformSourceEffect {
|
||||
|
||||
CyclonusCybertronianFighterEffect() {
|
||||
super();
|
||||
staticText = "convert it. If you do, there is an additional beginning phase after this phase";
|
||||
}
|
||||
|
||||
private CyclonusCybertronianFighterEffect(final CyclonusCybertronianFighterEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CyclonusCybertronianFighterEffect copy() {
|
||||
return new CyclonusCybertronianFighterEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
if (!super.apply(game, source)) {
|
||||
return false;
|
||||
}
|
||||
TurnMod beginning = new TurnMod(game.getState().getActivePlayerId()).withExtraPhase(TurnPhase.BEGINNING);
|
||||
game.getState().getTurnMods().add(beginning);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,51 +0,0 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.common.ShuffleIntoLibraryTargetEffect;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GhostlyCastigator extends CardImpl {
|
||||
|
||||
public GhostlyCastigator(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.SPIRIT);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(4);
|
||||
this.color.setBlue(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// When Ghostly Castigator enters the battlefield, you may shuffle up to three target cards from your graveyard into your library.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new ShuffleIntoLibraryTargetEffect(), true);
|
||||
ability.addTarget(new TargetCardInYourGraveyard(0, 3));
|
||||
this.addAbility(ability);
|
||||
|
||||
// If Ghostly Castigator would be put into a graveyard from anywhere, exile it instead.
|
||||
this.addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private GhostlyCastigator(final GhostlyCastigator card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GhostlyCastigator copy() {
|
||||
return new GhostlyCastigator(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
package mage.cards.i;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.Mana;
|
||||
import mage.abilities.common.SagaAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.SourceHasCounterCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.ExileAndReturnSourceEffect;
|
||||
import mage.abilities.effects.common.FightTargetSourceEffect;
|
||||
import mage.abilities.effects.mana.BasicManaEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class IfritWardenOfInferno extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterCreaturePermanent("other target creature");
|
||||
private static final Condition condition = new SourceHasCounterCondition(CounterType.LORE, 3);
|
||||
|
||||
public IfritWardenOfInferno(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.SAGA);
|
||||
this.subtype.add(SubType.DEMON);
|
||||
this.power = new MageInt(9);
|
||||
this.toughness = new MageInt(9);
|
||||
this.nightCard = true;
|
||||
this.color.setRed(true);
|
||||
|
||||
// (As this Saga enters and after your draw step, add a lore counter.)
|
||||
SagaAbility sagaAbility = new SagaAbility(this);
|
||||
|
||||
// I -- Lunge -- Ifrit fights up to one other target creature.
|
||||
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I, ability -> {
|
||||
ability.addEffect(new FightTargetSourceEffect());
|
||||
ability.addTarget(new TargetPermanent(0, 1, filter));
|
||||
ability.withFlavorWord("Lunge");
|
||||
});
|
||||
|
||||
// II, III -- Brimstone -- Add {R}{R}{R}{R}. If Ifrit has three or more lore counters on it, exile it, then return it to the battlefield
|
||||
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, SagaChapter.CHAPTER_III, ability -> {
|
||||
ability.addEffect(new BasicManaEffect(Mana.RedMana(4)));
|
||||
ability.addEffect(new ConditionalOneShotEffect(
|
||||
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD), condition,
|
||||
"If {this} has three or more lore counters on it, exile it, " +
|
||||
"then return it to the battlefield <i>(front face up.)</i>."
|
||||
));
|
||||
ability.withFlavorWord("Brimstone");
|
||||
});
|
||||
this.addAbility(sagaAbility);
|
||||
}
|
||||
|
||||
private IfritWardenOfInferno(final IfritWardenOfInferno card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IfritWardenOfInferno copy() {
|
||||
return new IfritWardenOfInferno(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LeechingLurker extends CardImpl {
|
||||
|
||||
public LeechingLurker(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.LEECH);
|
||||
this.subtype.add(SubType.HORROR);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
this.color.setBlack(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// Nightbound
|
||||
this.addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private LeechingLurker(final LeechingLurker card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LeechingLurker copy() {
|
||||
return new LeechingLurker(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
|
||||
package mage.cards.m;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class MarkovsServant extends CardImpl {
|
||||
|
||||
public MarkovsServant(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},null);
|
||||
this.subtype.add(SubType.VAMPIRE);
|
||||
this.color.setBlack(true);
|
||||
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.nightCard = true;
|
||||
}
|
||||
|
||||
private MarkovsServant(final MarkovsServant card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkovsServant copy() {
|
||||
return new MarkovsServant(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
package mage.cards.r;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.TransformIntoSourceTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetCard;
|
||||
import mage.target.common.TargetCardInHand;
|
||||
import mage.target.common.TargetOpponent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class RevealingEye extends CardImpl {
|
||||
|
||||
public RevealingEye(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.EYE);
|
||||
this.subtype.add(SubType.HORROR);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(4);
|
||||
this.color.setBlack(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility(false));
|
||||
|
||||
// When this creature transforms into Revealing Eye, target opponent reveals their hand. You may choose a nonland card from it. If you do, that player discards that card, then draws a card.
|
||||
Ability ability = new TransformIntoSourceTriggeredAbility(new RevealingEyeEffect());
|
||||
ability.addTarget(new TargetOpponent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private RevealingEye(final RevealingEye card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RevealingEye copy() {
|
||||
return new RevealingEye(this);
|
||||
}
|
||||
}
|
||||
|
||||
class RevealingEyeEffect extends OneShotEffect {
|
||||
|
||||
RevealingEyeEffect() {
|
||||
super(Outcome.Discard);
|
||||
staticText = "target opponent reveals their hand. You may choose a nonland card from it. " +
|
||||
"If you do, that player discards that card, then draws a card";
|
||||
}
|
||||
|
||||
private RevealingEyeEffect(final RevealingEyeEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RevealingEyeEffect copy() {
|
||||
return new RevealingEyeEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
Player opponent = game.getPlayer(source.getFirstTarget());
|
||||
if (controller == null || opponent == null) {
|
||||
return false;
|
||||
}
|
||||
opponent.revealCards(source, opponent.getHand(), game);
|
||||
if (opponent.getHand().count(StaticFilters.FILTER_CARD_NON_LAND, game) < 1) {
|
||||
return true;
|
||||
}
|
||||
TargetCard target = new TargetCard(0, 1, Zone.HAND, StaticFilters.FILTER_CARD_NON_LAND);
|
||||
controller.choose(outcome, opponent.getHand(), target, source, game);
|
||||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card == null) {
|
||||
return true;
|
||||
}
|
||||
opponent.discard(card, false, source, game);
|
||||
opponent.drawCards(1, source, game);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class SavagePackmate extends CardImpl {
|
||||
|
||||
public SavagePackmate(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
this.color.setRed(true);
|
||||
this.color.setGreen(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Trample
|
||||
this.addAbility(TrampleAbility.getInstance());
|
||||
|
||||
// Other creatures you control get +1/+0.
|
||||
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
|
||||
1, 0, Duration.WhileOnBattlefield, true
|
||||
)));
|
||||
|
||||
// Nightbound
|
||||
this.addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private SavagePackmate(final SavagePackmate card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SavagePackmate copy() {
|
||||
return new SavagePackmate(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SagaAbility;
|
||||
import mage.abilities.effects.common.PreventAllDamageToAllEffect;
|
||||
import mage.abilities.effects.common.TapAllEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SagaChapter;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class SummonAlexander extends CardImpl {
|
||||
|
||||
public SummonAlexander(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.SAGA);
|
||||
this.subtype.add(SubType.CONSTRUCT);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(3);
|
||||
this.nightCard = true;
|
||||
this.color.setWhite(true);
|
||||
|
||||
// (As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)
|
||||
SagaAbility sagaAbility = new SagaAbility(this);
|
||||
|
||||
// I, II -- Prevent all damage that would be dealt to creatures you control this turn.
|
||||
sagaAbility.addChapterEffect(
|
||||
this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II,
|
||||
new PreventAllDamageToAllEffect(
|
||||
Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES_CONTROLLED
|
||||
)
|
||||
);
|
||||
|
||||
// III -- Tap all creatures your opponents control.
|
||||
sagaAbility.addChapterEffect(
|
||||
this, SagaChapter.CHAPTER_III,
|
||||
new TapAllEffect(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES)
|
||||
);
|
||||
this.addAbility(sagaAbility.withShowSacText(true));
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
}
|
||||
|
||||
private SummonAlexander(final SummonAlexander card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SummonAlexander copy() {
|
||||
return new SummonAlexander(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
|
||||
package mage.cards.u;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class UnholyFiend extends CardImpl {
|
||||
|
||||
public UnholyFiend(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
|
||||
this.subtype.add(SubType.HORROR);
|
||||
|
||||
this.color.setBlack(true);
|
||||
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(new LoseLifeSourceControllerEffect(1)));
|
||||
}
|
||||
|
||||
private UnholyFiend(final UnholyFiend card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UnholyFiend copy() {
|
||||
return new UnholyFiend(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -56,7 +56,6 @@ public final class DarkAscension extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Burden of Guilt", 4, Rarity.COMMON, mage.cards.b.BurdenOfGuilt.class));
|
||||
cards.add(new SetCardInfo("Burning Oil", 84, Rarity.UNCOMMON, mage.cards.b.BurningOil.class));
|
||||
cards.add(new SetCardInfo("Call to the Kindred", 30, Rarity.RARE, mage.cards.c.CallToTheKindred.class));
|
||||
cards.add(new SetCardInfo("Chalice of Death", 146, Rarity.UNCOMMON, mage.cards.c.ChaliceOfDeath.class));
|
||||
cards.add(new SetCardInfo("Chalice of Life", 146, Rarity.UNCOMMON, mage.cards.c.ChaliceOfLife.class));
|
||||
cards.add(new SetCardInfo("Chant of the Skifsang", 31, Rarity.COMMON, mage.cards.c.ChantOfTheSkifsang.class));
|
||||
cards.add(new SetCardInfo("Chill of Foreboding", 32, Rarity.UNCOMMON, mage.cards.c.ChillOfForeboding.class));
|
||||
|
|
@ -139,7 +138,6 @@ public final class DarkAscension extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Lost in the Woods", 123, Rarity.RARE, mage.cards.l.LostInTheWoods.class));
|
||||
cards.add(new SetCardInfo("Loyal Cathar", 13, Rarity.COMMON, mage.cards.l.LoyalCathar.class));
|
||||
cards.add(new SetCardInfo("Markov Blademaster", 96, Rarity.RARE, mage.cards.m.MarkovBlademaster.class));
|
||||
cards.add(new SetCardInfo("Markov's Servant", 55, Rarity.COMMON, mage.cards.m.MarkovsServant.class));
|
||||
cards.add(new SetCardInfo("Markov Warlord", 97, Rarity.UNCOMMON, mage.cards.m.MarkovWarlord.class));
|
||||
cards.add(new SetCardInfo("Midnight Guard", 14, Rarity.COMMON, mage.cards.m.MidnightGuard.class));
|
||||
cards.add(new SetCardInfo("Mikaeus, the Unhallowed", 70, Rarity.MYTHIC, mage.cards.m.MikaeusTheUnhallowed.class));
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ public final class EldritchMoon extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Advanced Stitchwing", 49, Rarity.UNCOMMON, mage.cards.a.AdvancedStitchwing.class));
|
||||
cards.add(new SetCardInfo("Alchemist's Greeting", 116, Rarity.COMMON, mage.cards.a.AlchemistsGreeting.class));
|
||||
cards.add(new SetCardInfo("Assembled Alphas", 117, Rarity.RARE, mage.cards.a.AssembledAlphas.class));
|
||||
cards.add(new SetCardInfo("Aurora of Emrakul", 193, Rarity.UNCOMMON, mage.cards.a.AuroraOfEmrakul.class));
|
||||
cards.add(new SetCardInfo("Backwoods Survivalists", 150, Rarity.COMMON, mage.cards.b.BackwoodsSurvivalists.class));
|
||||
cards.add(new SetCardInfo("Bedlam Reveler", 118, Rarity.RARE, mage.cards.b.BedlamReveler.class));
|
||||
cards.add(new SetCardInfo("Blessed Alliance", 13, Rarity.UNCOMMON, mage.cards.b.BlessedAlliance.class));
|
||||
|
|
@ -74,7 +73,6 @@ public final class EldritchMoon extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Collective Brutality", 85, Rarity.RARE, mage.cards.c.CollectiveBrutality.class));
|
||||
cards.add(new SetCardInfo("Collective Defiance", 123, Rarity.RARE, mage.cards.c.CollectiveDefiance.class));
|
||||
cards.add(new SetCardInfo("Collective Effort", 17, Rarity.RARE, mage.cards.c.CollectiveEffort.class));
|
||||
cards.add(new SetCardInfo("Conduit of Emrakul", 124, Rarity.UNCOMMON, mage.cards.c.ConduitOfEmrakul.class));
|
||||
cards.add(new SetCardInfo("Conduit of Storms", 124, Rarity.UNCOMMON, mage.cards.c.ConduitOfStorms.class));
|
||||
cards.add(new SetCardInfo("Contingency Plan", 52, Rarity.COMMON, mage.cards.c.ContingencyPlan.class));
|
||||
cards.add(new SetCardInfo("Convolute", 53, Rarity.COMMON, mage.cards.c.Convolute.class));
|
||||
|
|
|
|||
|
|
@ -98,10 +98,6 @@ public final class FinalFantasy extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Cecil, Dark Knight", 445, Rarity.RARE, mage.cards.c.CecilDarkKnight.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cecil, Dark Knight", 525, Rarity.RARE, mage.cards.c.CecilDarkKnight.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cecil, Dark Knight", 91, Rarity.RARE, mage.cards.c.CecilDarkKnight.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cecil, Redeemed Paladin", 380, Rarity.RARE, mage.cards.c.CecilRedeemedPaladin.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cecil, Redeemed Paladin", 445, Rarity.RARE, mage.cards.c.CecilRedeemedPaladin.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cecil, Redeemed Paladin", 525, Rarity.RARE, mage.cards.c.CecilRedeemedPaladin.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cecil, Redeemed Paladin", 91, Rarity.RARE, mage.cards.c.CecilRedeemedPaladin.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Chaos, the Endless", 221, Rarity.UNCOMMON, mage.cards.c.ChaosTheEndless.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Chaos, the Endless", 486, Rarity.UNCOMMON, mage.cards.c.ChaosTheEndless.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Choco, Seeker of Paradise", 215, Rarity.RARE, mage.cards.c.ChocoSeekerOfParadise.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -266,11 +262,6 @@ public final class FinalFantasy extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Hydaelyn, the Mothercrystal", 434, Rarity.RARE, mage.cards.h.HydaelynTheMothercrystal.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ice Flan", 55, Rarity.COMMON, mage.cards.i.IceFlan.class));
|
||||
cards.add(new SetCardInfo("Ice Magic", 56, Rarity.COMMON, mage.cards.i.IceMagic.class));
|
||||
cards.add(new SetCardInfo("Ifrit, Warden of Inferno", 133, Rarity.MYTHIC, mage.cards.i.IfritWardenOfInferno.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ifrit, Warden of Inferno", 318, Rarity.MYTHIC, mage.cards.i.IfritWardenOfInferno.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ifrit, Warden of Inferno", 385, Rarity.MYTHIC, mage.cards.i.IfritWardenOfInferno.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ifrit, Warden of Inferno", 458, Rarity.MYTHIC, mage.cards.i.IfritWardenOfInferno.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ifrit, Warden of Inferno", 530, Rarity.MYTHIC, mage.cards.i.IfritWardenOfInferno.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ignis Scientia", 227, Rarity.UNCOMMON, mage.cards.i.IgnisScientia.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ignis Scientia", 492, Rarity.UNCOMMON, mage.cards.i.IgnisScientia.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Il Mheg Pixie", 57, Rarity.UNCOMMON, mage.cards.i.IlMhegPixie.class));
|
||||
|
|
@ -508,8 +499,6 @@ public final class FinalFantasy extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Stolen Uniform", 332, Rarity.UNCOMMON, mage.cards.s.StolenUniform.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Stolen Uniform", 75, Rarity.UNCOMMON, mage.cards.s.StolenUniform.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Stuck in Summoner's Sanctum", 76, Rarity.COMMON, mage.cards.s.StuckInSummonersSanctum.class));
|
||||
cards.add(new SetCardInfo("Summon: Alexander", 13, Rarity.UNCOMMON, mage.cards.s.SummonAlexander.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Summon: Alexander", 357, Rarity.UNCOMMON, mage.cards.s.SummonAlexander.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Summon: Anima", 120, Rarity.UNCOMMON, mage.cards.s.SummonAnima.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Summon: Anima", 364, Rarity.UNCOMMON, mage.cards.s.SummonAnima.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Summon: Bahamut", 1, Rarity.MYTHIC, mage.cards.s.SummonBahamut.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ public final class FromTheVaultTransform extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Bruna, the Fading Light", 5, Rarity.MYTHIC, mage.cards.b.BrunaTheFadingLight.class));
|
||||
cards.add(new SetCardInfo("Brisela, Voice of Nightmares", "5b", Rarity.MYTHIC, mage.cards.b.BriselaVoiceOfNightmares.class));
|
||||
cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 6, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class));
|
||||
cards.add(new SetCardInfo("Chandra, Roaring Flame", 6, Rarity.MYTHIC, mage.cards.c.ChandraRoaringFlame.class));
|
||||
cards.add(new SetCardInfo("Delver of Secrets", 7, Rarity.MYTHIC, mage.cards.d.DelverOfSecrets.class));
|
||||
cards.add(new SetCardInfo("Insectile Aberration", 7, Rarity.MYTHIC, mage.cards.i.InsectileAberration.class));
|
||||
cards.add(new SetCardInfo("Elbrus, the Binding Blade", 8, Rarity.MYTHIC, mage.cards.e.ElbrusTheBindingBlade.class));
|
||||
|
|
|
|||
|
|
@ -153,7 +153,6 @@ public final class Innistrad extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Heretic's Punishment", 147, Rarity.RARE, mage.cards.h.HereticsPunishment.class));
|
||||
cards.add(new SetCardInfo("Hinterland Harbor", 241, Rarity.RARE, mage.cards.h.HinterlandHarbor.class));
|
||||
cards.add(new SetCardInfo("Hollowhenge Scavenger", 188, Rarity.UNCOMMON, mage.cards.h.HollowhengeScavenger.class));
|
||||
cards.add(new SetCardInfo("Homicidal Brute", 47, Rarity.UNCOMMON, mage.cards.h.HomicidalBrute.class));
|
||||
cards.add(new SetCardInfo("Howlpack Alpha", 193, Rarity.RARE, mage.cards.h.HowlpackAlpha.class));
|
||||
cards.add(new SetCardInfo("Howlpack of Estwald", 209, Rarity.COMMON, mage.cards.h.HowlpackOfEstwald.class));
|
||||
cards.add(new SetCardInfo("Hysterical Blindness", 59, Rarity.COMMON, mage.cards.h.HystericalBlindness.class));
|
||||
|
|
@ -299,7 +298,6 @@ public final class Innistrad extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Unbreathing Horde", 121, Rarity.RARE, mage.cards.u.UnbreathingHorde.class));
|
||||
cards.add(new SetCardInfo("Unburial Rites", 122, Rarity.UNCOMMON, mage.cards.u.UnburialRites.class));
|
||||
cards.add(new SetCardInfo("Undead Alchemist", 84, Rarity.RARE, mage.cards.u.UndeadAlchemist.class));
|
||||
cards.add(new SetCardInfo("Unholy Fiend", 8, Rarity.UNCOMMON, mage.cards.u.UnholyFiend.class));
|
||||
cards.add(new SetCardInfo("Unruly Mob", 39, Rarity.COMMON, mage.cards.u.UnrulyMob.class));
|
||||
cards.add(new SetCardInfo("Urgent Exorcism", 40, Rarity.COMMON, mage.cards.u.UrgentExorcism.class));
|
||||
cards.add(new SetCardInfo("Vampire Interloper", 123, Rarity.COMMON, mage.cards.v.VampireInterloper.class));
|
||||
|
|
|
|||
|
|
@ -95,7 +95,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("By Invitation Only", 5, Rarity.RARE, mage.cards.b.ByInvitationOnly.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cackling Culprit", 28, Rarity.UNCOMMON, mage.cards.c.CacklingCulprit.class));
|
||||
cards.add(new SetCardInfo("Cartographer's Survey", 190, Rarity.UNCOMMON, mage.cards.c.CartographersSurvey.class));
|
||||
cards.add(new SetCardInfo("Catapult Captain", 99, Rarity.UNCOMMON, mage.cards.c.CatapultCaptain.class));
|
||||
cards.add(new SetCardInfo("Catapult Fodder", 99, Rarity.UNCOMMON, mage.cards.c.CatapultFodder.class));
|
||||
cards.add(new SetCardInfo("Catlike Curiosity", 69, Rarity.UNCOMMON, mage.cards.c.CatlikeCuriosity.class));
|
||||
cards.add(new SetCardInfo("Cemetery Desecrator", 100, Rarity.MYTHIC, mage.cards.c.CemeteryDesecrator.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -384,8 +383,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Restless Bloodseeker", 128, Rarity.UNCOMMON, mage.cards.r.RestlessBloodseeker.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Restless Bloodseeker", 295, Rarity.UNCOMMON, mage.cards.r.RestlessBloodseeker.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Retrieve", 215, Rarity.UNCOMMON, mage.cards.r.Retrieve.class));
|
||||
cards.add(new SetCardInfo("Revealing Eye", 101, Rarity.RARE, mage.cards.r.RevealingEye.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Revealing Eye", 367, Rarity.RARE, mage.cards.r.RevealingEye.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Riphook Raider", 203, Rarity.COMMON, mage.cards.r.RiphookRaider.class));
|
||||
cards.add(new SetCardInfo("Rot-Tide Gargantua", 129, Rarity.COMMON, mage.cards.r.RotTideGargantua.class));
|
||||
cards.add(new SetCardInfo("Runebound Wolf", 176, Rarity.UNCOMMON, mage.cards.r.RuneboundWolf.class));
|
||||
|
|
@ -395,7 +392,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Rural Recruit", 216, Rarity.COMMON, mage.cards.r.RuralRecruit.class));
|
||||
cards.add(new SetCardInfo("Sanctify", 33, Rarity.COMMON, mage.cards.s.Sanctify.class));
|
||||
cards.add(new SetCardInfo("Sanguine Statuette", 177, Rarity.UNCOMMON, mage.cards.s.SanguineStatuette.class));
|
||||
cards.add(new SetCardInfo("Savage Packmate", 234, Rarity.UNCOMMON, mage.cards.s.SavagePackmate.class));
|
||||
cards.add(new SetCardInfo("Savior of Ollenbock", 330, Rarity.MYTHIC, mage.cards.s.SaviorOfOllenbock.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Savior of Ollenbock", 34, Rarity.MYTHIC, mage.cards.s.SaviorOfOllenbock.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Savior of Ollenbock", 352, Rarity.MYTHIC, mage.cards.s.SaviorOfOllenbock.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Candlelit Cavalry", 175, Rarity.COMMON, mage.cards.c.CandlelitCavalry.class));
|
||||
cards.add(new SetCardInfo("Candletrap", 9, Rarity.COMMON, mage.cards.c.Candletrap.class));
|
||||
cards.add(new SetCardInfo("Cartographer's Survey", 457, Rarity.UNCOMMON, mage.cards.c.CartographersSurvey.class));
|
||||
cards.add(new SetCardInfo("Catapult Captain", 366, Rarity.UNCOMMON, mage.cards.c.CatapultCaptain.class));
|
||||
cards.add(new SetCardInfo("Catapult Fodder", 366, Rarity.UNCOMMON, mage.cards.c.CatapultFodder.class));
|
||||
cards.add(new SetCardInfo("Cathar Commando", 10, Rarity.COMMON, mage.cards.c.CatharCommando.class));
|
||||
cards.add(new SetCardInfo("Cathar's Call", 11, Rarity.UNCOMMON, mage.cards.c.CatharsCall.class));
|
||||
|
|
@ -123,7 +122,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Champion of the Perished", 91, Rarity.RARE, mage.cards.c.ChampionOfThePerished.class));
|
||||
cards.add(new SetCardInfo("Chandra, Dressed to Kill", 416, Rarity.MYTHIC, mage.cards.c.ChandraDressedToKill.class));
|
||||
cards.add(new SetCardInfo("Change of Fortune", 417, Rarity.RARE, mage.cards.c.ChangeOfFortune.class));
|
||||
cards.add(new SetCardInfo("Chapel Shieldgeist", 13, Rarity.UNCOMMON, mage.cards.c.ChapelShieldgeist.class));
|
||||
cards.add(new SetCardInfo("Chaplain of Alms", 13, Rarity.UNCOMMON, mage.cards.c.ChaplainOfAlms.class));
|
||||
cards.add(new SetCardInfo("Child of the Pack", 501, Rarity.UNCOMMON, mage.cards.c.ChildOfThePack.class));
|
||||
cards.add(new SetCardInfo("Chill of the Grave", 318, Rarity.COMMON, mage.cards.c.ChillOfTheGrave.class));
|
||||
|
|
@ -145,7 +143,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Courier Bat", 369, Rarity.COMMON, mage.cards.c.CourierBat.class));
|
||||
cards.add(new SetCardInfo("Covert Cutpurse", 92, Rarity.UNCOMMON, mage.cards.c.CovertCutpurse.class));
|
||||
cards.add(new SetCardInfo("Covetous Castaway", 45, Rarity.UNCOMMON, mage.cards.c.CovetousCastaway.class));
|
||||
cards.add(new SetCardInfo("Covetous Geist", 92, Rarity.UNCOMMON, mage.cards.c.CovetousGeist.class));
|
||||
cards.add(new SetCardInfo("Cradle of Safety", 321, Rarity.COMMON, mage.cards.c.CradleOfSafety.class));
|
||||
cards.add(new SetCardInfo("Crawl from the Cellar", 93, Rarity.COMMON, mage.cards.c.CrawlFromTheCellar.class));
|
||||
cards.add(new SetCardInfo("Crawling Infestation", 460, Rarity.UNCOMMON, mage.cards.c.CrawlingInfestation.class));
|
||||
|
|
@ -270,7 +267,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Geistwave", 56, Rarity.COMMON, mage.cards.g.Geistwave.class));
|
||||
cards.add(new SetCardInfo("Geralf, Visionary Stitcher", 328, Rarity.RARE, mage.cards.g.GeralfVisionaryStitcher.class));
|
||||
cards.add(new SetCardInfo("Ghastly Mimicry", 335, Rarity.RARE, mage.cards.g.GhastlyMimicry.class));
|
||||
cards.add(new SetCardInfo("Ghostly Castigator", 45, Rarity.UNCOMMON, mage.cards.g.GhostlyCastigator.class));
|
||||
cards.add(new SetCardInfo("Ghoulcaller's Harvest", 225, Rarity.RARE, mage.cards.g.GhoulcallersHarvest.class));
|
||||
cards.add(new SetCardInfo("Ghoulish Procession", 102, Rarity.UNCOMMON, mage.cards.g.GhoulishProcession.class));
|
||||
cards.add(new SetCardInfo("Gift of Fangs", 380, Rarity.COMMON, mage.cards.g.GiftOfFangs.class));
|
||||
|
|
@ -359,7 +355,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Lantern of the Lost", 526, Rarity.UNCOMMON, mage.cards.l.LanternOfTheLost.class));
|
||||
cards.add(new SetCardInfo("Lanterns' Lift", 333, Rarity.COMMON, mage.cards.l.LanternsLift.class));
|
||||
cards.add(new SetCardInfo("Larder Zombie", 58, Rarity.COMMON, mage.cards.l.LarderZombie.class));
|
||||
cards.add(new SetCardInfo("Leeching Lurker", 94, Rarity.RARE, mage.cards.l.LeechingLurker.class));
|
||||
cards.add(new SetCardInfo("Lier, Disciple of the Drowned", 59, Rarity.MYTHIC, mage.cards.l.LierDiscipleOfTheDrowned.class));
|
||||
cards.add(new SetCardInfo("Liesa, Forgotten Archangel", 232, Rarity.RARE, mage.cards.l.LiesaForgottenArchangel.class));
|
||||
cards.add(new SetCardInfo("Light Up the Night", 146, Rarity.RARE, mage.cards.l.LightUpTheNight.class));
|
||||
|
|
@ -467,7 +462,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Restless Bloodseeker", 395, Rarity.UNCOMMON, mage.cards.r.RestlessBloodseeker.class));
|
||||
cards.add(new SetCardInfo("Retrieve", 482, Rarity.UNCOMMON, mage.cards.r.Retrieve.class));
|
||||
cards.add(new SetCardInfo("Return to Nature", 195, Rarity.COMMON, mage.cards.r.ReturnToNature.class));
|
||||
cards.add(new SetCardInfo("Revealing Eye", 368, Rarity.RARE, mage.cards.r.RevealingEye.class));
|
||||
cards.add(new SetCardInfo("Revenge of the Drowned", 72, Rarity.COMMON, mage.cards.r.RevengeOfTheDrowned.class));
|
||||
cards.add(new SetCardInfo("Riphook Raider", 470, Rarity.COMMON, mage.cards.r.RiphookRaider.class));
|
||||
cards.add(new SetCardInfo("Rise of the Ants", 196, Rarity.UNCOMMON, mage.cards.r.RiseOfTheAnts.class));
|
||||
|
|
@ -486,7 +480,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Sanctify", 300, Rarity.COMMON, mage.cards.s.Sanctify.class));
|
||||
cards.add(new SetCardInfo("Sanguine Statuette", 444, Rarity.UNCOMMON, mage.cards.s.SanguineStatuette.class));
|
||||
cards.add(new SetCardInfo("Saryth, the Viper's Fang", 197, Rarity.RARE, mage.cards.s.SarythTheVipersFang.class));
|
||||
cards.add(new SetCardInfo("Savage Packmate", 501, Rarity.UNCOMMON, mage.cards.s.SavagePackmate.class));
|
||||
cards.add(new SetCardInfo("Savior of Ollenbock", 301, Rarity.MYTHIC, mage.cards.s.SaviorOfOllenbock.class));
|
||||
cards.add(new SetCardInfo("Sawblade Slinger", 484, Rarity.UNCOMMON, mage.cards.s.SawbladeSlinger.class));
|
||||
cards.add(new SetCardInfo("Scattered Thoughts", 341, Rarity.COMMON, mage.cards.s.ScatteredThoughts.class));
|
||||
|
|
|
|||
|
|
@ -104,7 +104,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Champion of the Perished", 344, Rarity.RARE, mage.cards.c.ChampionOfThePerished.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Champion of the Perished", 385, Rarity.RARE, mage.cards.c.ChampionOfThePerished.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Champion of the Perished", 91, Rarity.RARE, mage.cards.c.ChampionOfThePerished.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Chapel Shieldgeist", 13, Rarity.UNCOMMON, mage.cards.c.ChapelShieldgeist.class));
|
||||
cards.add(new SetCardInfo("Chaplain of Alms", 13, Rarity.UNCOMMON, mage.cards.c.ChaplainOfAlms.class));
|
||||
cards.add(new SetCardInfo("Chilling Chronicle", 63, Rarity.UNCOMMON, mage.cards.c.ChillingChronicle.class));
|
||||
cards.add(new SetCardInfo("Clarion Cathars", 14, Rarity.COMMON, mage.cards.c.ClarionCathars.class));
|
||||
|
|
@ -118,7 +117,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Corpse Cobble", 214, Rarity.UNCOMMON, mage.cards.c.CorpseCobble.class));
|
||||
cards.add(new SetCardInfo("Covert Cutpurse", 92, Rarity.UNCOMMON, mage.cards.c.CovertCutpurse.class));
|
||||
cards.add(new SetCardInfo("Covetous Castaway", 45, Rarity.UNCOMMON, mage.cards.c.CovetousCastaway.class));
|
||||
cards.add(new SetCardInfo("Covetous Geist", 92, Rarity.UNCOMMON, mage.cards.c.CovetousGeist.class));
|
||||
cards.add(new SetCardInfo("Crawl from the Cellar", 93, Rarity.COMMON, mage.cards.c.CrawlFromTheCellar.class));
|
||||
cards.add(new SetCardInfo("Creeping Inn", 264, Rarity.MYTHIC, mage.cards.c.CreepingInn.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Creeping Inn", 379, Rarity.MYTHIC, mage.cards.c.CreepingInn.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -212,7 +210,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Geistflame Reservoir", 142, Rarity.RARE, mage.cards.g.GeistflameReservoir.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Geistflame Reservoir", 355, Rarity.RARE, mage.cards.g.GeistflameReservoir.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Geistwave", 56, Rarity.COMMON, mage.cards.g.Geistwave.class));
|
||||
cards.add(new SetCardInfo("Ghostly Castigator", 45, Rarity.UNCOMMON, mage.cards.g.GhostlyCastigator.class));
|
||||
cards.add(new SetCardInfo("Ghoulcaller's Harvest", 225, Rarity.RARE, mage.cards.g.GhoulcallersHarvest.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ghoulcaller's Harvest", 372, Rarity.RARE, mage.cards.g.GhoulcallersHarvest.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ghoulish Procession", 102, Rarity.UNCOMMON, mage.cards.g.GhoulishProcession.class));
|
||||
|
|
@ -267,8 +264,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Kessig Naturalist", 310, Rarity.UNCOMMON, mage.cards.k.KessigNaturalist.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lambholt Harrier", 145, Rarity.COMMON, mage.cards.l.LambholtHarrier.class));
|
||||
cards.add(new SetCardInfo("Larder Zombie", 58, Rarity.COMMON, mage.cards.l.LarderZombie.class));
|
||||
cards.add(new SetCardInfo("Leeching Lurker", 345, Rarity.RARE, mage.cards.l.LeechingLurker.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Leeching Lurker", 94, Rarity.RARE, mage.cards.l.LeechingLurker.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lier, Disciple of the Drowned", 313, Rarity.MYTHIC, mage.cards.l.LierDiscipleOfTheDrowned.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lier, Disciple of the Drowned", 59, Rarity.MYTHIC, mage.cards.l.LierDiscipleOfTheDrowned.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Liesa, Forgotten Archangel", 232, Rarity.RARE, mage.cards.l.LiesaForgottenArchangel.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -54,8 +54,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Ashmouth Blade", 473, Rarity.UNCOMMON, mage.cards.a.AshmouthBlade.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Asylum Visitor", 371, Rarity.UNCOMMON, mage.cards.a.AsylumVisitor.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Asylum Visitor", 96, Rarity.UNCOMMON, mage.cards.a.AsylumVisitor.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Aurora of Emrakul", 260, Rarity.UNCOMMON, mage.cards.a.AuroraOfEmrakul.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Aurora of Emrakul", 472, Rarity.UNCOMMON, mage.cards.a.AuroraOfEmrakul.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Avacyn, Angel of Hope", 477, Rarity.MYTHIC, mage.cards.a.AvacynAngelOfHope.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Avacyn, Angel of Hope", 482, Rarity.MYTHIC, mage.cards.a.AvacynAngelOfHope.class, FULL_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Avacynian Priest", 12, Rarity.COMMON, mage.cards.a.AvacynianPriest.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -117,8 +115,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Cathars' Crusade", 17, Rarity.RARE, mage.cards.c.CatharsCrusade.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cathars' Crusade", 337, Rarity.RARE, mage.cards.c.CatharsCrusade.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cathars' Crusade", 483, Rarity.RARE, mage.cards.c.CatharsCrusade.class, FULL_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Chalice of Death", 257, Rarity.UNCOMMON, mage.cards.c.ChaliceOfDeath.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Chalice of Death", 471, Rarity.UNCOMMON, mage.cards.c.ChaliceOfDeath.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Chalice of Life", 257, Rarity.UNCOMMON, mage.cards.c.ChaliceOfLife.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Chalice of Life", 471, Rarity.UNCOMMON, mage.cards.c.ChaliceOfLife.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Chandra, Dressed to Kill", 148, Rarity.MYTHIC, mage.cards.c.ChandraDressedToKill.class));
|
||||
|
|
@ -133,7 +129,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Collective Brutality", 375, Rarity.RARE, mage.cards.c.CollectiveBrutality.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Collective Defiance", 149, Rarity.RARE, mage.cards.c.CollectiveDefiance.class));
|
||||
cards.add(new SetCardInfo("Compelling Deterrence", 57, Rarity.UNCOMMON, mage.cards.c.CompellingDeterrence.class));
|
||||
cards.add(new SetCardInfo("Conduit of Emrakul", 150, Rarity.COMMON, mage.cards.c.ConduitOfEmrakul.class));
|
||||
cards.add(new SetCardInfo("Conduit of Storms", 150, Rarity.COMMON, mage.cards.c.ConduitOfStorms.class));
|
||||
cards.add(new SetCardInfo("Conjurer's Closet", 259, Rarity.RARE, mage.cards.c.ConjurersCloset.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Conjurer's Closet", 321, Rarity.RARE, mage.cards.c.ConjurersCloset.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -232,8 +227,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Geistcatcher's Rig", 264, Rarity.UNCOMMON, mage.cards.g.GeistcatchersRig.class));
|
||||
cards.add(new SetCardInfo("Geistlight Snare", 356, Rarity.UNCOMMON, mage.cards.g.GeistlightSnare.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Geistlight Snare", 66, Rarity.UNCOMMON, mage.cards.g.GeistlightSnare.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ghostly Castigator", 456, Rarity.UNCOMMON, mage.cards.g.GhostlyCastigator.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ghostly Castigator", 58, Rarity.UNCOMMON, mage.cards.g.GhostlyCastigator.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ghoulish Procession", 110, Rarity.UNCOMMON, mage.cards.g.GhoulishProcession.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ghoulish Procession", 378, Rarity.UNCOMMON, mage.cards.g.GhoulishProcession.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ghoultree", 198, Rarity.UNCOMMON, mage.cards.g.Ghoultree.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -74,7 +74,6 @@ public final class Ixalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Cobbled Wings", 233, Rarity.COMMON, mage.cards.c.CobbledWings.class));
|
||||
cards.add(new SetCardInfo("Colossal Dreadmaw", 180, Rarity.COMMON, mage.cards.c.ColossalDreadmaw.class));
|
||||
cards.add(new SetCardInfo("Commune with Dinosaurs", 181, Rarity.COMMON, mage.cards.c.CommuneWithDinosaurs.class));
|
||||
cards.add(new SetCardInfo("Conqueror's Foothold", 234, Rarity.RARE, mage.cards.c.ConquerorsFoothold.class));
|
||||
cards.add(new SetCardInfo("Conqueror's Galleon", 234, Rarity.RARE, mage.cards.c.ConquerorsGalleon.class));
|
||||
cards.add(new SetCardInfo("Contract Killing", 95, Rarity.COMMON, mage.cards.c.ContractKilling.class));
|
||||
cards.add(new SetCardInfo("Costly Plunder", 96, Rarity.COMMON, mage.cards.c.CostlyPlunder.class));
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ public class IxalanPromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Captivating Crew", "137s", Rarity.RARE, mage.cards.c.CaptivatingCrew.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Carnage Tyrant", "179p", Rarity.MYTHIC, mage.cards.c.CarnageTyrant.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Carnage Tyrant", "179s", Rarity.MYTHIC, mage.cards.c.CarnageTyrant.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Conqueror's Foothold", "234s", Rarity.RARE, mage.cards.c.ConquerorsFoothold.class));
|
||||
cards.add(new SetCardInfo("Conqueror's Galleon", "234s", Rarity.RARE, mage.cards.c.ConquerorsGalleon.class));
|
||||
cards.add(new SetCardInfo("Daring Saboteur", "49s", Rarity.RARE, mage.cards.d.DaringSaboteur.class));
|
||||
cards.add(new SetCardInfo("Deadeye Tracker", "99p", Rarity.RARE, mage.cards.d.DeadeyeTracker.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -1526,7 +1526,6 @@ public class MagicOnlinePromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Leaf-Crowned Visionary", 103462, Rarity.RARE, mage.cards.l.LeafCrownedVisionary.class));
|
||||
cards.add(new SetCardInfo("Leatherback Baloth", 43576, Rarity.UNCOMMON, mage.cards.l.LeatherbackBaloth.class));
|
||||
cards.add(new SetCardInfo("Ledger Shredder", 99733, Rarity.RARE, mage.cards.l.LedgerShredder.class));
|
||||
cards.add(new SetCardInfo("Leeching Lurker", 93988, Rarity.RARE, mage.cards.l.LeechingLurker.class));
|
||||
cards.add(new SetCardInfo("Legion Angel", 83754, Rarity.RARE, mage.cards.l.LegionAngel.class));
|
||||
cards.add(new SetCardInfo("Legions to Ashes", 105784, Rarity.RARE, mage.cards.l.LegionsToAshes.class));
|
||||
cards.add(new SetCardInfo("Leinore, Autumn Sovereign", 94054, Rarity.MYTHIC, mage.cards.l.LeinoreAutumnSovereign.class));
|
||||
|
|
@ -2219,7 +2218,6 @@ public class MagicOnlinePromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Retaliator Griffin", 43546, Rarity.RARE, mage.cards.r.RetaliatorGriffin.class));
|
||||
cards.add(new SetCardInfo("Retriever Phoenix", 90094, Rarity.RARE, mage.cards.r.RetrieverPhoenix.class));
|
||||
cards.add(new SetCardInfo("Return to Dust", 86104, Rarity.UNCOMMON, mage.cards.r.ReturnToDust.class));
|
||||
cards.add(new SetCardInfo("Revealing Eye", 95351, Rarity.RARE, mage.cards.r.RevealingEye.class));
|
||||
cards.add(new SetCardInfo("Revenant", 32192, Rarity.RARE, mage.cards.r.Revenant.class, RETRO_ART));
|
||||
cards.add(new SetCardInfo("Reverse Engineer", 64995, Rarity.UNCOMMON, mage.cards.r.ReverseEngineer.class));
|
||||
cards.add(new SetCardInfo("Revival Experiment", 90220, Rarity.RARE, mage.cards.r.RevivalExperiment.class));
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ public final class MagicOrigins extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Caves of Koilos", 245, Rarity.RARE, mage.cards.c.CavesOfKoilos.class));
|
||||
cards.add(new SetCardInfo("Celestial Flare", 8, Rarity.COMMON, mage.cards.c.CelestialFlare.class));
|
||||
cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 135, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class));
|
||||
cards.add(new SetCardInfo("Chandra, Roaring Flame", 135, Rarity.MYTHIC, mage.cards.c.ChandraRoaringFlame.class));
|
||||
cards.add(new SetCardInfo("Chandra's Fury", 136, Rarity.COMMON, mage.cards.c.ChandrasFury.class));
|
||||
cards.add(new SetCardInfo("Chandra's Ignition", 137, Rarity.RARE, mage.cards.c.ChandrasIgnition.class));
|
||||
cards.add(new SetCardInfo("Charging Griffin", 9, Rarity.COMMON, mage.cards.c.ChargingGriffin.class));
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ public class MagicOriginsPromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Alhammarret, High Arbiter", "43s", Rarity.RARE, mage.cards.a.AlhammarretHighArbiter.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Chandra's Ignition", "137s", Rarity.RARE, mage.cards.c.ChandrasIgnition.class));
|
||||
cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", "135s", Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class));
|
||||
cards.add(new SetCardInfo("Chandra, Roaring Flame", "135s", Rarity.MYTHIC, mage.cards.c.ChandraRoaringFlame.class));
|
||||
cards.add(new SetCardInfo("Conclave Naturalists", 171, Rarity.UNCOMMON, mage.cards.c.ConclaveNaturalists.class));
|
||||
cards.add(new SetCardInfo("Dark Petition", "90s", Rarity.RARE, mage.cards.d.DarkPetition.class));
|
||||
cards.add(new SetCardInfo("Despoiler of Souls", "93s", Rarity.RARE, mage.cards.d.DespoilerOfSouls.class));
|
||||
|
|
|
|||
|
|
@ -103,7 +103,6 @@ public final class MarchOfTheMachine extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("City on Fire", 363, Rarity.RARE, mage.cards.c.CityOnFire.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Collective Nightmare", 95, Rarity.UNCOMMON, mage.cards.c.CollectiveNightmare.class));
|
||||
cards.add(new SetCardInfo("Coming In Hot", 136, Rarity.COMMON, mage.cards.c.ComingInHot.class));
|
||||
cards.add(new SetCardInfo("Compleated Conjurer", 49, Rarity.UNCOMMON, mage.cards.c.CompleatedConjurer.class));
|
||||
cards.add(new SetCardInfo("Compleated Huntmaster", 96, Rarity.UNCOMMON, mage.cards.c.CompleatedHuntmaster.class));
|
||||
cards.add(new SetCardInfo("Complete the Circuit", 351, Rarity.RARE, mage.cards.c.CompleteTheCircuit.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Complete the Circuit", 52, Rarity.RARE, mage.cards.c.CompleteTheCircuit.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ public class SanDiegoComicCon2015 extends ExpansionSet {
|
|||
this.hasBasicLands = false;
|
||||
|
||||
cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 135, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class));
|
||||
cards.add(new SetCardInfo("Chandra, Roaring Flame", 135, Rarity.MYTHIC, mage.cards.c.ChandraRoaringFlame.class));
|
||||
cards.add(new SetCardInfo("Gideon, Battle-Forged", 23, Rarity.MYTHIC, mage.cards.g.GideonBattleForged.class));
|
||||
cards.add(new SetCardInfo("Jace, Telepath Unbound", 60, Rarity.MYTHIC, mage.cards.j.JaceTelepathUnbound.class));
|
||||
cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 60, Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class));
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ public final class ShadowsOverInnistrad extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Bloodmad Vampire", 146, Rarity.COMMON, mage.cards.b.BloodmadVampire.class));
|
||||
cards.add(new SetCardInfo("Bound by Moonsilver", 7, Rarity.UNCOMMON, mage.cards.b.BoundByMoonsilver.class));
|
||||
cards.add(new SetCardInfo("Brain in a Jar", 252, Rarity.RARE, mage.cards.b.BrainInAJar.class));
|
||||
cards.add(new SetCardInfo("Branded Howler", 149, Rarity.COMMON, mage.cards.b.BrandedHowler.class));
|
||||
cards.add(new SetCardInfo("Breakneck Rider", 147, Rarity.UNCOMMON, mage.cards.b.BreakneckRider.class));
|
||||
cards.add(new SetCardInfo("Briarbridge Patrol", 195, Rarity.UNCOMMON, mage.cards.b.BriarbridgePatrol.class));
|
||||
cards.add(new SetCardInfo("Broken Concentration", 50, Rarity.UNCOMMON, mage.cards.b.BrokenConcentration.class));
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ public class ShadowsOverInnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Arlinn Kord", 230, Rarity.MYTHIC, mage.cards.a.ArlinnKord.class));
|
||||
cards.add(new SetCardInfo("Ashmouth Blade", 256, Rarity.UNCOMMON, mage.cards.a.AshmouthBlade.class));
|
||||
cards.add(new SetCardInfo("Assembled Alphas", 141, Rarity.RARE, mage.cards.a.AssembledAlphas.class));
|
||||
cards.add(new SetCardInfo("Aurora of Emrakul", 248, Rarity.UNCOMMON, mage.cards.a.AuroraOfEmrakul.class));
|
||||
cards.add(new SetCardInfo("Avacyn's Judgment", 142, Rarity.RARE, mage.cards.a.AvacynsJudgment.class));
|
||||
cards.add(new SetCardInfo("Awoken Horror", 95, Rarity.RARE, mage.cards.a.AwokenHorror.class));
|
||||
cards.add(new SetCardInfo("Bearer of Overwhelming Truths", 59, Rarity.UNCOMMON, mage.cards.b.BearerOfOverwhelmingTruths.class));
|
||||
|
|
@ -72,7 +71,6 @@ public class ShadowsOverInnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Collective Defiance", 148, Rarity.RARE, mage.cards.c.CollectiveDefiance.class));
|
||||
cards.add(new SetCardInfo("Collective Effort", 19, Rarity.RARE, mage.cards.c.CollectiveEffort.class));
|
||||
cards.add(new SetCardInfo("Compelling Deterrence", 55, Rarity.UNCOMMON, mage.cards.c.CompellingDeterrence.class));
|
||||
cards.add(new SetCardInfo("Conduit of Emrakul", 149, Rarity.COMMON, mage.cards.c.ConduitOfEmrakul.class));
|
||||
cards.add(new SetCardInfo("Conduit of Storms", 149, Rarity.COMMON, mage.cards.c.ConduitOfStorms.class));
|
||||
cards.add(new SetCardInfo("Confirm Suspicions", 56, Rarity.RARE, mage.cards.c.ConfirmSuspicions.class));
|
||||
cards.add(new SetCardInfo("Confront the Unknown", 190, Rarity.COMMON, mage.cards.c.ConfrontTheUnknown.class));
|
||||
|
|
|
|||
|
|
@ -130,7 +130,6 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Cosmium Blast", 7, Rarity.COMMON, mage.cards.c.CosmiumBlast.class));
|
||||
cards.add(new SetCardInfo("Cosmium Confluence", 181, Rarity.RARE, mage.cards.c.CosmiumConfluence.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cosmium Confluence", 379, Rarity.RARE, mage.cards.c.CosmiumConfluence.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Cosmium Kiln", 6, Rarity.UNCOMMON, mage.cards.c.CosmiumKiln.class));
|
||||
cards.add(new SetCardInfo("Council of Echoes", 51, Rarity.UNCOMMON, mage.cards.c.CouncilOfEchoes.class));
|
||||
cards.add(new SetCardInfo("Curator of Sun's Creation", 141, Rarity.UNCOMMON, mage.cards.c.CuratorOfSunsCreation.class));
|
||||
cards.add(new SetCardInfo("Daring Discovery", 142, Rarity.COMMON, mage.cards.d.DaringDiscovery.class));
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ public final class Transformers extends ExpansionSet {
|
|||
|
||||
cards.add(new SetCardInfo("Arcee, Sharpshooter", 7, Rarity.MYTHIC, mage.cards.a.ArceeSharpshooter.class));
|
||||
cards.add(new SetCardInfo("Blitzwing, Cruel Tormentor", 4, Rarity.MYTHIC, mage.cards.b.BlitzwingCruelTormentor.class));
|
||||
cards.add(new SetCardInfo("Cyclonus, Cybertronian Fighter", 9, Rarity.MYTHIC, mage.cards.c.CyclonusCybertronianFighter.class));
|
||||
cards.add(new SetCardInfo("Cyclonus, the Saboteur", 9, Rarity.MYTHIC, mage.cards.c.CyclonusTheSaboteur.class));
|
||||
cards.add(new SetCardInfo("Flamewar, Brash Veteran", 10, Rarity.MYTHIC, mage.cards.f.FlamewarBrashVeteran.class));
|
||||
cards.add(new SetCardInfo("Flamewar, Streetwise Operative", 10, Rarity.MYTHIC, mage.cards.f.FlamewarStreetwiseOperative.class));
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ public class XLNTreasureChest extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Adanto, the First Fort", 22, Rarity.RARE, mage.cards.a.AdantoTheFirstFort.class));
|
||||
cards.add(new SetCardInfo("Arguel's Blood Fast", 90, Rarity.RARE, mage.cards.a.ArguelsBloodFast.class));
|
||||
cards.add(new SetCardInfo("Azcanta, the Sunken Ruin", 74, Rarity.RARE, mage.cards.a.AzcantaTheSunkenRuin.class));
|
||||
cards.add(new SetCardInfo("Conqueror's Foothold", 234, Rarity.RARE, mage.cards.c.ConquerorsFoothold.class));
|
||||
cards.add(new SetCardInfo("Conqueror's Galleon", 234, Rarity.RARE, mage.cards.c.ConquerorsGalleon.class));
|
||||
cards.add(new SetCardInfo("Dowsing Dagger", 235, Rarity.RARE, mage.cards.d.DowsingDagger.class));
|
||||
cards.add(new SetCardInfo("Growing Rites of Itlimoc", 191, Rarity.RARE, mage.cards.g.GrowingRitesOfItlimoc.class));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue