mirror of
https://github.com/magefree/mage.git
synced 2025-12-19 18:20:13 -08:00
convert transforming "G" cards to single class file
This commit is contained in:
parent
f550f077d0
commit
06f54e5df1
53 changed files with 571 additions and 1153 deletions
|
|
@ -1,48 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DiesSourceTriggeredAbility;
|
||||
import mage.abilities.effects.common.PutOnLibrarySourceEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ChaosTheEndless extends CardImpl {
|
||||
|
||||
public ChaosTheEndless(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.DEMON);
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
this.color.setBlack(true);
|
||||
this.color.setRed(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// When Chaos dies, put it on the bottom of its owner's library.
|
||||
this.addAbility(new DiesSourceTriggeredAbility(new PutOnLibrarySourceEffect(
|
||||
false, "put it on the bottom of its owner's library"
|
||||
), false));
|
||||
}
|
||||
|
||||
private ChaosTheEndless(final ChaosTheEndless card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChaosTheEndless copy() {
|
||||
return new ChaosTheEndless(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.SetBasePowerToughnessTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ChromeHostHulk extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterCreaturePermanent("other target creature");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
public ChromeHostHulk(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.PHYREXIAN);
|
||||
this.subtype.add(SubType.TROLL);
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
this.color.setBlue(true);
|
||||
this.color.setGreen(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Whenever Chrome Host Hulk attacks, up to one other target creature has base power and toughness 5/5 until end of turn.
|
||||
Ability ability = new AttacksTriggeredAbility(
|
||||
new SetBasePowerToughnessTargetEffect(5, 5, Duration.EndOfTurn)
|
||||
);
|
||||
ability.addTarget(new TargetPermanent(0, 1, filter));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private ChromeHostHulk(final ChromeHostHulk card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChromeHostHulk copy() {
|
||||
return new ChromeHostHulk(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +1,18 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.DiesSourceTriggeredAbility;
|
||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.PutOnLibrarySourceEffect;
|
||||
import mage.abilities.effects.keyword.SurveilEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
|
|
@ -22,29 +24,38 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GarlandKnightOfCornelia extends CardImpl {
|
||||
public final class GarlandKnightOfCornelia extends TransformingDoubleFacedCard {
|
||||
|
||||
public GarlandKnightOfCornelia(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}");
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.KNIGHT}, "{B}{R}",
|
||||
"Chaos, the Endless",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.DEMON}, "BR"
|
||||
);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.c.ChaosTheEndless.class;
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.KNIGHT);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(2);
|
||||
// Garland, Knight of Cornelia
|
||||
this.getLeftHalfCard().setPT(3, 2);
|
||||
|
||||
// Whenever you cast a noncreature spell, surveil 1.
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(
|
||||
this.getLeftHalfCard().addAbility(new SpellCastControllerTriggeredAbility(
|
||||
new SurveilEffect(1), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false
|
||||
));
|
||||
|
||||
// {3}{B}{B}{R}{R}: Return this card from your graveyard to the battlefield transformed. Activate only as a sorcery.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new ActivateAsSorceryActivatedAbility(
|
||||
this.getLeftHalfCard().addAbility(new ActivateAsSorceryActivatedAbility(
|
||||
Zone.GRAVEYARD, new GarlandKnightOfCorneliaEffect(), new ManaCostsImpl<>("{3}{B}{B}{R}{R}")
|
||||
));
|
||||
|
||||
// Chaos, the Endless
|
||||
this.getRightHalfCard().setPT(5, 5);
|
||||
|
||||
// Flying
|
||||
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// When Chaos dies, put it on the bottom of its owner's library.
|
||||
this.getRightHalfCard().addAbility(new DiesSourceTriggeredAbility(new PutOnLibrarySourceEffect(
|
||||
false, "put it on the bottom of its owner's library"
|
||||
), false));
|
||||
}
|
||||
|
||||
private GarlandKnightOfCornelia(final GarlandKnightOfCornelia card) {
|
||||
|
|
|
|||
|
|
@ -3,19 +3,29 @@ package mage.cards.g;
|
|||
import mage.abilities.Ability;
|
||||
import mage.abilities.LoyaltyAbility;
|
||||
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.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.effects.common.DoIfCostPaid;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
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.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.WolfToken;
|
||||
import mage.game.permanent.token.WolfTokenWithDeathtouch;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -23,29 +33,54 @@ import java.util.UUID;
|
|||
/**
|
||||
* @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) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{G}");
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.GARRUK);
|
||||
super(ownerId, setInfo,
|
||||
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.secondSideCardClazz = mage.cards.g.GarrukTheVeilCursed.class;
|
||||
|
||||
this.setStartingLoyalty(3);
|
||||
// Garruk Relentless
|
||||
this.getLeftHalfCard().setStartingLoyalty(3);
|
||||
|
||||
// When Garruk Relentless has two or fewer loyalty counters on him, transform him.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new GarrukRelentlessStateTrigger());
|
||||
this.getLeftHalfCard().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.addEffect(new GarrukRelentlessDamageEffect());
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// 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.
|
||||
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 backAbility = new LoyaltyAbility(new GainAbilityControlledEffect(
|
||||
TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURE
|
||||
).setText("creatures you control gain trample"), -3);
|
||||
backAbility.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(backAbility);
|
||||
}
|
||||
|
||||
private GarrukRelentless(final GarrukRelentless card) {
|
||||
|
|
@ -60,7 +95,7 @@ public final class GarrukRelentless extends CardImpl {
|
|||
|
||||
class GarrukRelentlessStateTrigger extends StateTriggeredAbility {
|
||||
|
||||
public GarrukRelentlessStateTrigger() {
|
||||
GarrukRelentlessStateTrigger() {
|
||||
super(Zone.BATTLEFIELD, new TransformSourceEffect());
|
||||
}
|
||||
|
||||
|
|
@ -109,5 +144,4 @@ class GarrukRelentlessDamageEffect extends OneShotEffect {
|
|||
public GarrukRelentlessDamageEffect copy() {
|
||||
return new GarrukRelentlessDamageEffect(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,75 +0,0 @@
|
|||
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.CardSetInfo;
|
||||
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;
|
||||
|
||||
/**
|
||||
* @author nantuko
|
||||
*/
|
||||
public final class GarrukTheVeilCursed extends CardImpl {
|
||||
|
||||
private static final DynamicValue xValue = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE);
|
||||
|
||||
public GarrukTheVeilCursed(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.GARRUK);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
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) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GarrukTheVeilCursed copy() {
|
||||
return new GarrukTheVeilCursed(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,32 +1,42 @@
|
|||
package mage.cards.g;
|
||||
|
||||
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.abilities.keyword.MenaceAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class GatstafArsonists extends CardImpl {
|
||||
public final class GatstafArsonists extends TransformingDoubleFacedCard {
|
||||
|
||||
public GatstafArsonists(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(4);
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{4}{R}",
|
||||
"Gatstaf Ravagers",
|
||||
new SuperType[]{}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "R"
|
||||
);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.g.GatstafRavagers.class;
|
||||
// Gatstaf Arsonists
|
||||
this.getLeftHalfCard().setPT(5, 4);
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Gatstaf Arsonists.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new WerewolfFrontTriggeredAbility());
|
||||
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||
|
||||
// Gatstaf Ravagers
|
||||
this.getRightHalfCard().setPT(6, 5);
|
||||
|
||||
// Menace
|
||||
this.getRightHalfCard().addAbility(new MenaceAbility());
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Ravagers.
|
||||
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private GatstafArsonists(final GatstafArsonists card) {
|
||||
|
|
|
|||
|
|
@ -1,43 +0,0 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.abilities.keyword.IntimidateAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author nantuko
|
||||
*/
|
||||
public final class GatstafHowler extends CardImpl {
|
||||
|
||||
public GatstafHowler(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.color.setGreen(true);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.addAbility(IntimidateAbility.getInstance());
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Howler.
|
||||
this.addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private GatstafHowler(final GatstafHowler card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GatstafHowler copy() {
|
||||
return new GatstafHowler(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class GatstafRavagers extends CardImpl {
|
||||
|
||||
public GatstafRavagers(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(6);
|
||||
this.toughness = new MageInt(5);
|
||||
|
||||
this.color.setRed(true);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Ravagers.
|
||||
this.addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private GatstafRavagers(final GatstafRavagers card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GatstafRavagers copy() {
|
||||
return new GatstafRavagers(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.IntimidateAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
|
|
@ -13,21 +13,29 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author nantuko
|
||||
*/
|
||||
public final class GatstafShepherd extends CardImpl {
|
||||
public final class GatstafShepherd extends TransformingDoubleFacedCard {
|
||||
|
||||
public GatstafShepherd(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{1}{G}",
|
||||
"Gatstaf Howler",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "G"
|
||||
);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.g.GatstafHowler.class;
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
// Gatstaf Shepherd
|
||||
this.getLeftHalfCard().setPT(2, 2);
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Gatstaf Shepherd.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new WerewolfFrontTriggeredAbility());
|
||||
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||
|
||||
// Gatstaf Howler
|
||||
this.getRightHalfCard().setPT(3, 3);
|
||||
|
||||
// Intimidate
|
||||
this.getRightHalfCard().addAbility(IntimidateAbility.getInstance());
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Howler.
|
||||
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private GatstafShepherd(final GatstafShepherd card) {
|
||||
|
|
|
|||
|
|
@ -1,37 +1,56 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class GeierReachBandit extends CardImpl {
|
||||
public final class GeierReachBandit extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterPermanent filter = new FilterCreaturePermanent(SubType.WEREWOLF, "a Werewolf");
|
||||
|
||||
public GeierReachBandit(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.ROGUE);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(2);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.ROGUE, SubType.WEREWOLF}, "{2}{R}",
|
||||
"Vildin-Pack Alpha",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "R"
|
||||
);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.v.VildinPackAlpha.class;
|
||||
// Geier Reach Bandit
|
||||
this.getLeftHalfCard().setPT(3, 2);
|
||||
|
||||
// Haste
|
||||
this.addAbility(HasteAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(HasteAbility.getInstance());
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Geier Reach Bandit.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new WerewolfFrontTriggeredAbility());
|
||||
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||
|
||||
// Vildin-Pack Alpha
|
||||
this.getRightHalfCard().setPT(4, 3);
|
||||
|
||||
// Whenever a Werewolf you control enters, you may transform it.
|
||||
this.getRightHalfCard().addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new VildinPackAlphaEffect(), filter,
|
||||
true, SetTargetPointer.PERMANENT
|
||||
));
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Vildin-Pack Alpha.
|
||||
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private GeierReachBandit(final GeierReachBandit card) {
|
||||
|
|
@ -42,4 +61,34 @@ public final class GeierReachBandit extends CardImpl {
|
|||
public GeierReachBandit copy() {
|
||||
return new GeierReachBandit(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class VildinPackAlphaEffect extends OneShotEffect {
|
||||
|
||||
VildinPackAlphaEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "you may transform it";
|
||||
}
|
||||
|
||||
private VildinPackAlphaEffect(final VildinPackAlphaEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VildinPackAlphaEffect copy() {
|
||||
return new VildinPackAlphaEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
Permanent werewolf = game.getPermanent(getTargetPointer().getFirst(game, source));
|
||||
if (werewolf != null) {
|
||||
werewolf.transform(source, game);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,33 +1,56 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.effects.common.continuous.SetBasePowerToughnessTargetEffect;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GnottvoldHermit extends CardImpl {
|
||||
public final class GnottvoldHermit extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterPermanent filter = new FilterCreaturePermanent("other target creature");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
public GnottvoldHermit(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.TROLL}, "{3}{G}",
|
||||
"Chrome Host Hulk",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.PHYREXIAN, SubType.TROLL}, "UG"
|
||||
);
|
||||
|
||||
this.subtype.add(SubType.TROLL);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
this.secondSideCardClazz = mage.cards.c.ChromeHostHulk.class;
|
||||
// Gnottvold Hermit
|
||||
this.getLeftHalfCard().setPT(4, 4);
|
||||
|
||||
// {5}{U/P}: Transform Gnottvold Hermit. Activate only as a sorcery.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new ActivateAsSorceryActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{5}{U/P}")));
|
||||
this.getLeftHalfCard().addAbility(new ActivateAsSorceryActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{5}{U/P}")));
|
||||
|
||||
// Chrome Host Hulk
|
||||
this.getRightHalfCard().setPT(5, 5);
|
||||
|
||||
// Whenever Chrome Host Hulk attacks, up to one other target creature has base power and toughness 5/5 until end of turn.
|
||||
Ability ability = new AttacksTriggeredAbility(
|
||||
new SetBasePowerToughnessTargetEffect(5, 5, Duration.EndOfTurn)
|
||||
);
|
||||
ability.addTarget(new TargetPermanent(0, 1, filter));
|
||||
this.getRightHalfCard().addAbility(ability);
|
||||
}
|
||||
|
||||
private GnottvoldHermit(final GnottvoldHermit card) {
|
||||
|
|
|
|||
|
|
@ -1,48 +0,0 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.mana.SimpleManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.permanent.token.GoldForgeGarrisonGolemToken;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class GoldForgeGarrison extends CardImpl {
|
||||
|
||||
public GoldForgeGarrison(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
// <i>(Transforms from Golden Guardian.)</i>
|
||||
|
||||
// {T}: Add two mana of any one color.
|
||||
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(2), new TapSourceCost()));
|
||||
|
||||
// {4}, {T}: Create a 4/4 colorless Golem artifact creature token.
|
||||
Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(new GoldForgeGarrisonGolemToken(), 1), new GenericManaCost(4));
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.addAbility(ability);
|
||||
|
||||
}
|
||||
|
||||
private GoldForgeGarrison(final GoldForgeGarrison card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GoldForgeGarrison copy() {
|
||||
return new GoldForgeGarrison(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,55 +1,76 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.common.CastSecondSpellTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.CantBeCounteredControlledEffect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.PreventAllDamageToAllEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.LivingMetalAbility;
|
||||
import mage.abilities.keyword.MoreThanMeetsTheEyeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.FilterSpell;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AttackingPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GoldbugHumanitysAlly extends CardImpl {
|
||||
public final class GoldbugHumanitysAlly extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterPermanent filter
|
||||
= new FilterControlledCreaturePermanent(SubType.HUMAN, "attacking Humans you control");
|
||||
|
||||
private static final FilterSpell humanSpellFilter = new FilterSpell("Human spells");
|
||||
|
||||
static {
|
||||
filter.add(AttackingPredicate.instance);
|
||||
humanSpellFilter.add(SubType.HUMAN.getPredicate());
|
||||
}
|
||||
|
||||
public GoldbugHumanitysAlly(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{W}{U}");
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, new SubType[]{SubType.ROBOT}, "{1}{W}{U}",
|
||||
"Goldbug, Scrappy Scout",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ARTIFACT}, new SubType[]{SubType.VEHICLE}, "WU"
|
||||
);
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.ROBOT);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.g.GoldbugScrappyScout.class;
|
||||
// Goldbug, Humanity's Ally
|
||||
this.getLeftHalfCard().setPT(3, 3);
|
||||
|
||||
// More Than Meets the Eye {W}{U}
|
||||
this.addAbility(new MoreThanMeetsTheEyeAbility(this, "{W}{U}"));
|
||||
this.getLeftHalfCard().addAbility(new MoreThanMeetsTheEyeAbility(this, "{W}{U}"));
|
||||
|
||||
// Prevent all combat damage that would be dealt to attacking Humans you control.
|
||||
this.addAbility(new SimpleStaticAbility(new PreventAllDamageToAllEffect(
|
||||
this.getLeftHalfCard().addAbility(new SimpleStaticAbility(new PreventAllDamageToAllEffect(
|
||||
Duration.WhileOnBattlefield, filter, true
|
||||
)));
|
||||
|
||||
// Whenever you cast your second spell each turn, convert Goldbug.
|
||||
this.addAbility(new CastSecondSpellTriggeredAbility(new TransformSourceEffect().setText("convert {this}")));
|
||||
this.getLeftHalfCard().addAbility(new CastSecondSpellTriggeredAbility(new TransformSourceEffect().setText("convert {this}")));
|
||||
|
||||
// Goldbug, Scrappy Scout
|
||||
this.getRightHalfCard().setPT(1, 3);
|
||||
|
||||
// Living metal
|
||||
this.getRightHalfCard().addAbility(new LivingMetalAbility());
|
||||
|
||||
// Human spells you control can't be countered.
|
||||
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new CantBeCounteredControlledEffect(
|
||||
humanSpellFilter, Duration.WhileOnBattlefield
|
||||
)));
|
||||
|
||||
// Whenever Goldbug and at least one Human attack, draw a card and convert Goldbug.
|
||||
this.getRightHalfCard().addAbility(new GoldbugScrappyScoutTriggeredAbility());
|
||||
}
|
||||
|
||||
private GoldbugHumanitysAlly(final GoldbugHumanitysAlly card) {
|
||||
|
|
@ -61,3 +82,45 @@ public final class GoldbugHumanitysAlly extends CardImpl {
|
|||
return new GoldbugHumanitysAlly(this);
|
||||
}
|
||||
}
|
||||
|
||||
class GoldbugScrappyScoutTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
||||
GoldbugScrappyScoutTriggeredAbility() {
|
||||
super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1));
|
||||
this.addEffect(new TransformSourceEffect());
|
||||
}
|
||||
|
||||
private GoldbugScrappyScoutTriggeredAbility(final GoldbugScrappyScoutTriggeredAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GoldbugScrappyScoutTriggeredAbility copy() {
|
||||
return new GoldbugScrappyScoutTriggeredAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.DECLARED_ATTACKERS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
return game
|
||||
.getCombat()
|
||||
.getAttackers()
|
||||
.contains(getSourceId())
|
||||
&& game
|
||||
.getCombat()
|
||||
.getAttackers()
|
||||
.stream()
|
||||
.map(game::getPermanent)
|
||||
.filter(Objects::nonNull)
|
||||
.anyMatch(permanent -> permanent.hasSubtype(SubType.HUMAN, game));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever {this} and at least one Human attack, draw a card and convert {this}.";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,104 +0,0 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.CantBeCounteredControlledEffect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.LivingMetalAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterSpell;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GoldbugScrappyScout extends CardImpl {
|
||||
|
||||
private static final FilterSpell filter = new FilterSpell("Human spells");
|
||||
|
||||
static {
|
||||
filter.add(SubType.HUMAN.getPredicate());
|
||||
}
|
||||
|
||||
public GoldbugScrappyScout(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(1);
|
||||
this.toughness = new MageInt(3);
|
||||
this.color.setWhite(true);
|
||||
this.color.setBlue(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Living metal
|
||||
this.addAbility(new LivingMetalAbility());
|
||||
|
||||
// Human spells you control can't be countered.
|
||||
this.addAbility(new SimpleStaticAbility(new CantBeCounteredControlledEffect(
|
||||
filter, Duration.WhileOnBattlefield
|
||||
)));
|
||||
|
||||
// Whenever Goldbug and at least one Human attack, draw a card and convert Goldbug.
|
||||
this.addAbility(new GoldbugScrappyScoutTriggeredAbility());
|
||||
}
|
||||
|
||||
private GoldbugScrappyScout(final GoldbugScrappyScout card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GoldbugScrappyScout copy() {
|
||||
return new GoldbugScrappyScout(this);
|
||||
}
|
||||
}
|
||||
|
||||
class GoldbugScrappyScoutTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
||||
GoldbugScrappyScoutTriggeredAbility() {
|
||||
super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1));
|
||||
this.addEffect(new TransformSourceEffect());
|
||||
}
|
||||
|
||||
private GoldbugScrappyScoutTriggeredAbility(final GoldbugScrappyScoutTriggeredAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GoldbugScrappyScoutTriggeredAbility copy() {
|
||||
return new GoldbugScrappyScoutTriggeredAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.DECLARED_ATTACKERS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
return game
|
||||
.getCombat()
|
||||
.getAttackers()
|
||||
.contains(getSourceId())
|
||||
&& game
|
||||
.getCombat()
|
||||
.getAttackers()
|
||||
.stream()
|
||||
.map(game::getPermanent)
|
||||
.filter(Objects::nonNull)
|
||||
.anyMatch(permanent -> permanent.hasSubtype(SubType.HUMAN, game));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever {this} and at least one Human attack, draw a card and convert {this}.";
|
||||
}
|
||||
}
|
||||
|
|
@ -1,23 +1,27 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.DelayedTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.FightTargetSourceEffect;
|
||||
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
|
||||
import mage.abilities.keyword.DefenderAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.abilities.mana.SimpleManaAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.ZoneChangeEvent;
|
||||
import mage.game.permanent.token.GoldForgeGarrisonGolemToken;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
|
|
@ -26,26 +30,35 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class GoldenGuardian extends CardImpl {
|
||||
public final class GoldenGuardian extends TransformingDoubleFacedCard {
|
||||
|
||||
public GoldenGuardian(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, new SubType[]{SubType.GOLEM}, "{4}",
|
||||
"Gold-Forge Garrison",
|
||||
new CardType[]{CardType.LAND}, new SubType[]{}, ""
|
||||
);
|
||||
|
||||
this.subtype.add(SubType.GOLEM);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.g.GoldForgeGarrison.class;
|
||||
// Golden Guardian
|
||||
this.getLeftHalfCard().setPT(4, 4);
|
||||
|
||||
// Defender
|
||||
this.addAbility(DefenderAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(DefenderAbility.getInstance());
|
||||
|
||||
// {2}: Golden Guardian fights another target creature you control. When Golden Guardian dies this turn, return it to the battlefield transformed under your control.
|
||||
this.addAbility(new TransformAbility());
|
||||
Ability ability = new SimpleActivatedAbility(new FightTargetSourceEffect(), new GenericManaCost(2));
|
||||
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE_YOU_CONTROL));
|
||||
ability.addEffect(new CreateDelayedTriggeredAbilityEffect(new GoldenGuardianDelayedTriggeredAbility(), false));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Gold-Forge Garrison
|
||||
// {T}: Add two mana of any one color.
|
||||
this.getRightHalfCard().addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(2), new TapSourceCost()));
|
||||
|
||||
// {4}, {T}: Create a 4/4 colorless Golem artifact creature token.
|
||||
Ability backAbility = new SimpleActivatedAbility(new CreateTokenEffect(new GoldForgeGarrisonGolemToken(), 1), new GenericManaCost(4));
|
||||
backAbility.addCost(new TapSourceCost());
|
||||
this.getRightHalfCard().addAbility(backAbility);
|
||||
}
|
||||
|
||||
private GoldenGuardian(final GoldenGuardian card) {
|
||||
|
|
@ -60,7 +73,7 @@ public final class GoldenGuardian extends CardImpl {
|
|||
|
||||
class GoldenGuardianDelayedTriggeredAbility extends DelayedTriggeredAbility {
|
||||
|
||||
public GoldenGuardianDelayedTriggeredAbility() {
|
||||
GoldenGuardianDelayedTriggeredAbility() {
|
||||
super(new GoldenGuardianReturnTransformedEffect(), Duration.EndOfTurn);
|
||||
setTriggerPhrase("When {this} dies this turn, ");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,18 +2,26 @@ package mage.cards.g;
|
|||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksAloneControlledTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.SourceHasCounterCondition;
|
||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.counters.CounterType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -21,14 +29,18 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GraspingShadows extends CardImpl {
|
||||
public final class GraspingShadows extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final Condition condition = new SourceHasCounterCondition(CounterType.DREAD, 3);
|
||||
|
||||
public GraspingShadows(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
|
||||
this.secondSideCardClazz = mage.cards.s.ShadowsLair.class;
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{}, new CardType[]{CardType.ENCHANTMENT}, new SubType[]{}, "{3}{B}",
|
||||
"Shadows' Lair",
|
||||
new SuperType[]{}, new CardType[]{CardType.LAND}, new SubType[]{SubType.CAVE}, ""
|
||||
);
|
||||
|
||||
// Grasping Shadows
|
||||
// Whenever a creature you control attacks alone, it gains deathtouch and lifelink until end of turn. Put a dread counter on Grasping Shadows. Then if there are three or more dread counters on it, transform it.
|
||||
Ability ability = new AttacksAloneControlledTriggeredAbility(
|
||||
new GainAbilityTargetEffect(DeathtouchAbility.getInstance())
|
||||
|
|
@ -42,8 +54,20 @@ public final class GraspingShadows extends CardImpl {
|
|||
new TransformSourceEffect(), condition,
|
||||
"Then if there are three or more dread counters on it, transform it"
|
||||
));
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Shadows' Lair
|
||||
// {T}: Add {B}.
|
||||
this.getRightHalfCard().addAbility(new BlackManaAbility());
|
||||
|
||||
// {B}, {T}, Remove a dread counter from Shadows' Lair: You draw a card and you lose 1 life.
|
||||
Ability backAbility = new SimpleActivatedAbility(
|
||||
new DrawCardSourceControllerEffect(1, true), new ManaCostsImpl<>("{B}")
|
||||
);
|
||||
backAbility.addCost(new TapSourceCost());
|
||||
backAbility.addCost(new RemoveCountersSourceCost(CounterType.DREAD.createInstance()));
|
||||
backAbility.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
|
||||
this.getRightHalfCard().addAbility(backAbility);
|
||||
}
|
||||
|
||||
private GraspingShadows(final GraspingShadows card) {
|
||||
|
|
|
|||
|
|
@ -1,99 +0,0 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility;
|
||||
import mage.abilities.costs.common.DiscardCardCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.abilities.keyword.WardAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.Cards;
|
||||
import mage.cards.CardsImpl;
|
||||
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.common.TargetCardInGraveyard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GraveyardGlutton extends CardImpl {
|
||||
|
||||
public GraveyardGlutton(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.setBlack(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Ward—Discard a card.
|
||||
this.addAbility(new WardAbility(new DiscardCardCost(), false));
|
||||
|
||||
// Whenever Graveyard Glutton enters the battlefield or attacks, exile up to two target cards from graveyards. For each creature card exiled this way, each opponent loses 1 life and you gain 1 life.
|
||||
Ability ability = new EntersBattlefieldOrAttacksSourceTriggeredAbility(new GraveyardGluttonEffect());
|
||||
ability.addTarget(new TargetCardInGraveyard(0, 2));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Nightbound
|
||||
this.addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private GraveyardGlutton(final GraveyardGlutton card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GraveyardGlutton copy() {
|
||||
return new GraveyardGlutton(this);
|
||||
}
|
||||
}
|
||||
|
||||
class GraveyardGluttonEffect extends OneShotEffect {
|
||||
|
||||
GraveyardGluttonEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "exile up to two target cards from graveyards. " +
|
||||
"For each creature card exiled this way, each opponent loses 1 life and you gain 1 life";
|
||||
}
|
||||
|
||||
private GraveyardGluttonEffect(final GraveyardGluttonEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GraveyardGluttonEffect copy() {
|
||||
return new GraveyardGluttonEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
Cards cards = new CardsImpl(getTargetPointer().getTargets(game, source));
|
||||
if (player == null || cards.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
player.moveCards(cards, Zone.EXILED, source, game);
|
||||
int amount = cards.count(StaticFilters.FILTER_CARD_CREATURE, game);
|
||||
if (amount < 1) {
|
||||
return true;
|
||||
}
|
||||
player.gainLife(amount, game, source);
|
||||
for (UUID opponentId : game.getOpponents(source.getControllerId())) {
|
||||
Player opponent = game.getPlayer(opponentId);
|
||||
if (opponent != null) {
|
||||
opponent.loseLife(amount, game, source, false);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility;
|
||||
import mage.abilities.costs.common.DiscardCardCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.keyword.DayboundAbility;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.abilities.keyword.WardAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.Cards;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
|
|
@ -25,27 +25,42 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GraveyardTrespasser extends CardImpl {
|
||||
public final class GraveyardTrespasser extends TransformingDoubleFacedCard {
|
||||
|
||||
public GraveyardTrespasser(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.WEREWOLF}, "{2}{B}",
|
||||
"Graveyard Glutton",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "B"
|
||||
);
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
this.secondSideCardClazz = mage.cards.g.GraveyardGlutton.class;
|
||||
// Graveyard Trespasser
|
||||
this.getLeftHalfCard().setPT(3, 3);
|
||||
|
||||
// Ward—Discard a card.
|
||||
this.addAbility(new WardAbility(new DiscardCardCost(), false));
|
||||
this.getLeftHalfCard().addAbility(new WardAbility(new DiscardCardCost(), false));
|
||||
|
||||
// Whenever Graveyard Trespasser enters the battlefield or attacks, exile up to one target card from a graveyard. If a creature card was exiled this way, each opponent loses 1 life and you gain 1 life.
|
||||
Ability ability = new EntersBattlefieldOrAttacksSourceTriggeredAbility(new GraveyardTrespasserEffect());
|
||||
ability.addTarget(new TargetCardInGraveyard(0, 1));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Daybound
|
||||
this.addAbility(new DayboundAbility());
|
||||
this.getLeftHalfCard().addAbility(new DayboundAbility());
|
||||
|
||||
// Graveyard Glutton
|
||||
this.getRightHalfCard().setPT(4, 4);
|
||||
|
||||
// Ward—Discard a card.
|
||||
this.getRightHalfCard().addAbility(new WardAbility(new DiscardCardCost(), false));
|
||||
|
||||
// Whenever Graveyard Glutton enters the battlefield or attacks, exile up to two target cards from graveyards. For each creature card exiled this way, each opponent loses 1 life and you gain 1 life.
|
||||
Ability backAbility = new EntersBattlefieldOrAttacksSourceTriggeredAbility(new GraveyardGluttonEffect());
|
||||
backAbility.addTarget(new TargetCardInGraveyard(0, 2));
|
||||
this.getRightHalfCard().addAbility(backAbility);
|
||||
|
||||
// Nightbound
|
||||
this.getRightHalfCard().addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private GraveyardTrespasser(final GraveyardTrespasser card) {
|
||||
|
|
@ -98,3 +113,43 @@ class GraveyardTrespasserEffect extends OneShotEffect {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class GraveyardGluttonEffect extends OneShotEffect {
|
||||
|
||||
GraveyardGluttonEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "exile up to two target cards from graveyards. " +
|
||||
"For each creature card exiled this way, each opponent loses 1 life and you gain 1 life";
|
||||
}
|
||||
|
||||
private GraveyardGluttonEffect(final GraveyardGluttonEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GraveyardGluttonEffect copy() {
|
||||
return new GraveyardGluttonEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
Cards cards = new CardsImpl(getTargetPointer().getTargets(game, source));
|
||||
if (player == null || cards.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
player.moveCards(cards, Zone.EXILED, source, game);
|
||||
int amount = cards.count(StaticFilters.FILTER_CARD_CREATURE, game);
|
||||
if (amount < 1) {
|
||||
return true;
|
||||
}
|
||||
player.gainLife(amount, game, source);
|
||||
for (UUID opponentId : game.getOpponents(source.getControllerId())) {
|
||||
Player opponent = game.getPlayer(opponentId);
|
||||
if (opponent != null) {
|
||||
opponent.loseLife(amount, game, source, false);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,61 +1,71 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
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 mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.AbilityPredicate;
|
||||
import mage.filter.predicate.permanent.TransformedPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Saga
|
||||
*/
|
||||
public final class GrimlockDinobotLeader extends CardImpl{
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dinosaurs and Vehicles");
|
||||
public final class GrimlockDinobotLeader extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dinosaurs and Vehicles you control");
|
||||
static {
|
||||
filter.add(Predicates.or(SubType.DINOSAUR.getPredicate(), SubType.VEHICLE.getPredicate()));
|
||||
filter.add(Predicates.<MageObject>or(
|
||||
SubType.DINOSAUR.getPredicate(),
|
||||
SubType.VEHICLE.getPredicate())
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Transformers creatures");
|
||||
static {
|
||||
filter2.add(Predicates.not(SubType.DINOSAUR.getPredicate()));
|
||||
filter2.add(Predicates.not(SubType.VEHICLE.getPredicate()));
|
||||
filter2.add(Predicates.or(new AbilityPredicate(TransformAbility.class), TransformedPredicate.instance));
|
||||
}
|
||||
|
||||
public GrimlockDinobotLeader(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT,CardType.CREATURE}, "{1}{R}{G}{W}");
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.AUTOBOT);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.g.GrimlockFerociousKing.class;
|
||||
public GrimlockDinobotLeader(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, new SubType[]{SubType.AUTOBOT}, "{1}{R}{G}{W}",
|
||||
"Grimlock, Ferocious King",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, new SubType[]{SubType.DINOSAUR}, "RGW"
|
||||
);
|
||||
|
||||
// Grimlock, Dinobot Leader
|
||||
this.getLeftHalfCard().setPT(4, 4);
|
||||
|
||||
// Dinosaurs, Vehicles and other Transformers creatures you control get +2/+0.
|
||||
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(2, 0, Duration.WhileOnBattlefield, filter, false)));
|
||||
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(2, 0, Duration.WhileOnBattlefield, filter2, true)));
|
||||
|
||||
this.getLeftHalfCard().addAbility(new SimpleStaticAbility(new BoostControlledEffect(2, 0, Duration.WhileOnBattlefield, filter, false)));
|
||||
this.getLeftHalfCard().addAbility(new SimpleStaticAbility(new BoostControlledEffect(2, 0, Duration.WhileOnBattlefield, filter2, true)));
|
||||
|
||||
// {2}: Grimlock, Dinobot Leader becomes Grimlock, Ferocious King.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new SimpleActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{2}")));
|
||||
this.getLeftHalfCard().addAbility(new SimpleActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{2}")));
|
||||
|
||||
// Grimlock, Ferocious King
|
||||
this.getRightHalfCard().setPT(8, 8);
|
||||
|
||||
// Trample
|
||||
this.getRightHalfCard().addAbility(TrampleAbility.getInstance());
|
||||
|
||||
// {2}: Grimlock, Ferocious King becomes Grimlock, Dinobot Leader.
|
||||
this.getRightHalfCard().addAbility(new SimpleActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{2}")));
|
||||
}
|
||||
|
||||
private GrimlockDinobotLeader(final GrimlockDinobotLeader card) {
|
||||
|
|
@ -66,5 +76,4 @@ public final class GrimlockDinobotLeader extends CardImpl{
|
|||
public GrimlockDinobotLeader copy() {
|
||||
return new GrimlockDinobotLeader(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,53 +0,0 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Saga
|
||||
*/
|
||||
public final class GrimlockFerociousKing extends CardImpl{
|
||||
|
||||
public GrimlockFerociousKing(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"");
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.DINOSAUR);
|
||||
this.power = new MageInt(8);
|
||||
this.toughness = new MageInt(8);
|
||||
this.color.setRed(true);
|
||||
this.color.setGreen(true);
|
||||
this.color.setWhite(true);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
// Trample
|
||||
this.addAbility(TrampleAbility.getInstance());
|
||||
|
||||
// {2}: Grimlock, Ferocious King becomes Grimlock, Dinobot Leader.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new SimpleActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{2}")));
|
||||
}
|
||||
|
||||
private GrimlockFerociousKing(final GrimlockFerociousKing card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GrimlockFerociousKing copy() {
|
||||
return new GrimlockFerociousKing(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.combat.AttacksIfAbleAllEffect;
|
||||
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 fireshoes
|
||||
*/
|
||||
public final class GrislyAnglerfish extends CardImpl {
|
||||
|
||||
public GrislyAnglerfish(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
this.subtype.add(SubType.ELDRAZI);
|
||||
this.subtype.add(SubType.FISH);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(5);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
// {6}: Creatures your opponents control attack this turn if able.
|
||||
this.addAbility(new SimpleActivatedAbility(new AttacksIfAbleAllEffect(
|
||||
StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES, Duration.EndOfTurn
|
||||
), new ManaCostsImpl<>("{6}")));
|
||||
}
|
||||
|
||||
private GrislyAnglerfish(final GrislyAnglerfish card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GrislyAnglerfish copy() {
|
||||
return new GrislyAnglerfish(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +1,22 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.CardsInControllerGraveyardCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.MillCardsControllerEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.effects.common.combat.AttacksIfAbleAllEffect;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.filter.predicate.mageobject.ColorlessPredicate;
|
||||
|
||||
|
|
@ -23,7 +25,7 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class GrizzledAngler extends CardImpl {
|
||||
public final class GrizzledAngler extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterCard filter = new FilterCreatureCard();
|
||||
|
||||
|
|
@ -34,21 +36,30 @@ public final class GrizzledAngler extends CardImpl {
|
|||
private static final Condition condition = new CardsInControllerGraveyardCondition(1, filter);
|
||||
|
||||
public GrizzledAngler(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN}, "{2}{U}",
|
||||
"Grisly Anglerfish",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ELDRAZI, SubType.FISH}, ""
|
||||
);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.g.GrislyAnglerfish.class;
|
||||
// Grizzled Angler
|
||||
this.getLeftHalfCard().setPT(2, 3);
|
||||
|
||||
// {T}: Put the top two cards of your library into your graveyard. Then if there is a colorless creature card in your graveyard, transform Grizzled Angler.
|
||||
this.addAbility(new TransformAbility());
|
||||
Ability ability = new SimpleActivatedAbility(new MillCardsControllerEffect(2), new TapSourceCost());
|
||||
ability.addEffect(new ConditionalOneShotEffect(
|
||||
new TransformSourceEffect(), condition,
|
||||
"Then if there is a colorless creature card in your graveyard, transform {this}"
|
||||
));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Grisly Anglerfish
|
||||
this.getRightHalfCard().setPT(4, 5);
|
||||
|
||||
// {6}: Creatures your opponents control attack this turn if able.
|
||||
this.getRightHalfCard().addAbility(new SimpleActivatedAbility(new AttacksIfAbleAllEffect(
|
||||
StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES, Duration.EndOfTurn
|
||||
), new ManaCostsImpl<>("{6}")));
|
||||
}
|
||||
|
||||
private GrizzledAngler(final GrizzledAngler card) {
|
||||
|
|
|
|||
|
|
@ -1,33 +1,38 @@
|
|||
package mage.cards.g;
|
||||
|
||||
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 mage.constants.SuperType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author nantuko
|
||||
*/
|
||||
public final class GrizzledOutcasts extends CardImpl {
|
||||
public final class GrizzledOutcasts extends TransformingDoubleFacedCard {
|
||||
|
||||
public GrizzledOutcasts(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{4}{G}",
|
||||
"Krallenhorde Wantons",
|
||||
new SuperType[]{}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "G"
|
||||
);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.k.KrallenhordeWantons.class;
|
||||
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
// Grizzled Outcasts
|
||||
this.getLeftHalfCard().setPT(4, 4);
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Grizzled Outcasts.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new WerewolfFrontTriggeredAbility());
|
||||
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||
|
||||
// Krallenhorde Wantons
|
||||
this.getRightHalfCard().setPT(7, 7);
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Wantons.
|
||||
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private GrizzledOutcasts(final GrizzledOutcasts card) {
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.Mana;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.dynamicvalue.common.CreaturesYouControlCount;
|
||||
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.hint.common.CreaturesYouControlHint;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.abilities.mana.DynamicManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.PutCards;
|
||||
import mage.constants.SuperType;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author JRHerlehy
|
||||
*/
|
||||
public final class GrowingRitesOfItlimoc extends CardImpl {
|
||||
public final class GrowingRitesOfItlimoc extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
|
||||
new FilterControlledCreaturePermanent("you control four or more creatures"),
|
||||
|
|
@ -30,23 +30,30 @@ public final class GrowingRitesOfItlimoc extends CardImpl {
|
|||
);
|
||||
|
||||
public GrowingRitesOfItlimoc(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ENCHANTMENT}, new SubType[]{}, "{2}{G}",
|
||||
"Itlimoc, Cradle of the Sun",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.LAND}, new SubType[]{}, ""
|
||||
);
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.i.ItlimocCradleOfTheSun.class;
|
||||
|
||||
// When Growing Rites of Itlimoc enters the battlefield, look at the top four cards of your library.
|
||||
// You may reveal a creature card from among them and put it into your hand.
|
||||
// Put the rest on the bottom of your library in any order.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new LookLibraryAndPickControllerEffect(
|
||||
// Growing Rites of Itlimoc
|
||||
// When Growing Rites of Itlimoc enters the battlefield, look at the top four cards of your library. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order.
|
||||
this.getLeftHalfCard().addAbility(new EntersBattlefieldTriggeredAbility(new LookLibraryAndPickControllerEffect(
|
||||
4, 1, StaticFilters.FILTER_CARD_CREATURE_A, PutCards.HAND, PutCards.BOTTOM_ANY
|
||||
)));
|
||||
|
||||
// At the beginning of your end step, if you control four or more creatures, transform Growing Rites of Itlimoc.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(new TransformSourceEffect())
|
||||
this.getLeftHalfCard().addAbility(new BeginningOfEndStepTriggeredAbility(new TransformSourceEffect())
|
||||
.withInterveningIf(condition).addHint(CreaturesYouControlHint.instance));
|
||||
|
||||
// Itlimoc, Cradle of the Sun
|
||||
// {T}: Add {G}.
|
||||
this.getRightHalfCard().addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {G} for each creature you control.
|
||||
this.getRightHalfCard().addAbility(new DynamicManaAbility(
|
||||
Mana.GreenMana(1), CreaturesYouControlCount.SINGULAR
|
||||
).addHint(CreaturesYouControlHint.instance));
|
||||
}
|
||||
|
||||
private GrowingRitesOfItlimoc(final GrowingRitesOfItlimoc card) {
|
||||
|
|
|
|||
|
|
@ -1,71 +0,0 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.decorator.ConditionalRestrictionEffect;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GutterShortcut extends CardImpl {
|
||||
|
||||
public GutterShortcut(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "");
|
||||
|
||||
this.subtype.add(SubType.AURA);
|
||||
this.color.setBlue(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Enchant creature
|
||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||
this.addAbility(new EnchantAbility(auraTarget));
|
||||
|
||||
// Enchanted creature can't be blocked as long as it's attacking alone.
|
||||
this.addAbility(new SimpleStaticAbility(new ConditionalRestrictionEffect(
|
||||
new CantBeBlockedAttachedEffect(AttachmentType.AURA), GutterShortcutCondition.instance,
|
||||
"enchanted creature can't be blocked as long as it's attacking alone"
|
||||
)));
|
||||
|
||||
// If Gutter Shortcut would be put into a graveyard from anywhere, exile it instead.
|
||||
this.addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private GutterShortcut(final GutterShortcut card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GutterShortcut copy() {
|
||||
return new GutterShortcut(this);
|
||||
}
|
||||
}
|
||||
|
||||
enum GutterShortcutCondition implements Condition {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent permanent = source.getSourcePermanentIfItStillExists(game);
|
||||
return permanent != null && game.getCombat().attacksAlone()
|
||||
&& game.getCombat().getAttackers().contains(permanent.getAttachedTo());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,42 +1,68 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.SourceAttackingAloneCondition;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalRestrictionEffect;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GutterSkulker extends CardImpl {
|
||||
public final class GutterSkulker extends TransformingDoubleFacedCard {
|
||||
|
||||
public GutterSkulker(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT}, "{3}{U}",
|
||||
"Gutter Shortcut",
|
||||
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.AURA}, "U"
|
||||
);
|
||||
|
||||
this.subtype.add(SubType.SPIRIT);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
this.secondSideCardClazz = mage.cards.g.GutterShortcut.class;
|
||||
// Gutter Skulker
|
||||
this.getLeftHalfCard().setPT(3, 3);
|
||||
|
||||
// Gutter Skulker can't be blocked as long as it's attacking alone.
|
||||
this.addAbility(new SimpleStaticAbility(new ConditionalRestrictionEffect(
|
||||
this.getLeftHalfCard().addAbility(new SimpleStaticAbility(new ConditionalRestrictionEffect(
|
||||
new CantBeBlockedSourceEffect(Duration.WhileOnBattlefield),
|
||||
SourceAttackingAloneCondition.instance,
|
||||
"{this} can't be blocked as long as it's attacking alone"
|
||||
)));
|
||||
|
||||
// Gutter Shortcut
|
||||
// Enchant creature
|
||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
this.getRightHalfCard().getSpellAbility().addTarget(auraTarget);
|
||||
this.getRightHalfCard().getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||
this.getRightHalfCard().addAbility(new EnchantAbility(auraTarget));
|
||||
|
||||
// Disturb {3}{U}
|
||||
this.addAbility(new DisturbAbility(this, "{3}{U}"));
|
||||
// needs to be added after right half has spell ability target set
|
||||
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{3}{U}"));
|
||||
|
||||
// Enchanted creature can't be blocked as long as it's attacking alone.
|
||||
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new ConditionalRestrictionEffect(
|
||||
new CantBeBlockedSourceEffect(), GutterShortcutCondition.instance,
|
||||
"enchanted creature can't be blocked as long as it's attacking alone"
|
||||
)));
|
||||
|
||||
// If Gutter Shortcut would be put into a graveyard from anywhere, exile it instead.
|
||||
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private GutterSkulker(final GutterSkulker card) {
|
||||
|
|
@ -48,3 +74,14 @@ public final class GutterSkulker extends CardImpl {
|
|||
return new GutterSkulker(this);
|
||||
}
|
||||
}
|
||||
|
||||
enum GutterShortcutCondition implements Condition {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent permanent = source.getSourcePermanentIfItStillExists(game);
|
||||
return permanent != null && game.getCombat().attacksAlone()
|
||||
&& game.getCombat().getAttackers().contains(permanent.getAttachedTo());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,45 +0,0 @@
|
|||
package mage.cards.i;
|
||||
|
||||
import mage.Mana;
|
||||
import mage.abilities.dynamicvalue.common.CreaturesYouControlCount;
|
||||
import mage.abilities.hint.common.CreaturesYouControlHint;
|
||||
import mage.abilities.mana.DynamicManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SuperType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author JRHerlehy
|
||||
*/
|
||||
public final class ItlimocCradleOfTheSun extends CardImpl {
|
||||
|
||||
public ItlimocCradleOfTheSun(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
|
||||
// (Transforms from Growing Rites of Itlimoc.)/
|
||||
this.nightCard = true;
|
||||
|
||||
// {T}: Add {G}.
|
||||
this.addAbility(new GreenManaAbility());
|
||||
|
||||
// {T}: Add {G} for each creature you control.
|
||||
this.addAbility(new DynamicManaAbility(
|
||||
Mana.GreenMana(1), CreaturesYouControlCount.SINGULAR
|
||||
).addHint(CreaturesYouControlHint.instance));
|
||||
}
|
||||
|
||||
private ItlimocCradleOfTheSun(final ItlimocCradleOfTheSun card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItlimocCradleOfTheSun copy() {
|
||||
return new ItlimocCradleOfTheSun(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
package mage.cards.k;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author nantuko
|
||||
*/
|
||||
public final class KrallenhordeWantons extends CardImpl {
|
||||
|
||||
public KrallenhordeWantons(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.color.setGreen(true);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
this.power = new MageInt(7);
|
||||
this.toughness = new MageInt(7);
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Wantons.
|
||||
this.addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private KrallenhordeWantons(final KrallenhordeWantons card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public KrallenhordeWantons copy() {
|
||||
return new KrallenhordeWantons(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.RemoveCountersSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ShadowsLair extends CardImpl {
|
||||
|
||||
public ShadowsLair(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
this.subtype.add(SubType.CAVE);
|
||||
this.nightCard = true;
|
||||
|
||||
// {T}: Add {B}.
|
||||
this.addAbility(new BlackManaAbility());
|
||||
|
||||
// {B}, {T}, Remove a dread counter from Shadows' Lair: You draw a card and you lose 1 life.
|
||||
Ability ability = new SimpleActivatedAbility(
|
||||
new DrawCardSourceControllerEffect(1, true), new ManaCostsImpl<>("{B}")
|
||||
);
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new RemoveCountersSourceCost(CounterType.DREAD.createInstance()));
|
||||
ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private ShadowsLair(final ShadowsLair card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShadowsLair copy() {
|
||||
return new ShadowsLair(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
package mage.cards.v;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class VildinPackAlpha extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterCreaturePermanent(SubType.WEREWOLF, "a Werewolf");
|
||||
|
||||
public VildinPackAlpha(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(3);
|
||||
this.color.setRed(true);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
// Whenever a Werewolf you control enters, you may transform it.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new VildinPackAlphaEffect(), filter,
|
||||
true, SetTargetPointer.PERMANENT
|
||||
));
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Vildin-Pack Alpha.
|
||||
this.addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private VildinPackAlpha(final VildinPackAlpha card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VildinPackAlpha copy() {
|
||||
return new VildinPackAlpha(this);
|
||||
}
|
||||
}
|
||||
|
||||
class VildinPackAlphaEffect extends OneShotEffect {
|
||||
|
||||
VildinPackAlphaEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "you may transform it";
|
||||
}
|
||||
|
||||
private VildinPackAlphaEffect(final VildinPackAlphaEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VildinPackAlphaEffect copy() {
|
||||
return new VildinPackAlphaEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
Permanent werewolf = game.getPermanent(getTargetPointer().getFirst(game, source));
|
||||
if (werewolf != null) {
|
||||
werewolf.transform(source, game);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -133,7 +133,6 @@ public final class EldritchMoon extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Graf Rats", 91, Rarity.COMMON, mage.cards.g.GrafRats.class));
|
||||
cards.add(new SetCardInfo("Grapple with the Past", 160, Rarity.COMMON, mage.cards.g.GrappleWithThePast.class));
|
||||
cards.add(new SetCardInfo("Grim Flayer", 184, Rarity.MYTHIC, mage.cards.g.GrimFlayer.class));
|
||||
cards.add(new SetCardInfo("Grisly Anglerfish", 63, Rarity.UNCOMMON, mage.cards.g.GrislyAnglerfish.class));
|
||||
cards.add(new SetCardInfo("Grizzled Angler", 63, Rarity.UNCOMMON, mage.cards.g.GrizzledAngler.class));
|
||||
cards.add(new SetCardInfo("Guardian of Pilgrims", 30, Rarity.COMMON, mage.cards.g.GuardianOfPilgrims.class));
|
||||
cards.add(new SetCardInfo("Hamlet Captain", 161, Rarity.UNCOMMON, mage.cards.h.HamletCaptain.class));
|
||||
|
|
|
|||
|
|
@ -94,8 +94,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("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));
|
||||
cards.add(new SetCardInfo("Choco, Seeker of Paradise", 479, Rarity.RARE, mage.cards.c.ChocoSeekerOfParadise.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Choco, Seeker of Paradise", 569, Rarity.RARE, mage.cards.c.ChocoSeekerOfParadise.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@ public final class FromTheVaultTransform extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Delver of Secrets", 7, Rarity.MYTHIC, mage.cards.d.DelverOfSecrets.class));
|
||||
cards.add(new SetCardInfo("Elbrus, the Binding Blade", 8, Rarity.MYTHIC, mage.cards.e.ElbrusTheBindingBlade.class));
|
||||
cards.add(new SetCardInfo("Garruk Relentless", 9, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class));
|
||||
cards.add(new SetCardInfo("Garruk, the Veil-Cursed", 9, Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class));
|
||||
cards.add(new SetCardInfo("Gisela, the Broken Blade", 10, Rarity.MYTHIC, mage.cards.g.GiselaTheBrokenBlade.class));
|
||||
cards.add(new SetCardInfo("Huntmaster of the Fells", 11, Rarity.MYTHIC, mage.cards.h.HuntmasterOfTheFells.class));
|
||||
cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 12, Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class));
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ public final class HasCon2017 extends ExpansionSet {
|
|||
this.hasBasicLands = false;
|
||||
|
||||
cards.add(new ExpansionSet.SetCardInfo("Grimlock, Dinobot Leader", 1, Rarity.MYTHIC, mage.cards.g.GrimlockDinobotLeader.class));
|
||||
cards.add(new ExpansionSet.SetCardInfo("Grimlock, Ferocious King", 1, Rarity.MYTHIC, mage.cards.g.GrimlockFerociousKing.class));
|
||||
cards.add(new ExpansionSet.SetCardInfo("Sword of Dungeons & Dragons", 3, Rarity.MYTHIC, mage.cards.s.SwordOfDungeonsAndDragons.class));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,8 +124,6 @@ public final class Innistrad extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Gallows Warden", 16, Rarity.UNCOMMON, mage.cards.g.GallowsWarden.class));
|
||||
cards.add(new SetCardInfo("Galvanic Juggernaut", 222, Rarity.UNCOMMON, mage.cards.g.GalvanicJuggernaut.class));
|
||||
cards.add(new SetCardInfo("Garruk Relentless", 181, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class));
|
||||
cards.add(new SetCardInfo("Garruk, the Veil-Cursed", 181, Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class));
|
||||
cards.add(new SetCardInfo("Gatstaf Howler", 182, Rarity.UNCOMMON, mage.cards.g.GatstafHowler.class));
|
||||
cards.add(new SetCardInfo("Gatstaf Shepherd", 182, Rarity.UNCOMMON, mage.cards.g.GatstafShepherd.class));
|
||||
cards.add(new SetCardInfo("Gavony Township", 239, Rarity.RARE, mage.cards.g.GavonyTownship.class));
|
||||
cards.add(new SetCardInfo("Geist of Saint Traft", 213, Rarity.MYTHIC, mage.cards.g.GeistOfSaintTraft.class));
|
||||
|
|
@ -171,7 +169,6 @@ public final class Innistrad extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Kessig Wolf Run", 243, Rarity.RARE, mage.cards.k.KessigWolfRun.class));
|
||||
cards.add(new SetCardInfo("Kessig Wolf", 151, Rarity.COMMON, mage.cards.k.KessigWolf.class));
|
||||
cards.add(new SetCardInfo("Kindercatch", 190, Rarity.COMMON, mage.cards.k.Kindercatch.class));
|
||||
cards.add(new SetCardInfo("Krallenhorde Wantons", 185, Rarity.COMMON, mage.cards.k.KrallenhordeWantons.class));
|
||||
cards.add(new SetCardInfo("Kruin Outlaw", 152, Rarity.RARE, mage.cards.k.KruinOutlaw.class));
|
||||
cards.add(new SetCardInfo("Laboratory Maniac", 61, Rarity.RARE, mage.cards.l.LaboratoryManiac.class));
|
||||
cards.add(new SetCardInfo("Lantern Spirit", 62, Rarity.UNCOMMON, mage.cards.l.LanternSpirit.class));
|
||||
|
|
|
|||
|
|
@ -220,7 +220,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Groom's Finery", 117, Rarity.UNCOMMON, mage.cards.g.GroomsFinery.class));
|
||||
cards.add(new SetCardInfo("Gryff Rider", 15, Rarity.COMMON, mage.cards.g.GryffRider.class));
|
||||
cards.add(new SetCardInfo("Gryffwing Cavalry", 16, Rarity.UNCOMMON, mage.cards.g.GryffwingCavalry.class));
|
||||
cards.add(new SetCardInfo("Gutter Shortcut", 62, Rarity.UNCOMMON, mage.cards.g.GutterShortcut.class));
|
||||
cards.add(new SetCardInfo("Gutter Skulker", 62, Rarity.UNCOMMON, mage.cards.g.GutterSkulker.class));
|
||||
cards.add(new SetCardInfo("Halana and Alena, Partners", 239, Rarity.RARE, mage.cards.h.HalanaAndAlenaPartners.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Halana and Alena, Partners", 325, Rarity.RARE, mage.cards.h.HalanaAndAlenaPartners.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -263,7 +263,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Gluttonous Guest", 381, Rarity.COMMON, mage.cards.g.GluttonousGuest.class));
|
||||
cards.add(new SetCardInfo("Graf Reaver", 382, Rarity.RARE, mage.cards.g.GrafReaver.class));
|
||||
cards.add(new SetCardInfo("Grafted Identity", 57, Rarity.RARE, mage.cards.g.GraftedIdentity.class));
|
||||
cards.add(new SetCardInfo("Graveyard Glutton", 104, Rarity.RARE, mage.cards.g.GraveyardGlutton.class));
|
||||
cards.add(new SetCardInfo("Graveyard Trespasser", 104, Rarity.RARE, mage.cards.g.GraveyardTrespasser.class));
|
||||
cards.add(new SetCardInfo("Grisly Ritual", 383, Rarity.COMMON, mage.cards.g.GrislyRitual.class));
|
||||
cards.add(new SetCardInfo("Grizzly Ghoul", 226, Rarity.UNCOMMON, mage.cards.g.GrizzlyGhoul.class));
|
||||
|
|
@ -271,7 +270,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Groom's Finery", 384, Rarity.UNCOMMON, mage.cards.g.GroomsFinery.class));
|
||||
cards.add(new SetCardInfo("Gryff Rider", 282, Rarity.COMMON, mage.cards.g.GryffRider.class));
|
||||
cards.add(new SetCardInfo("Gryffwing Cavalry", 283, Rarity.UNCOMMON, mage.cards.g.GryffwingCavalry.class));
|
||||
cards.add(new SetCardInfo("Gutter Shortcut", 329, Rarity.UNCOMMON, mage.cards.g.GutterShortcut.class));
|
||||
cards.add(new SetCardInfo("Gutter Skulker", 329, Rarity.UNCOMMON, mage.cards.g.GutterSkulker.class));
|
||||
cards.add(new SetCardInfo("Halana and Alena, Partners", 506, Rarity.RARE, mage.cards.h.HalanaAndAlenaPartners.class));
|
||||
cards.add(new SetCardInfo("Hallowed Haunting", 284, Rarity.MYTHIC, mage.cards.h.HallowedHaunting.class));
|
||||
|
|
|
|||
|
|
@ -208,8 +208,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Gisa, Glorious Resurrector", 314, Rarity.RARE, mage.cards.g.GisaGloriousResurrector.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Grafted Identity", 335, Rarity.RARE, mage.cards.g.GraftedIdentity.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Grafted Identity", 57, Rarity.RARE, mage.cards.g.GraftedIdentity.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Graveyard Glutton", 104, Rarity.RARE, mage.cards.g.GraveyardGlutton.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Graveyard Glutton", 290, Rarity.RARE, mage.cards.g.GraveyardGlutton.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Graveyard Trespasser", 104, Rarity.RARE, mage.cards.g.GraveyardTrespasser.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Graveyard Trespasser", 290, Rarity.RARE, mage.cards.g.GraveyardTrespasser.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Grizzly Ghoul", 226, Rarity.UNCOMMON, mage.cards.g.GrizzlyGhoul.class));
|
||||
|
|
|
|||
|
|
@ -218,7 +218,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Galvanic Juggernaut", 263, Rarity.UNCOMMON, mage.cards.g.GalvanicJuggernaut.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Galvanic Juggernaut", 443, Rarity.UNCOMMON, mage.cards.g.GalvanicJuggernaut.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Garruk Relentless", 197, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class));
|
||||
cards.add(new SetCardInfo("Garruk, the Veil-Cursed", 197, Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class));
|
||||
cards.add(new SetCardInfo("Gather the Townsfolk", 23, Rarity.COMMON, mage.cards.g.GatherTheTownsfolk.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Gather the Townsfolk", 341, Rarity.COMMON, mage.cards.g.GatherTheTownsfolk.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Geier Reach Bandit", 156, Rarity.UNCOMMON, mage.cards.g.GeierReachBandit.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -244,8 +243,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Griselbrand", 115, Rarity.MYTHIC, mage.cards.g.Griselbrand.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Griselbrand", 381, Rarity.MYTHIC, mage.cards.g.Griselbrand.class,RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Griselbrand", 485, Rarity.MYTHIC, mage.cards.g.Griselbrand.class, FULL_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Grisly Anglerfish", 458, Rarity.UNCOMMON, mage.cards.g.GrislyAnglerfish.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Grisly Anglerfish", 67, Rarity.UNCOMMON, mage.cards.g.GrislyAnglerfish.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Grizzled Angler", 458, Rarity.UNCOMMON, mage.cards.g.GrizzledAngler.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Grizzled Angler", 67, Rarity.UNCOMMON, mage.cards.g.GrizzledAngler.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Grizzly Ghoul", 240, Rarity.UNCOMMON, mage.cards.g.GrizzlyGhoul.class));
|
||||
|
|
@ -521,8 +518,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Vanquish the Horde", 49, Rarity.RARE, mage.cards.v.VanquishTheHorde.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Vexing Devil", 178, Rarity.RARE, mage.cards.v.VexingDevil.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Vexing Devil", 313, Rarity.RARE, mage.cards.v.VexingDevil.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Vildin-Pack Alpha", 156, Rarity.UNCOMMON, mage.cards.v.VildinPackAlpha.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Vildin-Pack Alpha", 464, Rarity.UNCOMMON, mage.cards.v.VildinPackAlpha.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Vilespawn Spider", 251, Rarity.UNCOMMON, mage.cards.v.VilespawnSpider.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Vilespawn Spider", 436, Rarity.UNCOMMON, mage.cards.v.VilespawnSpider.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Village Messenger", 179, Rarity.COMMON, mage.cards.v.VillageMessenger.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -157,7 +157,6 @@ public final class Ixalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Island", 265, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Island", 266, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Island", 267, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", 191, Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class));
|
||||
cards.add(new SetCardInfo("Ixalan's Binding", 17, Rarity.UNCOMMON, mage.cards.i.IxalansBinding.class));
|
||||
cards.add(new SetCardInfo("Ixalli's Diviner", 192, Rarity.COMMON, mage.cards.i.IxallisDiviner.class));
|
||||
cards.add(new SetCardInfo("Ixalli's Keeper", 193, Rarity.COMMON, mage.cards.i.IxallisKeeper.class));
|
||||
|
|
|
|||
|
|
@ -74,7 +74,6 @@ public class IxalanPromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Herald of Secret Streams", "59s", Rarity.RARE, mage.cards.h.HeraldOfSecretStreams.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Hostage Taker", "223s", Rarity.RARE, mage.cards.h.HostageTaker.class));
|
||||
cards.add(new SetCardInfo("Huatli, Warrior Poet", "224s", Rarity.MYTHIC, mage.cards.h.HuatliWarriorPoet.class));
|
||||
cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", "191s", Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class));
|
||||
cards.add(new SetCardInfo("Jace, Cunning Castaway", "60s", Rarity.MYTHIC, mage.cards.j.JaceCunningCastaway.class));
|
||||
cards.add(new SetCardInfo("Kinjalli's Sunwing", "19p", Rarity.RARE, mage.cards.k.KinjallisSunwing.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Kinjalli's Sunwing", "19s", Rarity.RARE, mage.cards.k.KinjallisSunwing.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ public class JudgeGiftCards2022 extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Animate Dead", 7, Rarity.RARE, mage.cards.a.AnimateDead.class, RETRO_ART));
|
||||
cards.add(new SetCardInfo("Greater Auramancy", 1, Rarity.RARE, mage.cards.g.GreaterAuramancy.class));
|
||||
cards.add(new SetCardInfo("Growing Rites of Itlimoc", 10, Rarity.RARE, mage.cards.g.GrowingRitesOfItlimoc.class));
|
||||
cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", 10, Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class));
|
||||
cards.add(new SetCardInfo("No Mercy", 9, Rarity.RARE, mage.cards.n.NoMercy.class));
|
||||
cards.add(new SetCardInfo("Omniscience", 2, Rarity.RARE, mage.cards.o.Omniscience.class));
|
||||
cards.add(new SetCardInfo("Parallel Lives", 3, Rarity.RARE, mage.cards.p.ParallelLives.class));
|
||||
|
|
|
|||
|
|
@ -96,7 +96,6 @@ public final class MarchOfTheMachine extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Chandra, Hope's Beacon", 321, Rarity.MYTHIC, mage.cards.c.ChandraHopesBeacon.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Change the Equation", 50, Rarity.UNCOMMON, mage.cards.c.ChangeTheEquation.class));
|
||||
cards.add(new SetCardInfo("Chomping Kavu", 179, Rarity.COMMON, mage.cards.c.ChompingKavu.class));
|
||||
cards.add(new SetCardInfo("Chrome Host Hulk", 188, Rarity.UNCOMMON, mage.cards.c.ChromeHostHulk.class));
|
||||
cards.add(new SetCardInfo("Chrome Host Seedshark", 350, Rarity.RARE, mage.cards.c.ChromeHostSeedshark.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Chrome Host Seedshark", 51, Rarity.RARE, mage.cards.c.ChromeHostSeedshark.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("City on Fire", 135, Rarity.RARE, mage.cards.c.CityOnFire.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -110,7 +110,6 @@ public final class RivalsOfIxalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Goblin Trailblazer", 105, Rarity.COMMON, mage.cards.g.GoblinTrailblazer.class));
|
||||
cards.add(new SetCardInfo("Golden Demise", 73, Rarity.UNCOMMON, mage.cards.g.GoldenDemise.class));
|
||||
cards.add(new SetCardInfo("Golden Guardian", 179, Rarity.RARE, mage.cards.g.GoldenGuardian.class));
|
||||
cards.add(new SetCardInfo("Gold-Forge Garrison", 179, Rarity.RARE, mage.cards.g.GoldForgeGarrison.class));
|
||||
cards.add(new SetCardInfo("Grasping Scoundrel", 74, Rarity.COMMON, mage.cards.g.GraspingScoundrel.class));
|
||||
cards.add(new SetCardInfo("Gruesome Fate", 75, Rarity.COMMON, mage.cards.g.GruesomeFate.class));
|
||||
cards.add(new SetCardInfo("Hadana's Climb", 158, Rarity.RARE, mage.cards.h.HadanasClimb.class));
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@ public class RivalsOfIxalanPromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Ghalta, Primal Hunger", 130, Rarity.RARE, mage.cards.g.GhaltaPrimalHunger.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ghalta, Primal Hunger", "130p", Rarity.RARE, mage.cards.g.GhaltaPrimalHunger.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ghalta, Primal Hunger", "130s", Rarity.RARE, mage.cards.g.GhaltaPrimalHunger.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Gold-Forge Garrison", "179s", Rarity.RARE, mage.cards.g.GoldForgeGarrison.class));
|
||||
cards.add(new SetCardInfo("Golden Guardian", "179s", Rarity.RARE, mage.cards.g.GoldenGuardian.class));
|
||||
cards.add(new SetCardInfo("Hadana's Climb", "158s", Rarity.RARE, mage.cards.h.HadanasClimb.class));
|
||||
cards.add(new SetCardInfo("Huatli, Radiant Champion", "159s", Rarity.MYTHIC, mage.cards.h.HuatliRadiantChampion.class));
|
||||
|
|
|
|||
|
|
@ -2133,7 +2133,6 @@ public class SecretLairDrop extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Swords to Plowshares", 2167, Rarity.RARE, mage.cards.s.SwordsToPlowshares.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Baral, Chief of Compliance", 2168, Rarity.RARE, mage.cards.b.BaralChiefOfCompliance.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Garruk Relentless", 2169, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class));
|
||||
cards.add(new SetCardInfo("Garruk, the Veil-Cursed", 2169, Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class));
|
||||
cards.add(new SetCardInfo("Reaper King", 2170, Rarity.RARE, mage.cards.r.ReaperKing.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Glen Elendra Archmage", 2171, Rarity.RARE, mage.cards.g.GlenElendraArchmage.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Guardian Project", 2172, Rarity.MYTHIC, mage.cards.g.GuardianProject.class));
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ public class ShadowsOfThePast extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Forge Devil", 41, Rarity.COMMON, mage.cards.f.ForgeDevil.class));
|
||||
cards.add(new SetCardInfo("Galvanic Juggernaut", 72, Rarity.UNCOMMON, mage.cards.g.GalvanicJuggernaut.class));
|
||||
cards.add(new SetCardInfo("Garruk Relentless", 49, Rarity.MYTHIC, mage.cards.g.GarrukRelentless.class));
|
||||
cards.add(new SetCardInfo("Garruk, the Veil-Cursed", 49, Rarity.MYTHIC, mage.cards.g.GarrukTheVeilCursed.class));
|
||||
cards.add(new SetCardInfo("Geist of Saint Traft", 62, Rarity.MYTHIC, mage.cards.g.GeistOfSaintTraft.class));
|
||||
cards.add(new SetCardInfo("Ghoulraiser", 30, Rarity.COMMON, mage.cards.g.Ghoulraiser.class));
|
||||
cards.add(new SetCardInfo("Gnaw to the Bone", 50, Rarity.COMMON, mage.cards.g.GnawToTheBone.class));
|
||||
|
|
|
|||
|
|
@ -136,7 +136,6 @@ public final class ShadowsOverInnistrad extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Furtive Homunculus", 64, Rarity.COMMON, mage.cards.f.FurtiveHomunculus.class));
|
||||
cards.add(new SetCardInfo("Game Trail", 276, Rarity.RARE, mage.cards.g.GameTrail.class));
|
||||
cards.add(new SetCardInfo("Gatstaf Arsonists", 158, Rarity.COMMON, mage.cards.g.GatstafArsonists.class));
|
||||
cards.add(new SetCardInfo("Gatstaf Ravagers", 158, Rarity.COMMON, mage.cards.g.GatstafRavagers.class));
|
||||
cards.add(new SetCardInfo("Geier Reach Bandit", 159, Rarity.RARE, mage.cards.g.GeierReachBandit.class));
|
||||
cards.add(new SetCardInfo("Geistblast", 160, Rarity.UNCOMMON, mage.cards.g.Geistblast.class));
|
||||
cards.add(new SetCardInfo("Geralf's Masterpiece", 65, Rarity.MYTHIC, mage.cards.g.GeralfsMasterpiece.class));
|
||||
|
|
@ -342,7 +341,6 @@ public final class ShadowsOverInnistrad extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Vessel of Paramnesia", 95, Rarity.COMMON, mage.cards.v.VesselOfParamnesia.class));
|
||||
cards.add(new SetCardInfo("Vessel of Volatility", 189, Rarity.COMMON, mage.cards.v.VesselOfVolatility.class));
|
||||
cards.add(new SetCardInfo("Veteran Cathar", 238, Rarity.UNCOMMON, mage.cards.v.VeteranCathar.class));
|
||||
cards.add(new SetCardInfo("Vildin-Pack Alpha", 159, Rarity.RARE, mage.cards.v.VildinPackAlpha.class));
|
||||
cards.add(new SetCardInfo("Village Messenger", 190, Rarity.UNCOMMON, mage.cards.v.VillageMessenger.class));
|
||||
cards.add(new SetCardInfo("Voldaren Duelist", 191, Rarity.COMMON, mage.cards.v.VoldarenDuelist.class));
|
||||
cards.add(new SetCardInfo("Warped Landscape", 280, Rarity.COMMON, mage.cards.w.WarpedLandscape.class));
|
||||
|
|
|
|||
|
|
@ -109,7 +109,6 @@ public class ShadowsOverInnistradPromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Traverse the Ulvenwald", "234s", Rarity.RARE, mage.cards.t.TraverseTheUlvenwald.class));
|
||||
cards.add(new SetCardInfo("Triskaidekaphobia", "141s", Rarity.RARE, mage.cards.t.Triskaidekaphobia.class));
|
||||
cards.add(new SetCardInfo("Ulvenwald Hydra", "235s", Rarity.MYTHIC, mage.cards.u.UlvenwaldHydra.class));
|
||||
cards.add(new SetCardInfo("Vildin-Pack Alpha", "159s", Rarity.RARE, mage.cards.v.VildinPackAlpha.class));
|
||||
cards.add(new SetCardInfo("Welcome to the Fold", "96s", Rarity.RARE, mage.cards.w.WelcomeToTheFold.class));
|
||||
cards.add(new SetCardInfo("Werewolf of Ancient Hunger", "225s", Rarity.RARE, mage.cards.w.WerewolfOfAncientHunger.class));
|
||||
cards.add(new SetCardInfo("Westvale Abbey", "281s", Rarity.RARE, mage.cards.w.WestvaleAbbey.class));
|
||||
|
|
|
|||
|
|
@ -139,7 +139,6 @@ public class ShadowsOverInnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Galvanic Bombardment", 157, Rarity.COMMON, mage.cards.g.GalvanicBombardment.class));
|
||||
cards.add(new SetCardInfo("Game Trail", 269, Rarity.UNCOMMON, mage.cards.g.GameTrail.class));
|
||||
cards.add(new SetCardInfo("Gatstaf Arsonists", 158, Rarity.COMMON, mage.cards.g.GatstafArsonists.class));
|
||||
cards.add(new SetCardInfo("Gatstaf Ravagers", 158, Rarity.COMMON, mage.cards.g.GatstafRavagers.class));
|
||||
cards.add(new SetCardInfo("Gavony Unhallowed", 111, Rarity.COMMON, mage.cards.g.GavonyUnhallowed.class));
|
||||
cards.add(new SetCardInfo("Geier Reach Bandit", 159, Rarity.UNCOMMON, mage.cards.g.GeierReachBandit.class));
|
||||
cards.add(new SetCardInfo("Geier Reach Sanitarium", 270, Rarity.RARE, mage.cards.g.GeierReachSanitarium.class));
|
||||
|
|
@ -323,7 +322,6 @@ public class ShadowsOverInnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Uncaged Fury", 183, Rarity.UNCOMMON, mage.cards.u.UncagedFury.class));
|
||||
cards.add(new SetCardInfo("Vessel of Nascency", 224, Rarity.UNCOMMON, mage.cards.v.VesselOfNascency.class));
|
||||
cards.add(new SetCardInfo("Veteran Cathar", 225, Rarity.UNCOMMON, mage.cards.v.VeteranCathar.class));
|
||||
cards.add(new SetCardInfo("Vildin-Pack Alpha", 159, Rarity.UNCOMMON, mage.cards.v.VildinPackAlpha.class));
|
||||
cards.add(new SetCardInfo("Village Messenger", 184, Rarity.UNCOMMON, mage.cards.v.VillageMessenger.class));
|
||||
cards.add(new SetCardInfo("Voldaren Pariah", 138, Rarity.RARE, mage.cards.v.VoldarenPariah.class));
|
||||
cards.add(new SetCardInfo("Voracious Reader", 58, Rarity.UNCOMMON, mage.cards.v.VoraciousReader.class));
|
||||
|
|
|
|||
|
|
@ -229,8 +229,6 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Island", 288, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_UST_VARIOUS));
|
||||
cards.add(new SetCardInfo("Island", 395, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Island", 396, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", 188, Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", 380, Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Itzquinth, Firstborn of Gishath", 230, Rarity.UNCOMMON, mage.cards.i.ItzquinthFirstbornOfGishath.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Itzquinth, Firstborn of Gishath", 331, Rarity.UNCOMMON, mage.cards.i.ItzquinthFirstbornOfGishath.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ixalli's Lorekeeper", 194, Rarity.UNCOMMON, mage.cards.i.IxallisLorekeeper.class));
|
||||
|
|
@ -372,7 +370,6 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Self-Reflection", 74, Rarity.UNCOMMON, mage.cards.s.SelfReflection.class));
|
||||
cards.add(new SetCardInfo("Sentinel of the Nameless City", 211, Rarity.RARE, mage.cards.s.SentinelOfTheNamelessCity.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Sentinel of the Nameless City", 383, Rarity.RARE, mage.cards.s.SentinelOfTheNamelessCity.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Shadows' Lair", 108, Rarity.UNCOMMON, mage.cards.s.ShadowsLair.class));
|
||||
cards.add(new SetCardInfo("Shipwreck Sentry", 75, Rarity.COMMON, mage.cards.s.ShipwreckSentry.class));
|
||||
cards.add(new SetCardInfo("Sinuous Benthisaur", 76, Rarity.UNCOMMON, mage.cards.s.SinuousBenthisaur.class));
|
||||
cards.add(new SetCardInfo("Skullcap Snail", 119, Rarity.COMMON, mage.cards.s.SkullcapSnail.class));
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ public final class Transformers extends ExpansionSet {
|
|||
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("Goldbug, Humanity's Ally", 11, Rarity.MYTHIC, mage.cards.g.GoldbugHumanitysAlly.class));
|
||||
cards.add(new SetCardInfo("Goldbug, Scrappy Scout", 11, Rarity.MYTHIC, mage.cards.g.GoldbugScrappyScout.class));
|
||||
cards.add(new SetCardInfo("Jetfire, Air Guardian", 3, Rarity.MYTHIC, mage.cards.j.JetfireAirGuardian.class));
|
||||
cards.add(new SetCardInfo("Jetfire, Ingenious Scientist", 3, Rarity.MYTHIC, mage.cards.j.JetfireIngeniousScientist.class));
|
||||
cards.add(new SetCardInfo("Megatron, Destructive Force", 12, Rarity.MYTHIC, mage.cards.m.MegatronDestructiveForce.class));
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@ public class XLNTreasureChest extends ExpansionSet {
|
|||
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));
|
||||
cards.add(new SetCardInfo("Itlimoc, Cradle of the Sun", 191, Rarity.RARE, mage.cards.i.ItlimocCradleOfTheSun.class));
|
||||
cards.add(new SetCardInfo("Legion's Landing", 22, Rarity.RARE, mage.cards.l.LegionsLanding.class));
|
||||
cards.add(new SetCardInfo("Primal Amulet", 243, Rarity.RARE, mage.cards.p.PrimalAmulet.class));
|
||||
cards.add(new SetCardInfo("Primal Wellspring", 243, Rarity.RARE, mage.cards.p.PrimalWellspring.class));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue