mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 10:40:06 -08:00
refactor a few more cards to test some more possible situations
This commit is contained in:
parent
cb9f608fad
commit
0f25453898
11 changed files with 208 additions and 177 deletions
|
|
@ -1,11 +1,10 @@
|
||||||
package mage.cards.b;
|
package mage.cards.b;
|
||||||
|
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
|
||||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
|
import mage.cards.i.InvasionOfBelenon;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -15,13 +14,9 @@ import java.util.UUID;
|
||||||
public final class BelenonWarAnthem extends CardImpl {
|
public final class BelenonWarAnthem extends CardImpl {
|
||||||
|
|
||||||
public BelenonWarAnthem(UUID ownerId, CardSetInfo setInfo) {
|
public BelenonWarAnthem(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "");
|
super(ownerId, setInfo, new CardType[]{}, "");
|
||||||
|
|
||||||
this.color.setWhite(true);
|
|
||||||
this.nightCard = true;
|
this.nightCard = true;
|
||||||
|
TransformingDoubleFacedCard.copyToBackFace(new InvasionOfBelenon(ownerId, setInfo), this);
|
||||||
// Creatures you control get +1/+1.
|
|
||||||
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private BelenonWarAnthem(final BelenonWarAnthem card) {
|
private BelenonWarAnthem(final BelenonWarAnthem card) {
|
||||||
|
|
|
||||||
|
|
@ -3,19 +3,29 @@ package mage.cards.g;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.LoyaltyAbility;
|
import mage.abilities.LoyaltyAbility;
|
||||||
import mage.abilities.StateTriggeredAbility;
|
import mage.abilities.StateTriggeredAbility;
|
||||||
|
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||||
|
import mage.abilities.dynamicvalue.DynamicValue;
|
||||||
|
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
|
import mage.abilities.effects.common.DoIfCostPaid;
|
||||||
import mage.abilities.effects.common.TransformSourceEffect;
|
import mage.abilities.effects.common.TransformSourceEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
|
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
||||||
|
import mage.abilities.keyword.TrampleAbility;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.game.permanent.token.WolfToken;
|
import mage.game.permanent.token.WolfToken;
|
||||||
|
import mage.game.permanent.token.WolfTokenWithDeathtouch;
|
||||||
|
import mage.target.common.TargetCardInLibrary;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -23,29 +33,57 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author nantuko
|
* @author nantuko
|
||||||
*/
|
*/
|
||||||
public final class GarrukRelentless extends CardImpl {
|
public final class GarrukRelentless extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
|
private static final DynamicValue xValue = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE);
|
||||||
|
|
||||||
public GarrukRelentless(UUID ownerId, CardSetInfo setInfo) {
|
public GarrukRelentless(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{G}");
|
super(
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
ownerId, setInfo,
|
||||||
this.subtype.add(SubType.GARRUK);
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.PLANESWALKER}, new SubType[]{SubType.GARRUK}, "{3}{G}",
|
||||||
|
"Garruk, the Veil-Cursed",
|
||||||
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.PLANESWALKER}, new SubType[]{SubType.GARRUK}, "BG"
|
||||||
|
);
|
||||||
|
this.getLeftHalfCard().setStartingLoyalty(3);
|
||||||
|
|
||||||
this.secondSideCardClazz = mage.cards.g.GarrukTheVeilCursed.class;
|
this.secondSideCardClazz = mage.cards.g.GarrukTheVeilCursed.class;
|
||||||
|
|
||||||
this.setStartingLoyalty(3);
|
|
||||||
|
|
||||||
// When Garruk Relentless has two or fewer loyalty counters on him, transform him.
|
// When Garruk Relentless has two or fewer loyalty counters on him, transform him.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new GarrukRelentlessStateTrigger());
|
||||||
this.addAbility(new GarrukRelentlessStateTrigger());
|
|
||||||
|
|
||||||
// 0: Garruk Relentless deals 3 damage to target creature. That creature deals damage equal to its power to him
|
// 0: Garruk Relentless deals 3 damage to target creature. That creature deals damage equal to its power to him
|
||||||
Ability ability = new LoyaltyAbility(new DamageTargetEffect(3), 0);
|
Ability ability = new LoyaltyAbility(new DamageTargetEffect(3), 0);
|
||||||
ability.addEffect(new GarrukRelentlessDamageEffect());
|
ability.addEffect(new GarrukRelentlessDamageEffect());
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.getLeftHalfCard().addAbility(ability);
|
||||||
|
|
||||||
// 0: Create a 2/2 green Wolf creature token.
|
// 0: Create a 2/2 green Wolf creature token.
|
||||||
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new WolfToken()), 0));
|
this.getLeftHalfCard().addAbility(new LoyaltyAbility(new CreateTokenEffect(new WolfToken()), 0));
|
||||||
|
|
||||||
|
// Garruk, the Veil-Cursed
|
||||||
|
// +1 : Create a 1/1 black Wolf creature token with deathtouch.
|
||||||
|
this.getRightHalfCard().addAbility(new LoyaltyAbility(new CreateTokenEffect(new WolfTokenWithDeathtouch()), 1));
|
||||||
|
|
||||||
|
// -1 : Sacrifice a creature. If you do, search your library for a creature card, reveal it, put it into your hand, then shuffle your library.
|
||||||
|
this.getRightHalfCard().addAbility(new LoyaltyAbility(new DoIfCostPaid(
|
||||||
|
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(
|
||||||
|
StaticFilters.FILTER_CARD_CREATURE_A
|
||||||
|
), true),
|
||||||
|
null,
|
||||||
|
new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE),
|
||||||
|
false
|
||||||
|
), -1));
|
||||||
|
|
||||||
|
// -3 : Creatures you control gain trample and get +X/+X until end of turn, where X is the number of creature cards in your graveyard.
|
||||||
|
ability = new LoyaltyAbility(new GainAbilityControlledEffect(
|
||||||
|
TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURE
|
||||||
|
).setText("creatures you control gain trample"), -3);
|
||||||
|
ability.addEffect(new BoostControlledEffect(
|
||||||
|
xValue, xValue, Duration.EndOfTurn
|
||||||
|
).setText("and get +X/+X until end of turn, where X is the number of creature cards in your graveyard"));
|
||||||
|
this.getRightHalfCard().addAbility(ability);
|
||||||
|
|
||||||
|
this.finalizeDFC();
|
||||||
}
|
}
|
||||||
|
|
||||||
private GarrukRelentless(final GarrukRelentless card) {
|
private GarrukRelentless(final GarrukRelentless card) {
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,9 @@
|
||||||
package mage.cards.g;
|
package mage.cards.g;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.LoyaltyAbility;
|
|
||||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
|
||||||
import mage.abilities.dynamicvalue.DynamicValue;
|
|
||||||
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
|
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
|
||||||
import mage.abilities.effects.common.DoIfCostPaid;
|
|
||||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
|
||||||
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
|
||||||
import mage.abilities.keyword.TrampleAbility;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.SuperType;
|
|
||||||
import mage.filter.StaticFilters;
|
|
||||||
import mage.game.permanent.token.WolfTokenWithDeathtouch;
|
|
||||||
import mage.target.common.TargetCardInLibrary;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -28,40 +12,10 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class GarrukTheVeilCursed extends CardImpl {
|
public final class GarrukTheVeilCursed extends CardImpl {
|
||||||
|
|
||||||
private static final DynamicValue xValue = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE);
|
|
||||||
|
|
||||||
public GarrukTheVeilCursed(UUID ownerId, CardSetInfo setInfo) {
|
public GarrukTheVeilCursed(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
|
super(ownerId, setInfo, new CardType[]{}, "");
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
|
||||||
this.subtype.add(SubType.GARRUK);
|
|
||||||
|
|
||||||
// this card is the second face of double-faced card
|
|
||||||
this.nightCard = true;
|
this.nightCard = true;
|
||||||
|
TransformingDoubleFacedCard.copyToBackFace(new GarrukRelentless(ownerId, setInfo), this);
|
||||||
this.color.setGreen(true);
|
|
||||||
this.color.setBlack(true);
|
|
||||||
|
|
||||||
// +1 : Create a 1/1 black Wolf creature token with deathtouch.
|
|
||||||
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new WolfTokenWithDeathtouch()), 1));
|
|
||||||
|
|
||||||
// -1 : Sacrifice a creature. If you do, search your library for a creature card, reveal it, put it into your hand, then shuffle your library.
|
|
||||||
this.addAbility(new LoyaltyAbility(new DoIfCostPaid(
|
|
||||||
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(
|
|
||||||
StaticFilters.FILTER_CARD_CREATURE_A
|
|
||||||
), true),
|
|
||||||
null,
|
|
||||||
new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE),
|
|
||||||
false
|
|
||||||
), -1));
|
|
||||||
|
|
||||||
// -3 : Creatures you control gain trample and get +X/+X until end of turn, where X is the number of creature cards in your graveyard.
|
|
||||||
Ability ability = new LoyaltyAbility(new GainAbilityControlledEffect(
|
|
||||||
TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURE
|
|
||||||
).setText("creatures you control gain trample"), -3);
|
|
||||||
ability.addEffect(new BoostControlledEffect(
|
|
||||||
xValue, xValue, Duration.EndOfTurn
|
|
||||||
).setText("and get +X/+X until end of turn, where X is the number of creature cards in your graveyard"));
|
|
||||||
this.addAbility(ability);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private GarrukTheVeilCursed(final GarrukTheVeilCursed card) {
|
private GarrukTheVeilCursed(final GarrukTheVeilCursed card) {
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,13 @@ package mage.cards.i;
|
||||||
|
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.SiegeAbility;
|
import mage.abilities.common.SiegeAbility;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.game.permanent.token.KnightWhiteBlueToken;
|
import mage.game.permanent.token.KnightWhiteBlueToken;
|
||||||
|
|
||||||
|
|
@ -14,20 +17,30 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class InvasionOfBelenon extends CardImpl {
|
public final class InvasionOfBelenon extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public InvasionOfBelenon(UUID ownerId, CardSetInfo setInfo) {
|
public InvasionOfBelenon(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.BATTLE}, "{2}{W}");
|
super(
|
||||||
|
ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.BATTLE}, new SubType[]{SubType.SIEGE}, "{2}{W}",
|
||||||
|
"Belenon War Anthem",
|
||||||
|
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{}, "W"
|
||||||
|
);
|
||||||
|
this.getLeftHalfCard().setStartingDefense(5);
|
||||||
|
|
||||||
this.subtype.add(SubType.SIEGE);
|
|
||||||
this.setStartingDefense(5);
|
|
||||||
this.secondSideCardClazz = mage.cards.b.BelenonWarAnthem.class;
|
this.secondSideCardClazz = mage.cards.b.BelenonWarAnthem.class;
|
||||||
|
|
||||||
// (As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)
|
// (As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)
|
||||||
this.addAbility(new SiegeAbility());
|
this.getLeftHalfCard().addAbility(new SiegeAbility());
|
||||||
|
|
||||||
// When Invasion of Belenon enters the battlefield, create a 2/2 white and blue Knight creature token with vigilance.
|
// When Invasion of Belenon enters the battlefield, create a 2/2 white and blue Knight creature token with vigilance.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new KnightWhiteBlueToken())));
|
this.getLeftHalfCard().addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new KnightWhiteBlueToken())));
|
||||||
|
|
||||||
|
// Belenon War Anthem
|
||||||
|
// Creatures you control get +1/+1.
|
||||||
|
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield)));
|
||||||
|
|
||||||
|
this.finalizeDFC();
|
||||||
}
|
}
|
||||||
|
|
||||||
private InvasionOfBelenon(final InvasionOfBelenon card) {
|
private InvasionOfBelenon(final InvasionOfBelenon card) {
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,10 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.SiegeAbility;
|
import mage.abilities.common.SiegeAbility;
|
||||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
import mage.abilities.effects.common.GainLifeEffect;
|
import mage.abilities.effects.common.GainLifeEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
|
import mage.abilities.keyword.VigilanceAbility;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
|
||||||
|
|
@ -15,22 +17,36 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
public final class InvasionOfDominaria extends CardImpl {
|
public final class InvasionOfDominaria extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public InvasionOfDominaria(UUID ownerId, CardSetInfo setInfo) {
|
public InvasionOfDominaria(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.BATTLE}, "{2}{W}");
|
super(
|
||||||
|
ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.BATTLE}, new SubType[]{SubType.SIEGE}, "{2}{W}",
|
||||||
|
"Serra Faithkeeper",
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ANGEL}, "W"
|
||||||
|
);
|
||||||
|
this.getLeftHalfCard().setStartingDefense(5);
|
||||||
|
this.getRightHalfCard().setPT(4, 4);
|
||||||
|
|
||||||
this.subtype.add(SubType.SIEGE);
|
|
||||||
this.setStartingDefense(5);
|
|
||||||
this.secondSideCardClazz = mage.cards.s.SerraFaithkeeper.class;
|
this.secondSideCardClazz = mage.cards.s.SerraFaithkeeper.class;
|
||||||
|
|
||||||
// (As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)
|
// (As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)
|
||||||
this.addAbility(new SiegeAbility());
|
this.getLeftHalfCard().addAbility(new SiegeAbility());
|
||||||
|
|
||||||
// When Invasion of Dominaria enters the battlefield, you gain 4 life and draw a card.
|
// When Invasion of Dominaria enters the battlefield, you gain 4 life and draw a card.
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(new GainLifeEffect(4));
|
Ability ability = new EntersBattlefieldTriggeredAbility(new GainLifeEffect(4));
|
||||||
ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and"));
|
ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and"));
|
||||||
this.addAbility(ability);
|
this.getLeftHalfCard().addAbility(ability);
|
||||||
|
|
||||||
|
// Serra Faithkeeper
|
||||||
|
// Flying
|
||||||
|
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
|
// Vigilance
|
||||||
|
this.getRightHalfCard().addAbility(VigilanceAbility.getInstance());
|
||||||
|
|
||||||
|
this.finalizeDFC();
|
||||||
}
|
}
|
||||||
|
|
||||||
private InvasionOfDominaria(final InvasionOfDominaria card) {
|
private InvasionOfDominaria(final InvasionOfDominaria card) {
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,9 @@
|
||||||
package mage.cards.j;
|
package mage.cards.j;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.LoyaltyAbility;
|
|
||||||
import mage.abilities.effects.common.GetEmblemEffect;
|
|
||||||
import mage.abilities.effects.common.MayCastTargetCardEffect;
|
|
||||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.SuperType;
|
|
||||||
import mage.filter.StaticFilters;
|
|
||||||
import mage.game.command.emblems.JaceTelepathUnboundEmblem;
|
|
||||||
import mage.target.common.TargetCardInYourGraveyard;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -24,29 +13,9 @@ import java.util.UUID;
|
||||||
public final class JaceTelepathUnbound extends CardImpl {
|
public final class JaceTelepathUnbound extends CardImpl {
|
||||||
|
|
||||||
public JaceTelepathUnbound(UUID ownerId, CardSetInfo setInfo) {
|
public JaceTelepathUnbound(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
|
super(ownerId, setInfo, new CardType[]{}, "");
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
|
||||||
this.subtype.add(SubType.JACE);
|
|
||||||
|
|
||||||
this.color.setBlue(true);
|
|
||||||
this.nightCard = true;
|
this.nightCard = true;
|
||||||
|
TransformingDoubleFacedCard.copyToBackFace(new JaceVrynsProdigy(ownerId, setInfo), this);
|
||||||
this.setStartingLoyalty(5);
|
|
||||||
|
|
||||||
// +1: Up to one target creature gets -2/-0 until your next turn.
|
|
||||||
Ability ability = new LoyaltyAbility(new BoostTargetEffect(
|
|
||||||
-2, 0, Duration.UntilYourNextTurn
|
|
||||||
).setText("Up to one target creature gets -2/-0 until your next turn"), 1);
|
|
||||||
ability.addTarget(new TargetCreaturePermanent(0, 1));
|
|
||||||
this.addAbility(ability);
|
|
||||||
|
|
||||||
// -3: You may cast target instant or sorcery card from your graveyard this turn. If that card would be put into your graveyard this turn, exile it instead.
|
|
||||||
ability = new LoyaltyAbility(new MayCastTargetCardEffect(Duration.EndOfTurn, true), -3);
|
|
||||||
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY_FROM_YOUR_GRAVEYARD));
|
|
||||||
this.addAbility(ability);
|
|
||||||
|
|
||||||
// −9: You get an emblem with "Whenever you cast a spell, target opponent mills five cards."
|
|
||||||
this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new JaceTelepathUnboundEmblem()), -9));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private JaceTelepathUnbound(final JaceTelepathUnbound card) {
|
private JaceTelepathUnbound(final JaceTelepathUnbound card) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package mage.cards.j;
|
package mage.cards.j;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.LoyaltyAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
import mage.abilities.condition.common.CardsInControllerGraveyardCondition;
|
import mage.abilities.condition.common.CardsInControllerGraveyardCondition;
|
||||||
|
|
@ -9,39 +9,64 @@ import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||||
import mage.abilities.effects.common.DrawDiscardControllerEffect;
|
import mage.abilities.effects.common.DrawDiscardControllerEffect;
|
||||||
import mage.abilities.effects.common.ExileAndReturnSourceEffect;
|
import mage.abilities.effects.common.ExileAndReturnSourceEffect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.effects.common.GetEmblemEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.abilities.effects.common.MayCastTargetCardEffect;
|
||||||
|
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
|
import mage.game.command.emblems.JaceTelepathUnboundEmblem;
|
||||||
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class JaceVrynsProdigy extends CardImpl {
|
public final class JaceVrynsProdigy extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
private static final Condition condition = new CardsInControllerGraveyardCondition(5);
|
private static final Condition condition = new CardsInControllerGraveyardCondition(5);
|
||||||
|
|
||||||
public JaceVrynsProdigy(UUID ownerId, CardSetInfo setInfo) {
|
public JaceVrynsProdigy(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
|
super(
|
||||||
this.supertype.add(SuperType.LEGENDARY);
|
ownerId, setInfo,
|
||||||
this.subtype.add(SubType.HUMAN);
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WIZARD}, "{1}{U}",
|
||||||
this.subtype.add(SubType.WIZARD);
|
"Jace, Telepath Unbound",
|
||||||
this.power = new MageInt(0);
|
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.PLANESWALKER}, new SubType[]{SubType.JACE}, "U"
|
||||||
this.toughness = new MageInt(2);
|
);
|
||||||
|
this.getLeftHalfCard().setPT(0, 2);
|
||||||
|
this.getRightHalfCard().setStartingLoyalty(5);
|
||||||
|
|
||||||
this.secondSideCardClazz = mage.cards.j.JaceTelepathUnbound.class;
|
this.secondSideCardClazz = mage.cards.j.JaceTelepathUnbound.class;
|
||||||
|
|
||||||
// {T}: Draw a card, then discard a card. If there are five or more cards in your graveyard, exile Jace, Vryn's Prodigy, then return him to the battefield transformed under his owner's control.
|
// {T}: Draw a card, then discard a card. If there are five or more cards in your graveyard, exile Jace, Vryn's Prodigy, then return him to the battefield transformed under his owner's control.
|
||||||
this.addAbility(new TransformAbility());
|
|
||||||
Ability ability = new SimpleActivatedAbility(
|
Ability ability = new SimpleActivatedAbility(
|
||||||
new DrawDiscardControllerEffect(1, 1), new TapSourceCost()
|
new DrawDiscardControllerEffect(1, 1), new TapSourceCost()
|
||||||
);
|
);
|
||||||
ability.addEffect(new ConditionalOneShotEffect(
|
ability.addEffect(new ConditionalOneShotEffect(
|
||||||
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED, Pronoun.HE), condition
|
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED, Pronoun.HE), condition
|
||||||
));
|
));
|
||||||
this.addAbility(ability);
|
this.getLeftHalfCard().addAbility(ability);
|
||||||
|
|
||||||
|
// Jace, Telepath Unbound
|
||||||
|
// +1: Up to one target creature gets -2/-0 until your next turn.
|
||||||
|
ability = new LoyaltyAbility(new BoostTargetEffect(
|
||||||
|
-2, 0, Duration.UntilYourNextTurn
|
||||||
|
).setText("Up to one target creature gets -2/-0 until your next turn"), 1);
|
||||||
|
ability.addTarget(new TargetCreaturePermanent(0, 1));
|
||||||
|
this.getRightHalfCard().addAbility(ability);
|
||||||
|
|
||||||
|
// -3: You may cast target instant or sorcery card from your graveyard this turn. If that card would be put into your graveyard this turn, exile it instead.
|
||||||
|
ability = new LoyaltyAbility(new MayCastTargetCardEffect(Duration.EndOfTurn, true), -3);
|
||||||
|
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY_FROM_YOUR_GRAVEYARD));
|
||||||
|
this.getRightHalfCard().addAbility(ability);
|
||||||
|
|
||||||
|
// −9: You get an emblem with "Whenever you cast a spell, target opponent mills five cards."
|
||||||
|
this.getRightHalfCard().addAbility(new LoyaltyAbility(new GetEmblemEffect(new JaceTelepathUnboundEmblem()), -9));
|
||||||
|
|
||||||
|
this.finalizeDFC();
|
||||||
}
|
}
|
||||||
|
|
||||||
private JaceVrynsProdigy(final JaceVrynsProdigy card) {
|
private JaceVrynsProdigy(final JaceVrynsProdigy card) {
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,10 @@
|
||||||
package mage.cards.p;
|
package mage.cards.p;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
|
||||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
|
||||||
import mage.abilities.keyword.SkulkAbility;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
|
import mage.cards.s.StartledAwake;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -17,22 +14,9 @@ import java.util.UUID;
|
||||||
public final class PersistentNightmare extends CardImpl {
|
public final class PersistentNightmare extends CardImpl {
|
||||||
|
|
||||||
public PersistentNightmare(UUID ownerId, CardSetInfo setInfo) {
|
public PersistentNightmare(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
super(ownerId, setInfo, new CardType[]{}, "");
|
||||||
this.subtype.add(SubType.NIGHTMARE);
|
|
||||||
this.power = new MageInt(1);
|
|
||||||
this.toughness = new MageInt(1);
|
|
||||||
this.color.setBlue(true);
|
|
||||||
|
|
||||||
// this card is the second face of double-faced card
|
|
||||||
this.nightCard = true;
|
this.nightCard = true;
|
||||||
|
TransformingDoubleFacedCard.copyToBackFace(new StartledAwake(ownerId, setInfo), this);
|
||||||
// Skulk
|
|
||||||
this.addAbility(new SkulkAbility());
|
|
||||||
|
|
||||||
// When Persistent Nightmare deals combat damage to a player, return it to its owner's hand.
|
|
||||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
|
|
||||||
new ReturnToHandSourceEffect(), false
|
|
||||||
).setTriggerPhrase("When {this} deals combat damage to a player, "));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private PersistentNightmare(final PersistentNightmare card) {
|
private PersistentNightmare(final PersistentNightmare card) {
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import mage.MageInt;
|
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
|
||||||
import mage.abilities.keyword.VigilanceAbility;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
|
import mage.cards.i.InvasionOfDominaria;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -16,19 +14,9 @@ import java.util.UUID;
|
||||||
public final class SerraFaithkeeper extends CardImpl {
|
public final class SerraFaithkeeper extends CardImpl {
|
||||||
|
|
||||||
public SerraFaithkeeper(UUID ownerId, CardSetInfo setInfo) {
|
public SerraFaithkeeper(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
super(ownerId, setInfo, new CardType[]{}, "");
|
||||||
|
|
||||||
this.subtype.add(SubType.ANGEL);
|
|
||||||
this.power = new MageInt(4);
|
|
||||||
this.toughness = new MageInt(4);
|
|
||||||
this.color.setWhite(true);
|
|
||||||
this.nightCard = true;
|
this.nightCard = true;
|
||||||
|
TransformingDoubleFacedCard.copyToBackFace(new InvasionOfDominaria(ownerId, setInfo), this);
|
||||||
// Flying
|
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
|
||||||
|
|
||||||
// Vigilance
|
|
||||||
this.addAbility(VigilanceAbility.getInstance());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private SerraFaithkeeper(final SerraFaithkeeper card) {
|
private SerraFaithkeeper(final SerraFaithkeeper card) {
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,20 @@
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import mage.MageObject;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||||
|
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.MillCardsTargetEffect;
|
import mage.abilities.effects.common.MillCardsTargetEffect;
|
||||||
|
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||||
|
import mage.abilities.keyword.SkulkAbility;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.keyword.TransformAbility;
|
||||||
import mage.cards.Card;
|
import mage.cards.Card;
|
||||||
import mage.cards.CardImpl;
|
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.cards.TransformingDoubleFacedCard;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
|
@ -22,22 +25,38 @@ import java.util.UUID;
|
||||||
/**
|
/**
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class StartledAwake extends CardImpl {
|
public final class StartledAwake extends TransformingDoubleFacedCard {
|
||||||
|
|
||||||
public StartledAwake(UUID ownerId, CardSetInfo setInfo) {
|
public StartledAwake(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}{U}");
|
super(
|
||||||
|
ownerId, setInfo,
|
||||||
|
new CardType[]{CardType.SORCERY}, new SubType[]{}, "{2}{U}{U}",
|
||||||
|
"Persistent Nightmare",
|
||||||
|
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.NIGHTMARE}, "U"
|
||||||
|
);
|
||||||
|
this.getRightHalfCard().setPT(1, 1);
|
||||||
|
|
||||||
this.secondSideCardClazz = mage.cards.p.PersistentNightmare.class;
|
this.secondSideCardClazz = mage.cards.p.PersistentNightmare.class;
|
||||||
|
|
||||||
// Target opponent puts the top thirteen cards of their library into their graveyard.
|
// Target opponent puts the top thirteen cards of their library into their graveyard.
|
||||||
this.getSpellAbility().addTarget(new TargetOpponent());
|
this.getLeftHalfCard().getSpellAbility().addEffect(new MillCardsTargetEffect(13));
|
||||||
this.getSpellAbility().addEffect(new MillCardsTargetEffect(13));
|
this.getLeftHalfCard().getSpellAbility().addTarget(new TargetOpponent());
|
||||||
|
|
||||||
// {3}{U}{U}: Put Startled Awake from your graveyard onto the battlefield transformed. Activate this ability only any time you could cast a sorcery.
|
// {3}{U}{U}: Put Startled Awake from your graveyard onto the battlefield transformed. Activate this ability only any time you could cast a sorcery.
|
||||||
this.addAbility(new TransformAbility());
|
this.getLeftHalfCard().addAbility(new ActivateAsSorceryActivatedAbility(
|
||||||
this.addAbility(new ActivateAsSorceryActivatedAbility(
|
|
||||||
Zone.GRAVEYARD, new StartledAwakeReturnTransformedEffect(), new ManaCostsImpl<>("{3}{U}{U}")
|
Zone.GRAVEYARD, new StartledAwakeReturnTransformedEffect(), new ManaCostsImpl<>("{3}{U}{U}")
|
||||||
));
|
));
|
||||||
|
|
||||||
|
// Persistent Nightmare
|
||||||
|
// Skulk
|
||||||
|
this.getRightHalfCard().addAbility(new SkulkAbility());
|
||||||
|
|
||||||
|
// When Persistent Nightmare deals combat damage to a player, return it to its owner's hand.
|
||||||
|
this.getRightHalfCard().addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||||
|
new ReturnToHandSourceEffect(), false
|
||||||
|
).setTriggerPhrase("When {this} deals combat damage to a player, "));
|
||||||
|
|
||||||
|
this.finalizeDFC();
|
||||||
}
|
}
|
||||||
|
|
||||||
private StartledAwake(final StartledAwake card) {
|
private StartledAwake(final StartledAwake card) {
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,12 @@ package mage.cards;
|
||||||
|
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.keyword.TransformAbility;
|
import mage.abilities.keyword.TransformAbility;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.SuperType;
|
import mage.constants.SuperType;
|
||||||
|
import mage.target.Target;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -16,6 +18,7 @@ public abstract class TransformingDoubleFacedCard extends CardImpl {
|
||||||
|
|
||||||
protected TransformingDoubleFacedCardHalfImpl leftHalfCard; // main card in all zone
|
protected TransformingDoubleFacedCardHalfImpl leftHalfCard; // main card in all zone
|
||||||
protected TransformingDoubleFacedCardHalfImpl rightHalfCard; // second side card, can be only in stack and battlefield zones
|
protected TransformingDoubleFacedCardHalfImpl rightHalfCard; // second side card, can be only in stack and battlefield zones
|
||||||
|
private boolean finalized = false;
|
||||||
|
|
||||||
public TransformingDoubleFacedCard(
|
public TransformingDoubleFacedCard(
|
||||||
UUID ownerId, CardSetInfo setInfo,
|
UUID ownerId, CardSetInfo setInfo,
|
||||||
|
|
@ -57,6 +60,10 @@ public abstract class TransformingDoubleFacedCard extends CardImpl {
|
||||||
super(card);
|
super(card);
|
||||||
this.leftHalfCard = card.leftHalfCard.copy();
|
this.leftHalfCard = card.leftHalfCard.copy();
|
||||||
this.rightHalfCard = card.rightHalfCard.copy();
|
this.rightHalfCard = card.rightHalfCard.copy();
|
||||||
|
if (!card.finalized) {
|
||||||
|
throw new IllegalStateException("Error, finalizeDFC needs to be called");
|
||||||
|
}
|
||||||
|
this.finalized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Card getLeftHalfCard() {
|
public Card getLeftHalfCard() {
|
||||||
|
|
@ -72,11 +79,24 @@ public abstract class TransformingDoubleFacedCard extends CardImpl {
|
||||||
this.getCardType().addAll(this.getLeftHalfCard().getCardType());
|
this.getCardType().addAll(this.getLeftHalfCard().getCardType());
|
||||||
this.getSubtype().addAll(this.getLeftHalfCard().getSubtype());
|
this.getSubtype().addAll(this.getLeftHalfCard().getSubtype());
|
||||||
for (Ability ability : this.getLeftHalfCard().getAbilities()) {
|
for (Ability ability : this.getLeftHalfCard().getAbilities()) {
|
||||||
|
if (!ability.equals(this.getLeftHalfCard().getSpellAbility())) {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (!this.getAbilities().containsClass(TransformAbility.class)) {
|
||||||
this.addAbility(new TransformAbility());
|
this.addAbility(new TransformAbility());
|
||||||
|
}
|
||||||
|
for (Effect effect : this.getLeftHalfCard().getSpellAbility().getEffects()) {
|
||||||
|
this.getSpellAbility().addEffect(effect);
|
||||||
|
}
|
||||||
|
for (Target target : this.getLeftHalfCard().getSpellAbility().getTargets()) {
|
||||||
|
this.getSpellAbility().addTarget(target);
|
||||||
|
}
|
||||||
this.power = this.getLeftHalfCard().getPower().copy();
|
this.power = this.getLeftHalfCard().getPower().copy();
|
||||||
this.toughness = this.getLeftHalfCard().getToughness().copy();
|
this.toughness = this.getLeftHalfCard().getToughness().copy();
|
||||||
|
this.startingLoyalty = this.getLeftHalfCard().getStartingLoyalty();
|
||||||
|
this.startingDefense = this.getLeftHalfCard().getStartingDefense();
|
||||||
|
this.finalized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void copyToBackFace(TransformingDoubleFacedCard tdfc, Card card) {
|
public static void copyToBackFace(TransformingDoubleFacedCard tdfc, Card card) {
|
||||||
|
|
@ -85,8 +105,18 @@ public abstract class TransformingDoubleFacedCard extends CardImpl {
|
||||||
card.getCardType().addAll(tdfc.getRightHalfCard().getCardType());
|
card.getCardType().addAll(tdfc.getRightHalfCard().getCardType());
|
||||||
card.getSubtype().addAll(tdfc.getRightHalfCard().getSubtype());
|
card.getSubtype().addAll(tdfc.getRightHalfCard().getSubtype());
|
||||||
for (Ability ability : tdfc.getRightHalfCard().getAbilities()) {
|
for (Ability ability : tdfc.getRightHalfCard().getAbilities()) {
|
||||||
|
if (!ability.equals(tdfc.getRightHalfCard().getSpellAbility())) {
|
||||||
card.addAbility(ability);
|
card.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
for (Effect effect : tdfc.getRightHalfCard().getSpellAbility().getEffects()) {
|
||||||
|
card.getSpellAbility().addEffect(effect);
|
||||||
|
}
|
||||||
|
for (Target target : tdfc.getRightHalfCard().getSpellAbility().getTargets()) {
|
||||||
|
card.getSpellAbility().addTarget(target);
|
||||||
|
}
|
||||||
card.setPT(tdfc.getRightHalfCard().getPower().copy(), tdfc.getRightHalfCard().getToughness().copy());
|
card.setPT(tdfc.getRightHalfCard().getPower().copy(), tdfc.getRightHalfCard().getToughness().copy());
|
||||||
|
card.setStartingLoyalty(tdfc.getRightHalfCard().getStartingLoyalty());
|
||||||
|
card.setStartingDefense(tdfc.getRightHalfCard().getStartingDefense());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue