mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
parent
1bcbdd520e
commit
78ca8e6be7
45 changed files with 423 additions and 864 deletions
|
|
@ -1,48 +0,0 @@
|
|||
|
||||
package mage.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.constants.SuperType;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.permanent.token.IxalanVampireToken;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class AdantoTheFirstFort extends CardImpl {
|
||||
|
||||
public AdantoTheFirstFort(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
// T: Add W.
|
||||
this.addAbility(new WhiteManaAbility());
|
||||
|
||||
// 2W, T: Create a 1/1 white Vampire creature token with lifelink.
|
||||
Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(new IxalanVampireToken()), new ManaCostsImpl<>("{2}{W}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private AdantoTheFirstFort(final AdantoTheFirstFort card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AdantoTheFirstFort copy() {
|
||||
return new AdantoTheFirstFort(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.keyword.ExploreTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class GuidestoneCompass extends CardImpl {
|
||||
|
||||
public GuidestoneCompass(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "");
|
||||
|
||||
this.nightCard = true;
|
||||
this.color.setBlue(true);
|
||||
|
||||
// {1}, {T}: Target creature you control explores. Activate only as a sorcery.
|
||||
Ability ability = new ActivateAsSorceryActivatedAbility(
|
||||
new ExploreTargetEffect(),
|
||||
new GenericManaCost(1)
|
||||
);
|
||||
ability.addTarget(new TargetControlledCreaturePermanent());
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private GuidestoneCompass(final GuidestoneCompass card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GuidestoneCompass copy() {
|
||||
return new GuidestoneCompass(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
|
||||
package mage.cards.i;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class ItThatRidesAsOne extends CardImpl {
|
||||
|
||||
public ItThatRidesAsOne(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
|
||||
this.subtype.add(SubType.ELDRAZI);
|
||||
this.subtype.add(SubType.HORROR);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
// First strike
|
||||
this.addAbility(FirstStrikeAbility.getInstance());
|
||||
// Trample
|
||||
this.addAbility(TrampleAbility.getInstance());
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
}
|
||||
|
||||
private ItThatRidesAsOne(final ItThatRidesAsOne card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItThatRidesAsOne copy() {
|
||||
return new ItThatRidesAsOne(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,11 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
|
|
@ -13,21 +14,31 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
public final class LambholtElder extends CardImpl {
|
||||
public final class LambholtElder extends TransformingDoubleFacedCard {
|
||||
|
||||
public LambholtElder(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{2}{G}",
|
||||
"Silverpelt Werewolf",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "G"
|
||||
);
|
||||
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.s.SilverpeltWerewolf.class;
|
||||
// Lambholt Elder
|
||||
this.getLeftHalfCard().setPT(1, 2);
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Elder.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new WerewolfFrontTriggeredAbility());
|
||||
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||
|
||||
// Silverpelt Werewolf
|
||||
this.getRightHalfCard().setPT(4, 5);
|
||||
|
||||
// Whenever Silverpelt Werewolf deals combat damage to a player, draw a card.
|
||||
this.getRightHalfCard().addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||
new DrawCardSourceControllerEffect(1), false
|
||||
));
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Silverpelt Werewolf.
|
||||
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private LambholtElder(final LambholtElder card) {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||
import mage.abilities.effects.common.DamagePlayersEffect;
|
||||
import mage.abilities.keyword.DayboundAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
|
|
@ -16,25 +16,38 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LambholtRaconteur extends CardImpl {
|
||||
public final class LambholtRaconteur extends TransformingDoubleFacedCard {
|
||||
|
||||
public LambholtRaconteur(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{3}{R}",
|
||||
"Lambholt Ravager",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "R"
|
||||
);
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(4);
|
||||
this.secondSideCardClazz = mage.cards.l.LambholtRavager.class;
|
||||
// Lambholt Raconteur
|
||||
this.getLeftHalfCard().setPT(2, 4);
|
||||
|
||||
// Whenever you cast a noncreature spell, Lambholt Raconteur deals 1 damage to each opponent.
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(
|
||||
this.getLeftHalfCard().addAbility(new SpellCastControllerTriggeredAbility(
|
||||
new DamagePlayersEffect(1, TargetController.OPPONENT),
|
||||
StaticFilters.FILTER_SPELL_A_NON_CREATURE, false
|
||||
));
|
||||
|
||||
// Daybound
|
||||
this.addAbility(new DayboundAbility());
|
||||
this.getLeftHalfCard().addAbility(new DayboundAbility());
|
||||
|
||||
// Lambholt Ravager
|
||||
this.getRightHalfCard().setPT(4, 4);
|
||||
|
||||
// Whenever you cast a noncreature spell, Lambholt Ravager deals 2 damage to each opponent.
|
||||
this.getRightHalfCard().addAbility(new SpellCastControllerTriggeredAbility(
|
||||
new DamagePlayersEffect(2, TargetController.OPPONENT),
|
||||
StaticFilters.FILTER_SPELL_A_NON_CREATURE, false
|
||||
));
|
||||
|
||||
// Nightbound
|
||||
this.getRightHalfCard().addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private LambholtRaconteur(final LambholtRaconteur card) {
|
||||
|
|
|
|||
|
|
@ -1,48 +0,0 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||
import mage.abilities.effects.common.DamagePlayersEffect;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LambholtRavager extends CardImpl {
|
||||
|
||||
public LambholtRavager(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
this.color.setRed(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Whenever you cast a noncreature spell, Lambholt Ravager deals 2 damage to each opponent.
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(
|
||||
new DamagePlayersEffect(2, TargetController.OPPONENT),
|
||||
StaticFilters.FILTER_SPELL_A_NON_CREATURE, false
|
||||
));
|
||||
|
||||
// Nightbound
|
||||
this.addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private LambholtRavager(final LambholtRavager card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LambholtRavager copy() {
|
||||
return new LambholtRavager(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,34 +1,61 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LanternBearer extends CardImpl {
|
||||
public final class LanternBearer extends TransformingDoubleFacedCard {
|
||||
|
||||
public LanternBearer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT}, "{U}",
|
||||
"Lanterns' Lift",
|
||||
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.AURA}, "U"
|
||||
);
|
||||
|
||||
this.subtype.add(SubType.SPIRIT);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
this.secondSideCardClazz = mage.cards.l.LanternsLift.class;
|
||||
// Lantern Bearer
|
||||
this.getLeftHalfCard().setPT(1, 1);
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Lanterns' Lift
|
||||
// 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 {2}{U}
|
||||
this.addAbility(new DisturbAbility(this, "{2}{U}"));
|
||||
// needs to be added after right half has spell ability target set
|
||||
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{2}{U}"));
|
||||
|
||||
// Enchanted creature gets +1/+1 and has flying.
|
||||
Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(
|
||||
1, 1, Duration.WhileOnBattlefield
|
||||
));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
FlyingAbility.getInstance(), AttachmentType.AURA
|
||||
).setText("and has flying"));
|
||||
this.getRightHalfCard().addAbility(ability);
|
||||
|
||||
// If Lanterns' Lift would be put into a graveyard from anywhere, exile it instead.
|
||||
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private LanternBearer(final LanternBearer card) {
|
||||
|
|
|
|||
|
|
@ -1,58 +0,0 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LanternsLift extends CardImpl {
|
||||
|
||||
public LanternsLift(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 gets +1/+1 and has flying.
|
||||
Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(
|
||||
1, 1, Duration.WhileOnBattlefield
|
||||
));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
FlyingAbility.getInstance(), AttachmentType.AURA
|
||||
).setText("and has flying"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// If Lanterns' Lift would be put into a graveyard from anywhere, exile it instead.
|
||||
this.addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private LanternsLift(final LanternsLift card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LanternsLift copy() {
|
||||
return new LanternsLift(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,14 +1,18 @@
|
|||
|
||||
package mage.cards.l;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksWithCreaturesTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.mana.WhiteManaAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.game.permanent.token.IxalanVampireToken;
|
||||
|
||||
|
|
@ -17,21 +21,31 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LegionsLanding extends CardImpl {
|
||||
public final class LegionsLanding extends TransformingDoubleFacedCard {
|
||||
|
||||
public LegionsLanding(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.a.AdantoTheFirstFort.class;
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.ENCHANTMENT}, new SubType[]{}, "{W}",
|
||||
"Adanto, the First Fort",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.LAND}, new SubType[]{}, ""
|
||||
);
|
||||
|
||||
// Legion's Landing
|
||||
// When Legion's Landing enters the battlefield, create a 1/1 white Vampire creature token with lifelink.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new IxalanVampireToken())));
|
||||
this.getLeftHalfCard().addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new IxalanVampireToken())));
|
||||
|
||||
// When you attack with three or more creatures, transform Legion's Landing.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new AttacksWithCreaturesTriggeredAbility(new TransformSourceEffect(), 3).setTriggerPhrase("When you attack with three or more creatures, "));
|
||||
this.getLeftHalfCard().addAbility(new AttacksWithCreaturesTriggeredAbility(new TransformSourceEffect(), 3)
|
||||
.setTriggerPhrase("When you attack with three or more creatures, "));
|
||||
|
||||
// Adanto, the First Fort
|
||||
// {T}: Add {W}.
|
||||
this.getRightHalfCard().addAbility(new WhiteManaAbility());
|
||||
|
||||
// {2}{W}, {T}: Create a 1/1 white Vampire creature token with lifelink.
|
||||
Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(new IxalanVampireToken()), new ManaCostsImpl<>("{2}{W}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.getRightHalfCard().addAbility(ability);
|
||||
}
|
||||
|
||||
private LegionsLanding(final LegionsLanding card) {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,17 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.Mana;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.common.SagaAbility;
|
||||
import mage.abilities.costs.common.PayLifeCost;
|
||||
import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.mana.ConditionalColoredManaAbility;
|
||||
import mage.abilities.mana.builder.common.InstantOrSorcerySpellManaBuilder;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SagaChapter;
|
||||
import mage.constants.SubType;
|
||||
|
|
@ -18,23 +22,25 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LifeOfToshiroUmezawa extends CardImpl {
|
||||
public final class LifeOfToshiroUmezawa extends TransformingDoubleFacedCard {
|
||||
|
||||
public LifeOfToshiroUmezawa(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
|
||||
|
||||
this.subtype.add(SubType.SAGA);
|
||||
this.secondSideCardClazz = mage.cards.m.MemoryOfToshiro.class;
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.SAGA}, "{1}{B}",
|
||||
"Memory of Toshiro",
|
||||
new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SAMURAI}, "B"
|
||||
);
|
||||
|
||||
// Life of Toshiro Umezawa
|
||||
// (As this Saga enters and after your draw step, add a lore counter.)
|
||||
SagaAbility sagaAbility = new SagaAbility(this);
|
||||
SagaAbility sagaAbility = new SagaAbility(this.getLeftHalfCard());
|
||||
|
||||
// I, II — Choose one —
|
||||
// • Target creature gets +2/+2 until end of turn.
|
||||
// • Target creature gets -1/-1 until end of turn.
|
||||
// • You gain 2 life.
|
||||
sagaAbility.addChapterEffect(
|
||||
this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II, false,
|
||||
this.getLeftHalfCard(), SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II, false,
|
||||
ability -> {
|
||||
ability.addEffect(new BoostTargetEffect(2, 2));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
|
|
@ -45,10 +51,16 @@ public final class LifeOfToshiroUmezawa extends CardImpl {
|
|||
);
|
||||
|
||||
// III — Exile this Saga, then return it to the battlefield transformed under your control.
|
||||
this.addAbility(new TransformAbility());
|
||||
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, new ExileSagaAndReturnTransformedEffect());
|
||||
sagaAbility.addChapterEffect(this.getLeftHalfCard(), SagaChapter.CHAPTER_III, new ExileSagaAndReturnTransformedEffect());
|
||||
this.getLeftHalfCard().addAbility(sagaAbility);
|
||||
|
||||
this.addAbility(sagaAbility);
|
||||
// Memory of Toshiro
|
||||
this.getRightHalfCard().setPT(2, 3);
|
||||
|
||||
// {T}, Pay 1 life: Add {B}. Spend this mana only to cast an instant or sorcery spell.
|
||||
Ability ability = new ConditionalColoredManaAbility(Mana.BlackMana(1), new InstantOrSorcerySpellManaBuilder());
|
||||
ability.addCost(new PayLifeCost(1));
|
||||
this.getRightHalfCard().addAbility(ability);
|
||||
}
|
||||
|
||||
private LifeOfToshiroUmezawa(final LifeOfToshiroUmezawa card) {
|
||||
|
|
|
|||
|
|
@ -1,63 +0,0 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.LoyaltyAbility;
|
||||
import mage.abilities.effects.common.GetEmblemEffect;
|
||||
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
|
||||
import mage.abilities.effects.common.discard.DiscardEachPlayerEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.game.command.emblems.LilianaDefiantNecromancerEmblem;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetadjustment.XManaValueTargetAdjuster;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class LilianaDefiantNecromancer extends CardImpl {
|
||||
|
||||
private static final FilterCreatureCard filter = new FilterCreatureCard("nonlegendary creature card with mana value X from your graveyard");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.not(SuperType.LEGENDARY.getPredicate()));
|
||||
}
|
||||
|
||||
public LilianaDefiantNecromancer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "");
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.LILIANA);
|
||||
this.color.setBlack(true);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
this.setStartingLoyalty(3);
|
||||
|
||||
// +2: Each player discards a card.
|
||||
this.addAbility(new LoyaltyAbility(new DiscardEachPlayerEffect(1, false), 2));
|
||||
|
||||
// -X: Return target nonlegendary creature with converted mana cost X from your graveyard to the battlefield.
|
||||
Ability ability = new LoyaltyAbility(new ReturnFromGraveyardToBattlefieldTargetEffect());
|
||||
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
||||
ability.setTargetAdjuster(new XManaValueTargetAdjuster());
|
||||
this.addAbility(ability);
|
||||
|
||||
//-8: You get an emblem with "Whenever a creature dies, return it to the battlefield under your control at the beginning of the next end step.";
|
||||
this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new LilianaDefiantNecromancerEmblem()), -8));
|
||||
}
|
||||
|
||||
private LilianaDefiantNecromancer(final LilianaDefiantNecromancer card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LilianaDefiantNecromancer copy() {
|
||||
return new LilianaDefiantNecromancer(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,52 +1,76 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.LoyaltyAbility;
|
||||
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.ExileAndReturnSourceEffect;
|
||||
import mage.abilities.effects.common.GetEmblemEffect;
|
||||
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
|
||||
import mage.abilities.effects.common.discard.DiscardEachPlayerEffect;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
import mage.game.command.emblems.LilianaDefiantNecromancerEmblem;
|
||||
import mage.game.permanent.token.ZombieToken;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetadjustment.XManaValueTargetAdjuster;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class LilianaHereticalHealer extends CardImpl {
|
||||
public final class LilianaHereticalHealer extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another nontoken creature you control");
|
||||
private static final FilterCreatureCard graveyardFilter = new FilterCreatureCard("nonlegendary creature card with mana value X from your graveyard");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
filter.add(TokenPredicate.FALSE);
|
||||
graveyardFilter.add(Predicates.not(SuperType.LEGENDARY.getPredicate()));
|
||||
}
|
||||
|
||||
public LilianaHereticalHealer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.CLERIC);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.CLERIC}, "{1}{B}{B}",
|
||||
"Liliana, Defiant Necromancer",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.PLANESWALKER}, new SubType[]{SubType.LILIANA}, "B"
|
||||
);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.l.LilianaDefiantNecromancer.class;
|
||||
this.addAbility(new TransformAbility());
|
||||
// Liliana, Heretical Healer
|
||||
this.getLeftHalfCard().setPT(2, 3);
|
||||
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// Whenever another nontoken creature you control dies, exile Liliana Heretical Healer, then return her to the battlefield transformed under her owner's control. If you do, create a 2/2 black Zombie creature token.
|
||||
this.addAbility(new DiesCreatureTriggeredAbility(new ExileAndReturnSourceEffect(
|
||||
this.getLeftHalfCard().addAbility(new DiesCreatureTriggeredAbility(new ExileAndReturnSourceEffect(
|
||||
PutCards.BATTLEFIELD_TRANSFORMED, Pronoun.SHE, false, new CreateTokenEffect(new ZombieToken())
|
||||
), false, filter));
|
||||
|
||||
// Liliana, Defiant Necromancer
|
||||
this.getRightHalfCard().setStartingLoyalty(3);
|
||||
|
||||
// +2: Each player discards a card.
|
||||
this.getRightHalfCard().addAbility(new LoyaltyAbility(new DiscardEachPlayerEffect(1, false), 2));
|
||||
|
||||
// -X: Return target nonlegendary creature with mana value X from your graveyard to the battlefield.
|
||||
Ability ability = new LoyaltyAbility(new ReturnFromGraveyardToBattlefieldTargetEffect());
|
||||
ability.addTarget(new TargetCardInYourGraveyard(graveyardFilter));
|
||||
ability.setTargetAdjuster(new XManaValueTargetAdjuster());
|
||||
this.getRightHalfCard().addAbility(ability);
|
||||
|
||||
// -8: You get an emblem with "Whenever a creature dies, return it to the battlefield under your control at the beginning of the next end step."
|
||||
this.getRightHalfCard().addAbility(new LoyaltyAbility(new GetEmblemEffect(new LilianaDefiantNecromancerEmblem()), -8));
|
||||
}
|
||||
|
||||
private LilianaHereticalHealer(final LilianaHereticalHealer card) {
|
||||
|
|
|
|||
|
|
@ -1,41 +1,58 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.TapTargetEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.abilities.effects.keyword.ExploreTargetEffect;
|
||||
import mage.abilities.keyword.CraftAbility;
|
||||
import mage.abilities.keyword.FlashAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class LodestoneNeedle extends CardImpl {
|
||||
public final class LodestoneNeedle extends TransformingDoubleFacedCard {
|
||||
|
||||
public LodestoneNeedle(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{U}");
|
||||
this.secondSideCardClazz = mage.cards.g.GuidestoneCompass.class;
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{}, "{1}{U}",
|
||||
"Guidestone Compass",
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{}, "U"
|
||||
);
|
||||
|
||||
// Lodestone Needle
|
||||
// Flash
|
||||
this.addAbility(FlashAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(FlashAbility.getInstance());
|
||||
|
||||
// When Lodestone Needle enters the battlefield, tap up to one target artifact or creature and put two stun counters on it.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect());
|
||||
ability.addEffect(new AddCountersTargetEffect(CounterType.STUN.createInstance(2))
|
||||
.setText("and put two stun counters on it"));
|
||||
ability.addTarget(new TargetPermanent(0, 1, StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_CREATURE));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Craft with artifact {2}{U}
|
||||
this.addAbility(new CraftAbility("{2}{U}"));
|
||||
this.getLeftHalfCard().addAbility(new CraftAbility("{2}{U}"));
|
||||
|
||||
// Guidestone Compass
|
||||
// {1}, {T}: Target creature you control explores. Activate only as a sorcery.
|
||||
Ability compassAbility = new ActivateAsSorceryActivatedAbility(new ExploreTargetEffect(), new GenericManaCost(1));
|
||||
compassAbility.addTarget(new TargetControlledCreaturePermanent());
|
||||
compassAbility.addCost(new TapSourceCost());
|
||||
this.getRightHalfCard().addAbility(compassAbility);
|
||||
}
|
||||
|
||||
private LodestoneNeedle(final LodestoneNeedle card) {
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.YouGainedLifeCondition;
|
||||
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
|
|
@ -22,30 +22,46 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class LoneRider extends CardImpl {
|
||||
public final class LoneRider extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final Condition condition = new YouGainedLifeCondition(ComparisonType.MORE_THAN, 2);
|
||||
|
||||
public LoneRider(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.KNIGHT);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.KNIGHT}, "{1}{W}",
|
||||
"It That Rides as One",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ELDRAZI, SubType.HORROR}, ""
|
||||
);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.i.ItThatRidesAsOne.class;
|
||||
// Lone Rider
|
||||
this.getLeftHalfCard().setPT(1, 1);
|
||||
|
||||
// First strike
|
||||
this.addAbility(FirstStrikeAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(FirstStrikeAbility.getInstance());
|
||||
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// At the beginning of the end step, if you gained 3 or more life this turn, transform Lone Rider.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(
|
||||
TargetController.NEXT, new TransformSourceEffect(), false
|
||||
).withInterveningIf(condition).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
|
||||
Ability ability = new BeginningOfEndStepTriggeredAbility(
|
||||
TargetController.NEXT, new TransformSourceEffect(), false)
|
||||
.withInterveningIf(condition)
|
||||
.addHint(ControllerGainedLifeCount.getHint()
|
||||
);
|
||||
ability.addWatcher(new PlayerGainedLifeWatcher());
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// It That Rides as One
|
||||
this.getRightHalfCard().setPT(4, 4);
|
||||
|
||||
// First strike
|
||||
this.getRightHalfCard().addAbility(FirstStrikeAbility.getInstance());
|
||||
|
||||
// Trample
|
||||
this.getRightHalfCard().addAbility(TrampleAbility.getInstance());
|
||||
|
||||
// Lifelink
|
||||
this.getRightHalfCard().addAbility(LifelinkAbility.getInstance());
|
||||
}
|
||||
|
||||
private LoneRider(final LoneRider card) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,7 @@
|
|||
|
||||
package mage.cards.l;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.CantBlockAbility;
|
||||
import mage.abilities.common.DiesSourceTriggeredAbility;
|
||||
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
|
||||
import mage.abilities.effects.Effect;
|
||||
|
|
@ -12,8 +9,8 @@ import mage.abilities.effects.OneShotEffect;
|
|||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
|
|
@ -22,26 +19,31 @@ import mage.game.Game;
|
|||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
/**
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public final class LoyalCathar extends CardImpl {
|
||||
import java.util.UUID;
|
||||
|
||||
public final class LoyalCathar extends TransformingDoubleFacedCard {
|
||||
|
||||
public LoyalCathar(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{W}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.SOLDIER);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SOLDIER}, "{W}{W}",
|
||||
"Unhallowed Cathar",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ZOMBIE, SubType.SOLDIER}, "B"
|
||||
);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.u.UnhallowedCathar.class;
|
||||
// Loyal Cathar
|
||||
this.getLeftHalfCard().setPT(2, 2);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.addAbility(VigilanceAbility.getInstance());
|
||||
// Vigilance
|
||||
this.getLeftHalfCard().addAbility(VigilanceAbility.getInstance());
|
||||
|
||||
// When Loyal Cathar dies, return it to the battlefield transformed under your control at the beginning of the next end step.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new DiesSourceTriggeredAbility(new LoyalCatharEffect()));
|
||||
this.getLeftHalfCard().addAbility(new DiesSourceTriggeredAbility(new LoyalCatharEffect()));
|
||||
|
||||
// Unhallowed Cathar
|
||||
this.getRightHalfCard().setPT(2, 1);
|
||||
|
||||
// Unhallowed Cathar can't block.
|
||||
this.getRightHalfCard().addAbility(new CantBlockAbility());
|
||||
}
|
||||
|
||||
private LoyalCathar(final LoyalCathar card) {
|
||||
|
|
|
|||
|
|
@ -1,53 +1,66 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.common.ExileXFromYourGraveCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.costs.mana.VariableManaCost;
|
||||
import mage.abilities.effects.ReplacementEffectImpl;
|
||||
import mage.abilities.effects.common.CopyEffect;
|
||||
import mage.abilities.effects.common.InfoEffect;
|
||||
import mage.abilities.effects.common.MillCardsControllerEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
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.cards.*;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.ExileZone;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.PermanentCard;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetCard;
|
||||
import mage.target.common.TargetCardInExile;
|
||||
import mage.util.CardUtil;
|
||||
import mage.util.functions.CopyApplier;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LudevicNecrogenius extends CardImpl {
|
||||
public final class LudevicNecrogenius extends TransformingDoubleFacedCard {
|
||||
|
||||
public LudevicNecrogenius(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{B}");
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WIZARD}, "{U}{B}",
|
||||
"Olag, Ludevic's Hubris",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ZOMBIE}, "UB"
|
||||
);
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WIZARD);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
this.secondSideCardClazz = mage.cards.o.OlagLudevicsHubris.class;
|
||||
// Ludevic, Necrogenius
|
||||
this.getLeftHalfCard().setPT(2, 3);
|
||||
|
||||
// Whenever Ludevic, Necrogenius enters the battlefield or attacks, mill a card.
|
||||
this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new MillCardsControllerEffect(1)));
|
||||
this.getLeftHalfCard().addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new MillCardsControllerEffect(1)));
|
||||
|
||||
// {X}{U}{U}{B}{B}, Exile X creature cards from your graveyard: Transform Ludevic, Necrogenius. X can't be zero. Activate only as a sorcery.
|
||||
this.addAbility(new TransformAbility());
|
||||
Ability ability = new ActivateAsSorceryActivatedAbility(
|
||||
new TransformSourceEffect(), new ManaCostsImpl<>("{X}{U}{U}{B}{B}")
|
||||
);
|
||||
ability.addEffect(new InfoEffect("X can't be 0"));
|
||||
ability.addCost(new ExileXFromYourGraveCost(StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD));
|
||||
CardUtil.castStream(ability.getCosts().stream(), VariableManaCost.class).forEach(cost -> cost.setMinX(1));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Olag, Ludevic's Hubris
|
||||
this.getRightHalfCard().setPT(4, 4);
|
||||
|
||||
// As this creature transforms in Olag, Ludevic's Hubris, it becomes a copy of a creature card exiled with it, except its name is Olag, Ludevic's Hubris, it's 4/4, and it's a legendary blue and black Zombie in addition to its other colors and types. Put a number of +1/+1 counters on Olag equal to the number of creature cards exiled with it.
|
||||
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new OlagLudevicsHubrisEffect()));
|
||||
}
|
||||
|
||||
private LudevicNecrogenius(final LudevicNecrogenius card) {
|
||||
|
|
@ -59,3 +72,92 @@ public final class LudevicNecrogenius extends CardImpl {
|
|||
return new LudevicNecrogenius(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class OlagLudevicsHubrisEffect extends ReplacementEffectImpl {
|
||||
|
||||
OlagLudevicsHubrisEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
staticText = "as this creature transforms into {this}, it becomes a copy of a creature card exiled with it, " +
|
||||
"except its name is Olag, Ludevic's Hubris, it's 4/4, and it's a legendary blue and black " +
|
||||
"Zombie in addition to its other colors and types. Put a number of +1/+1 counters on {this} " +
|
||||
"equal to the number of creature cards exiled with it";
|
||||
}
|
||||
|
||||
private OlagLudevicsHubrisEffect(final OlagLudevicsHubrisEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
|
||||
ExileZone exileZone = game.getExile().getExileZone(CardUtil.getExileZoneId(game, source));
|
||||
if (exileZone == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Cards cards = new CardsImpl(exileZone);
|
||||
cards.removeIf(uuid -> !game.getCard(uuid).isCreature(game));
|
||||
if (cards.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Card copyFromCard = getCard(cards, source, game);
|
||||
if (copyFromCard == null) {
|
||||
return false;
|
||||
}
|
||||
Permanent newBluePrint = new PermanentCard(copyFromCard, source.getControllerId(), game);
|
||||
newBluePrint.assignNewId();
|
||||
CopyApplier applier = new OlagLudevicsHubrisCopyApplier();
|
||||
applier.apply(game, newBluePrint, source, source.getSourceId());
|
||||
CopyEffect copyEffect = new CopyEffect(Duration.Custom, newBluePrint, source.getSourceId());
|
||||
copyEffect.setApplier(applier);
|
||||
Ability newAbility = source.copy();
|
||||
copyEffect.init(newAbility, game);
|
||||
game.addEffect(copyEffect, newAbility);
|
||||
return false;
|
||||
}
|
||||
|
||||
private Card getCard(Cards cards, Ability source, Game game) {
|
||||
if (cards.size() == 1) {
|
||||
return cards.getRandom(game);
|
||||
}
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
if (player == null) {
|
||||
return cards.getRandom(game);
|
||||
}
|
||||
TargetCard target = new TargetCardInExile(StaticFilters.FILTER_CARD);
|
||||
player.choose(outcome, target, source, game);
|
||||
return cards.get(target.getFirstTarget(), game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checksEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.TRANSFORMING;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||
return source.getSourceId().equals(event.getTargetId())
|
||||
&& source.getSourcePermanentIfItStillExists(game) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OlagLudevicsHubrisEffect copy() {
|
||||
return new OlagLudevicsHubrisEffect(this);
|
||||
}
|
||||
}
|
||||
|
||||
class OlagLudevicsHubrisCopyApplier extends CopyApplier {
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, MageObject blueprint, Ability source, UUID copyToObjectId) {
|
||||
blueprint.setName("Olag, Ludevic's Hubris");
|
||||
blueprint.addSuperType(SuperType.LEGENDARY);
|
||||
blueprint.addSubType(SubType.ZOMBIE);
|
||||
blueprint.getColor().setBlue(true);
|
||||
blueprint.getColor().setBlack(true);
|
||||
blueprint.getPower().setModifiedBaseValue(4);
|
||||
blueprint.getToughness().setModifiedBaseValue(4);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,41 +0,0 @@
|
|||
|
||||
package mage.cards.l;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
*/
|
||||
public final class LudevicsAbomination extends CardImpl {
|
||||
|
||||
public LudevicsAbomination(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
|
||||
this.subtype.add(SubType.LIZARD);
|
||||
this.subtype.add(SubType.HORROR);
|
||||
this.color.setBlue(true);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
this.power = new MageInt(13);
|
||||
this.toughness = new MageInt(13);
|
||||
|
||||
this.addAbility(TrampleAbility.getInstance());
|
||||
}
|
||||
|
||||
private LudevicsAbomination(final LudevicsAbomination card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LudevicsAbomination copy() {
|
||||
return new LudevicsAbomination(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
|
|
@ -11,9 +10,9 @@ import mage.abilities.effects.common.RemoveAllCountersSourceEffect;
|
|||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.keyword.DefenderAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
|
|
@ -23,23 +22,24 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
public final class LudevicsTestSubject extends CardImpl {
|
||||
public final class LudevicsTestSubject extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final Condition condition = new SourceHasCounterCondition(CounterType.HATCHLING, 5);
|
||||
|
||||
public LudevicsTestSubject(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
|
||||
this.subtype.add(SubType.LIZARD, SubType.EGG);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.LIZARD, SubType.EGG}, "{1}{U}",
|
||||
"Ludevic's Abomination",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.LIZARD, SubType.HORROR}, "U"
|
||||
);
|
||||
|
||||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(3);
|
||||
// Ludevic's Test Subject
|
||||
this.getLeftHalfCard().setPT(0, 3);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.l.LudevicsAbomination.class;
|
||||
|
||||
this.addAbility(DefenderAbility.getInstance());
|
||||
// Defender
|
||||
this.getLeftHalfCard().addAbility(DefenderAbility.getInstance());
|
||||
|
||||
// {1}{U}: Put a hatchling counter on Ludevic's Test Subject. Then if there are five or more hatchling counters on it, remove all of them and transform it.
|
||||
this.addAbility(new TransformAbility());
|
||||
Ability ability = new SimpleActivatedAbility(
|
||||
new AddCountersSourceEffect(CounterType.HATCHLING.createInstance()), new ManaCostsImpl<>("{1}{U}")
|
||||
);
|
||||
|
|
@ -47,7 +47,13 @@ public final class LudevicsTestSubject extends CardImpl {
|
|||
new RemoveAllCountersSourceEffect(CounterType.HATCHLING), condition,
|
||||
"Then if there are five or more hatchling counters on it, remove all of them and transform it"
|
||||
).addEffect(new TransformSourceEffect()));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Ludevic's Abomination
|
||||
this.getRightHalfCard().setPT(13, 13);
|
||||
|
||||
// Trample
|
||||
this.getRightHalfCard().addAbility(TrampleAbility.getInstance());
|
||||
}
|
||||
|
||||
private LudevicsTestSubject(final LudevicsTestSubject card) {
|
||||
|
|
|
|||
|
|
@ -1,49 +0,0 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.LeavesBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LuminousPhantom extends CardImpl {
|
||||
|
||||
public LuminousPhantom(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.SPIRIT);
|
||||
this.subtype.add(SubType.CLERIC);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
this.color.setWhite(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever another creature you control leaves the battlefield, you gain 1 life.
|
||||
this.addAbility(new LeavesBattlefieldAllTriggeredAbility(new GainLifeEffect(1), StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
|
||||
|
||||
// If Luminous Phantom would be put into a graveyard from anywhere, exile it instead.
|
||||
this.addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private LuminousPhantom(final LuminousPhantom card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LuminousPhantom copy() {
|
||||
return new LuminousPhantom(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
package mage.cards.l;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.common.LeavesBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.keyword.DisturbAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.StaticFilters;
|
||||
|
|
@ -16,24 +16,39 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LunarchVeteran extends CardImpl {
|
||||
public final class LunarchVeteran extends TransformingDoubleFacedCard {
|
||||
|
||||
public LunarchVeteran(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.CLERIC}, "{W}",
|
||||
"Luminous Phantom",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.SPIRIT, SubType.CLERIC}, "W"
|
||||
);
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.CLERIC);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
this.secondSideCardClazz = mage.cards.l.LuminousPhantom.class;
|
||||
// Lunarch Veteran
|
||||
this.getLeftHalfCard().setPT(1, 1);
|
||||
|
||||
// Whenever another creature you control enters, you gain 1 life.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
this.getLeftHalfCard().addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
new GainLifeEffect(1), StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE
|
||||
));
|
||||
|
||||
// Disturb {1}{W}
|
||||
this.addAbility(new DisturbAbility(this, "{1}{W}"));
|
||||
this.getLeftHalfCard().addAbility(new DisturbAbility(this, "{1}{W}"));
|
||||
|
||||
// Luminous Phantom
|
||||
this.getRightHalfCard().setPT(1, 1);
|
||||
|
||||
// Flying
|
||||
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever another creature you control leaves the battlefield, you gain 1 life.
|
||||
this.getRightHalfCard().addAbility(new LeavesBattlefieldAllTriggeredAbility(
|
||||
new GainLifeEffect(1), StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL
|
||||
));
|
||||
|
||||
// If Luminous Phantom would be put into a graveyard from anywhere, exile it instead.
|
||||
this.getRightHalfCard().addAbility(DisturbAbility.makeBackAbility());
|
||||
}
|
||||
|
||||
private LunarchVeteran(final LunarchVeteran card) {
|
||||
|
|
|
|||
|
|
@ -1,45 +0,0 @@
|
|||
package mage.cards.m;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.Mana;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.common.PayLifeCost;
|
||||
import mage.abilities.mana.ConditionalColoredManaAbility;
|
||||
import mage.abilities.mana.builder.common.InstantOrSorcerySpellManaBuilder;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class MemoryOfToshiro extends CardImpl {
|
||||
|
||||
public MemoryOfToshiro(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.SAMURAI);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
this.color.setBlack(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// {T}, Pay 1 life: Add {B}. Spend this mana only to cast an instant or sorcery spell.
|
||||
Ability ability = new ConditionalColoredManaAbility(Mana.BlackMana(1), new InstantOrSorcerySpellManaBuilder());
|
||||
ability.addCost(new PayLifeCost(1));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private MemoryOfToshiro(final MemoryOfToshiro card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MemoryOfToshiro copy() {
|
||||
return new MemoryOfToshiro(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
package mage.cards.o;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.ReplacementEffectImpl;
|
||||
import mage.abilities.effects.common.CopyEffect;
|
||||
import mage.cards.*;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.ExileZone;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.PermanentCard;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetCard;
|
||||
import mage.target.common.TargetCardInExile;
|
||||
import mage.util.CardUtil;
|
||||
import mage.util.functions.CopyApplier;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class OlagLudevicsHubris extends CardImpl {
|
||||
|
||||
public OlagLudevicsHubris(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.ZOMBIE);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
this.color.setBlue(true);
|
||||
this.color.setBlack(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// As this creature transforms in Olag, Ludevic's Hubris, it becomes a copy of a creature card exiled with it, except its name is Olag, Ludevic's Hubris, it's 4/4, and it's a legendary blue and black Zombie in addition to its other colors and types. Put a number of +1/+1 counters on Olag equal to the number of creature cards exiled with it.
|
||||
this.addAbility(new SimpleStaticAbility(new OlagLudevicsHubrisEffect()));
|
||||
}
|
||||
|
||||
private OlagLudevicsHubris(final OlagLudevicsHubris card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OlagLudevicsHubris copy() {
|
||||
return new OlagLudevicsHubris(this);
|
||||
}
|
||||
}
|
||||
|
||||
class OlagLudevicsHubrisEffect extends ReplacementEffectImpl {
|
||||
|
||||
OlagLudevicsHubrisEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||
staticText = "as this creature transforms into {this}, it becomes a copy of a creature card exiled with it, " +
|
||||
"except its name is Olag, Ludevic's Hubris, it's 4/4, and it's a legendary blue and black " +
|
||||
"Zombie in addition to its other colors and types. Put a number of +1/+1 counters on {this} " +
|
||||
"equal to the number of creature cards exiled with it";
|
||||
}
|
||||
|
||||
private OlagLudevicsHubrisEffect(final OlagLudevicsHubrisEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
|
||||
ExileZone exileZone = game.getExile().getExileZone(CardUtil.getExileZoneId(game, source));
|
||||
if (exileZone == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Cards cards = new CardsImpl(exileZone);
|
||||
cards.removeIf(uuid -> !game.getCard(uuid).isCreature(game));
|
||||
if (cards.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Card copyFromCard = getCard(cards, source, game);
|
||||
if (copyFromCard == null) {
|
||||
return false;
|
||||
}
|
||||
Permanent newBluePrint = new PermanentCard(copyFromCard, source.getControllerId(), game);
|
||||
newBluePrint.assignNewId();
|
||||
CopyApplier applier = new OlagLudevicsHubrisCopyApplier();
|
||||
applier.apply(game, newBluePrint, source, source.getSourceId());
|
||||
CopyEffect copyEffect = new CopyEffect(Duration.Custom, newBluePrint, source.getSourceId());
|
||||
copyEffect.setApplier(applier);
|
||||
Ability newAbility = source.copy();
|
||||
copyEffect.init(newAbility, game);
|
||||
game.addEffect(copyEffect, newAbility);
|
||||
return false;
|
||||
}
|
||||
|
||||
private Card getCard(Cards cards, Ability source, Game game) {
|
||||
if (cards.size() == 1) {
|
||||
return cards.getRandom(game);
|
||||
}
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
if (player == null) {
|
||||
return cards.getRandom(game);
|
||||
}
|
||||
TargetCard target = new TargetCardInExile(StaticFilters.FILTER_CARD);
|
||||
player.choose(outcome, target, source, game);
|
||||
return cards.get(target.getFirstTarget(), game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checksEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.TRANSFORMING;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||
return source.getSourceId().equals(event.getTargetId())
|
||||
&& source.getSourcePermanentIfItStillExists(game) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OlagLudevicsHubrisEffect copy() {
|
||||
return new OlagLudevicsHubrisEffect(this);
|
||||
}
|
||||
}
|
||||
|
||||
class OlagLudevicsHubrisCopyApplier extends CopyApplier {
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, MageObject blueprint, Ability source, UUID copyToObjectId) {
|
||||
blueprint.setName("Olag, Ludevic's Hubris");
|
||||
blueprint.addSuperType(SuperType.LEGENDARY);
|
||||
blueprint.addSubType(SubType.ZOMBIE);
|
||||
blueprint.getColor().setBlue(true);
|
||||
blueprint.getColor().setBlack(true);
|
||||
blueprint.getPower().setModifiedBaseValue(4);
|
||||
blueprint.getToughness().setModifiedBaseValue(4);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
public final class SilverpeltWerewolf extends CardImpl {
|
||||
|
||||
public SilverpeltWerewolf(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, null);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.color.setGreen(true);
|
||||
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(5);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
// Whenever Silverpelt Werewolf deals combat damage to a player, draw a card.
|
||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(1), false));
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Silverpelt Werewolf.
|
||||
this.addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private SilverpeltWerewolf(final SilverpeltWerewolf card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SilverpeltWerewolf copy() {
|
||||
return new SilverpeltWerewolf(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
|
||||
package mage.cards.u;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.CantBlockAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public final class UnhallowedCathar extends CardImpl {
|
||||
|
||||
public UnhallowedCathar(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
|
||||
this.subtype.add(SubType.ZOMBIE);
|
||||
this.subtype.add(SubType.SOLDIER);
|
||||
this.color.setBlack(true);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// Unhallowed Cathar can't block.
|
||||
this.addAbility(new CantBlockAbility());
|
||||
}
|
||||
|
||||
private UnhallowedCathar(final UnhallowedCathar card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UnhallowedCathar copy() {
|
||||
return new UnhallowedCathar(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -22,7 +22,6 @@ public final class CommanderCollectionBlack extends ExpansionSet {
|
|||
|
||||
cards.add(new SetCardInfo("Command Tower", 8, Rarity.RARE, mage.cards.c.CommandTower.class));
|
||||
cards.add(new SetCardInfo("Ghoulcaller Gisa", 2, Rarity.MYTHIC, mage.cards.g.GhoulcallerGisa.class));
|
||||
cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 1, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class));
|
||||
cards.add(new SetCardInfo("Liliana, Heretical Healer", 1, Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class));
|
||||
cards.add(new SetCardInfo("Ophiomancer", 3, Rarity.RARE, mage.cards.o.Ophiomancer.class));
|
||||
cards.add(new SetCardInfo("Phyrexian Arena", 4, Rarity.RARE, mage.cards.p.PhyrexianArena.class));
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.sets;
|
||||
|
||||
import mage.cards.Card;
|
||||
|
|
@ -168,7 +167,6 @@ public final class DarkAscension extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Shriekgeist", 49, Rarity.COMMON, mage.cards.s.Shriekgeist.class));
|
||||
cards.add(new SetCardInfo("Sightless Ghoul", 73, Rarity.COMMON, mage.cards.s.SightlessGhoul.class));
|
||||
cards.add(new SetCardInfo("Silverclaw Griffin", 21, Rarity.COMMON, mage.cards.s.SilverclawGriffin.class));
|
||||
cards.add(new SetCardInfo("Silverpelt Werewolf", 122, Rarity.UNCOMMON, mage.cards.s.SilverpeltWerewolf.class));
|
||||
cards.add(new SetCardInfo("Skillful Lunge", 22, Rarity.COMMON, mage.cards.s.SkillfulLunge.class));
|
||||
cards.add(new SetCardInfo("Skirsdag Flayer", 74, Rarity.UNCOMMON, mage.cards.s.SkirsdagFlayer.class));
|
||||
cards.add(new SetCardInfo("Somberwald Dryad", 126, Rarity.COMMON, mage.cards.s.SomberwaldDryad.class));
|
||||
|
|
@ -191,7 +189,6 @@ public final class DarkAscension extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Tragic Slip", 76, Rarity.COMMON, mage.cards.t.TragicSlip.class));
|
||||
cards.add(new SetCardInfo("Ulvenwald Bear", 129, Rarity.COMMON, mage.cards.u.UlvenwaldBear.class));
|
||||
cards.add(new SetCardInfo("Undying Evil", 77, Rarity.COMMON, mage.cards.u.UndyingEvil.class));
|
||||
cards.add(new SetCardInfo("Unhallowed Cathar", 13, Rarity.COMMON, mage.cards.u.UnhallowedCathar.class));
|
||||
cards.add(new SetCardInfo("Vault of the Archangel", 158, Rarity.RARE, mage.cards.v.VaultOfTheArchangel.class));
|
||||
cards.add(new SetCardInfo("Vengeful Vampire", 78, Rarity.UNCOMMON, mage.cards.v.VengefulVampire.class));
|
||||
cards.add(new SetCardInfo("Village Survivors", 130, Rarity.UNCOMMON, mage.cards.v.VillageSurvivors.class));
|
||||
|
|
@ -244,8 +241,8 @@ class DarkAscensionCollator implements BoosterCollator {
|
|||
private final CardRun land = new CardRun(false, "ISD_250", "ISD_251", "ISD_252", "ISD_253", "ISD_254", "ISD_255", "ISD_256", "ISD_257", "ISD_258", "ISD_259", "ISD_260", "ISD_261", "ISD_262", "ISD_263", "ISD_264");
|
||||
|
||||
private final BoosterStructure AAAAABBBB = new BoosterStructure(
|
||||
commonA, commonA, commonA, commonA, commonA,
|
||||
commonB, commonB, commonB, commonB
|
||||
commonA, commonA, commonA, commonA, commonA,
|
||||
commonB, commonB, commonB, commonB
|
||||
);
|
||||
private final BoosterStructure AAB = new BoosterStructure(uncommonA, uncommonA, uncommonB);
|
||||
private final BoosterStructure ABB = new BoosterStructure(uncommonA, uncommonB, uncommonB);
|
||||
|
|
|
|||
|
|
@ -153,7 +153,6 @@ public final class EldritchMoon extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Ironwright's Cleansing", 32, Rarity.COMMON, mage.cards.i.IronwrightsCleansing.class));
|
||||
cards.add(new SetCardInfo("Ishkanah, Grafwidow", 162, Rarity.MYTHIC, mage.cards.i.IshkanahGrafwidow.class));
|
||||
cards.add(new SetCardInfo("It of the Horrid Swarm", 8, Rarity.COMMON, mage.cards.i.ItOfTheHorridSwarm.class));
|
||||
cards.add(new SetCardInfo("It That Rides as One", 33, Rarity.UNCOMMON, mage.cards.i.ItThatRidesAsOne.class));
|
||||
cards.add(new SetCardInfo("Kessig Prowler", 163, Rarity.UNCOMMON, mage.cards.k.KessigProwler.class));
|
||||
cards.add(new SetCardInfo("Laboratory Brute", 67, Rarity.COMMON, mage.cards.l.LaboratoryBrute.class));
|
||||
cards.add(new SetCardInfo("Lashweed Lurker", 9, Rarity.UNCOMMON, mage.cards.l.LashweedLurker.class));
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ public final class FromTheVaultTransform extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 12, Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class));
|
||||
cards.add(new SetCardInfo("Kytheon, Hero of Akros", 13, Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class));
|
||||
cards.add(new SetCardInfo("Liliana, Heretical Healer", 14, Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class));
|
||||
cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 14, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class));
|
||||
cards.add(new SetCardInfo("Nissa, Vastwood Seer", 15, Rarity.MYTHIC, mage.cards.n.NissaVastwoodSeer.class));
|
||||
cards.add(new SetCardInfo("Nissa, Sage Animist", 15, Rarity.MYTHIC, mage.cards.n.NissaSageAnimist.class));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -173,7 +173,6 @@ public final class Innistrad extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Lantern Spirit", 62, Rarity.UNCOMMON, mage.cards.l.LanternSpirit.class));
|
||||
cards.add(new SetCardInfo("Liliana of the Veil", 105, Rarity.MYTHIC, mage.cards.l.LilianaOfTheVeil.class));
|
||||
cards.add(new SetCardInfo("Lost in the Mist", 63, Rarity.COMMON, mage.cards.l.LostInTheMist.class));
|
||||
cards.add(new SetCardInfo("Ludevic's Abomination", 64, Rarity.RARE, mage.cards.l.LudevicsAbomination.class));
|
||||
cards.add(new SetCardInfo("Ludevic's Test Subject", 64, Rarity.RARE, mage.cards.l.LudevicsTestSubject.class));
|
||||
cards.add(new SetCardInfo("Lumberknot", 191, Rarity.UNCOMMON, mage.cards.l.Lumberknot.class));
|
||||
cards.add(new SetCardInfo("Make a Wish", 192, Rarity.UNCOMMON, mage.cards.m.MakeAWish.class));
|
||||
|
|
|
|||
|
|
@ -281,12 +281,10 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Lacerate Flesh", 166, Rarity.COMMON, mage.cards.l.LacerateFlesh.class));
|
||||
cards.add(new SetCardInfo("Laid to Rest", 207, Rarity.UNCOMMON, mage.cards.l.LaidToRest.class));
|
||||
cards.add(new SetCardInfo("Lambholt Raconteur", 167, Rarity.UNCOMMON, mage.cards.l.LambholtRaconteur.class));
|
||||
cards.add(new SetCardInfo("Lambholt Ravager", 167, Rarity.UNCOMMON, mage.cards.l.LambholtRavager.class));
|
||||
cards.add(new SetCardInfo("Lantern Bearer", 66, Rarity.COMMON, mage.cards.l.LanternBearer.class));
|
||||
cards.add(new SetCardInfo("Lantern Flare", 23, Rarity.RARE, mage.cards.l.LanternFlare.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lantern Flare", 351, Rarity.RARE, mage.cards.l.LanternFlare.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lantern of the Lost", 259, Rarity.UNCOMMON, mage.cards.l.LanternOfTheLost.class));
|
||||
cards.add(new SetCardInfo("Lanterns' Lift", 66, Rarity.COMMON, mage.cards.l.LanternsLift.class));
|
||||
cards.add(new SetCardInfo("Lightning Wolf", 168, Rarity.COMMON, mage.cards.l.LightningWolf.class));
|
||||
cards.add(new SetCardInfo("Lunar Rejection", 67, Rarity.UNCOMMON, mage.cards.l.LunarRejection.class));
|
||||
cards.add(new SetCardInfo("Magma Pummeler", 169, Rarity.UNCOMMON, mage.cards.m.MagmaPummeler.class));
|
||||
|
|
|
|||
|
|
@ -324,11 +324,9 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Laid to Rest", 474, Rarity.UNCOMMON, mage.cards.l.LaidToRest.class));
|
||||
cards.add(new SetCardInfo("Lambholt Harrier", 145, Rarity.COMMON, mage.cards.l.LambholtHarrier.class));
|
||||
cards.add(new SetCardInfo("Lambholt Raconteur", 434, Rarity.UNCOMMON, mage.cards.l.LambholtRaconteur.class));
|
||||
cards.add(new SetCardInfo("Lambholt Ravager", 434, Rarity.UNCOMMON, mage.cards.l.LambholtRavager.class));
|
||||
cards.add(new SetCardInfo("Lantern Bearer", 333, Rarity.COMMON, mage.cards.l.LanternBearer.class));
|
||||
cards.add(new SetCardInfo("Lantern Flare", 290, Rarity.RARE, mage.cards.l.LanternFlare.class));
|
||||
cards.add(new SetCardInfo("Lantern of the Lost", 526, Rarity.UNCOMMON, mage.cards.l.LanternOfTheLost.class));
|
||||
cards.add(new SetCardInfo("Lanterns' Lift", 333, Rarity.COMMON, mage.cards.l.LanternsLift.class));
|
||||
cards.add(new SetCardInfo("Larder Zombie", 58, Rarity.COMMON, mage.cards.l.LarderZombie.class));
|
||||
cards.add(new SetCardInfo("Lier, Disciple of the Drowned", 59, Rarity.MYTHIC, mage.cards.l.LierDiscipleOfTheDrowned.class));
|
||||
cards.add(new SetCardInfo("Liesa, Forgotten Archangel", 232, Rarity.RARE, mage.cards.l.LiesaForgottenArchangel.class));
|
||||
|
|
@ -338,7 +336,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Lord of the Forsaken", 110, Rarity.MYTHIC, mage.cards.l.LordOfTheForsaken.class));
|
||||
cards.add(new SetCardInfo("Loyal Gryff", 26, Rarity.UNCOMMON, mage.cards.l.LoyalGryff.class));
|
||||
cards.add(new SetCardInfo("Ludevic, Necrogenius", 233, Rarity.RARE, mage.cards.l.LudevicNecrogenius.class));
|
||||
cards.add(new SetCardInfo("Luminous Phantom", 27, Rarity.COMMON, mage.cards.l.LuminousPhantom.class));
|
||||
cards.add(new SetCardInfo("Lunar Frenzy", 147, Rarity.UNCOMMON, mage.cards.l.LunarFrenzy.class));
|
||||
cards.add(new SetCardInfo("Lunar Rejection", 334, Rarity.UNCOMMON, mage.cards.l.LunarRejection.class));
|
||||
cards.add(new SetCardInfo("Lunarch Veteran", 27, Rarity.COMMON, mage.cards.l.LunarchVeteran.class));
|
||||
|
|
@ -384,7 +381,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Odious Witch", 394, Rarity.COMMON, mage.cards.o.OdiousWitch.class));
|
||||
cards.add(new SetCardInfo("Odric's Outrider", 29, Rarity.UNCOMMON, mage.cards.o.OdricsOutrider.class));
|
||||
cards.add(new SetCardInfo("Odric, Blood-Cursed", 510, Rarity.RARE, mage.cards.o.OdricBloodCursed.class));
|
||||
cards.add(new SetCardInfo("Olag, Ludevic's Hubris", 233, Rarity.RARE, mage.cards.o.OlagLudevicsHubris.class));
|
||||
cards.add(new SetCardInfo("Old Rutstein", 511, Rarity.RARE, mage.cards.o.OldRutstein.class));
|
||||
cards.add(new SetCardInfo("Old Stickfingers", 234, Rarity.RARE, mage.cards.o.OldStickfingers.class));
|
||||
cards.add(new SetCardInfo("Olivia's Attendants", 439, Rarity.RARE, mage.cards.o.OliviasAttendants.class));
|
||||
|
|
|
|||
|
|
@ -259,7 +259,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Loyal Gryff", 26, Rarity.UNCOMMON, mage.cards.l.LoyalGryff.class));
|
||||
cards.add(new SetCardInfo("Ludevic, Necrogenius", 233, Rarity.RARE, mage.cards.l.LudevicNecrogenius.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ludevic, Necrogenius", 320, Rarity.RARE, mage.cards.l.LudevicNecrogenius.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Luminous Phantom", 27, Rarity.COMMON, mage.cards.l.LuminousPhantom.class));
|
||||
cards.add(new SetCardInfo("Lunar Frenzy", 147, Rarity.UNCOMMON, mage.cards.l.LunarFrenzy.class));
|
||||
cards.add(new SetCardInfo("Lunarch Veteran", 27, Rarity.COMMON, mage.cards.l.LunarchVeteran.class));
|
||||
cards.add(new SetCardInfo("Malevolent Hermit", 336, Rarity.RARE, mage.cards.m.MalevolentHermit.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -291,8 +290,6 @@ public final class InnistradMidnightHunt extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Novice Occultist", 117, Rarity.COMMON, mage.cards.n.NoviceOccultist.class));
|
||||
cards.add(new SetCardInfo("Obsessive Astronomer", 152, Rarity.UNCOMMON, mage.cards.o.ObsessiveAstronomer.class));
|
||||
cards.add(new SetCardInfo("Odric's Outrider", 29, Rarity.UNCOMMON, mage.cards.o.OdricsOutrider.class));
|
||||
cards.add(new SetCardInfo("Olag, Ludevic's Hubris", 233, Rarity.RARE, mage.cards.o.OlagLudevicsHubris.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Olag, Ludevic's Hubris", 320, Rarity.RARE, mage.cards.o.OlagLudevicsHubris.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Old Stickfingers", 234, Rarity.RARE, mage.cards.o.OldStickfingers.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Old Stickfingers", 321, Rarity.RARE, mage.cards.o.OldStickfingers.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Olivia's Midnight Ambush", 118, Rarity.COMMON, mage.cards.o.OliviasMidnightAmbush.class));
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ public class InnistradPromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Diregraf Ghoul", 97, Rarity.UNCOMMON, mage.cards.d.DiregrafGhoul.class));
|
||||
cards.add(new SetCardInfo("Elite Inquisitor", 13, Rarity.RARE, mage.cards.e.EliteInquisitor.class));
|
||||
cards.add(new SetCardInfo("Howlpack Alpha", "193*", Rarity.RARE, mage.cards.h.HowlpackAlpha.class));
|
||||
cards.add(new SetCardInfo("Ludevic's Abomination", "64*", Rarity.RARE, mage.cards.l.LudevicsAbomination.class));
|
||||
cards.add(new SetCardInfo("Ludevic's Test Subject", "64*", Rarity.RARE, mage.cards.l.LudevicsTestSubject.class));
|
||||
cards.add(new SetCardInfo("Mayor of Avabruck", "193*", Rarity.RARE, mage.cards.m.MayorOfAvabruck.class));
|
||||
|
||||
|
|
|
|||
|
|
@ -307,7 +307,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Laboratory Maniac", 359, Rarity.UNCOMMON, mage.cards.l.LaboratoryManiac.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Laboratory Maniac", 71, Rarity.UNCOMMON, mage.cards.l.LaboratoryManiac.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lantern Bearer", 72, Rarity.COMMON, mage.cards.l.LanternBearer.class));
|
||||
cards.add(new SetCardInfo("Lanterns' Lift", 72, Rarity.COMMON, mage.cards.l.LanternsLift.class));
|
||||
cards.add(new SetCardInfo("Liesa, Forgotten Archangel", 243, Rarity.RARE, mage.cards.l.LiesaForgottenArchangel.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Liesa, Forgotten Archangel", 433, Rarity.RARE, mage.cards.l.LiesaForgottenArchangel.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lightning Axe", 162, Rarity.UNCOMMON, mage.cards.l.LightningAxe.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -318,8 +317,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Lingering Souls", 30, Rarity.UNCOMMON, mage.cards.l.LingeringSouls.class));
|
||||
cards.add(new SetCardInfo("Lumberknot", 206, Rarity.UNCOMMON, mage.cards.l.Lumberknot.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lumberknot", 414, Rarity.UNCOMMON, mage.cards.l.Lumberknot.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Luminous Phantom", 32, Rarity.COMMON, mage.cards.l.LuminousPhantom.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Luminous Phantom", 450, Rarity.COMMON, mage.cards.l.LuminousPhantom.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lunarch Mantle", 31, Rarity.COMMON, mage.cards.l.LunarchMantle.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lunarch Mantle", 344, Rarity.COMMON, mage.cards.l.LunarchMantle.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Lunarch Veteran", 32, Rarity.COMMON, mage.cards.l.LunarchVeteran.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ public final class Ixalan extends ExpansionSet {
|
|||
this.numBoosterDoubleFaced = -1;
|
||||
this.maxCardNumberInBooster = 279;
|
||||
|
||||
cards.add(new SetCardInfo("Adanto, the First Fort", 22, Rarity.RARE, mage.cards.a.AdantoTheFirstFort.class));
|
||||
cards.add(new SetCardInfo("Adanto Vanguard", 1, Rarity.UNCOMMON, mage.cards.a.AdantoVanguard.class));
|
||||
cards.add(new SetCardInfo("Admiral Beckett Brass", 217, Rarity.MYTHIC, mage.cards.a.AdmiralBeckettBrass.class));
|
||||
cards.add(new SetCardInfo("Air Elemental", 45, Rarity.UNCOMMON, mage.cards.a.AirElemental.class));
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ public class IxalanPromos extends ExpansionSet {
|
|||
this.hasBoosters = false;
|
||||
this.hasBasicLands = false;
|
||||
|
||||
cards.add(new SetCardInfo("Adanto, the First Fort", "22s", Rarity.RARE, mage.cards.a.AdantoTheFirstFort.class));
|
||||
cards.add(new SetCardInfo("Admiral Beckett Brass", "217s", Rarity.MYTHIC, mage.cards.a.AdmiralBeckettBrass.class));
|
||||
cards.add(new SetCardInfo("Angrath's Marauders", "132s", Rarity.RARE, mage.cards.a.AngrathsMarauders.class));
|
||||
cards.add(new SetCardInfo("Arcane Adaptation", "46p", Rarity.RARE, mage.cards.a.ArcaneAdaptation.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -146,5 +145,5 @@ public class IxalanPromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Wakening Sun's Avatar", "44s", Rarity.MYTHIC, mage.cards.w.WakeningSunsAvatar.class));
|
||||
cards.add(new SetCardInfo("Waker of the Wilds", "215s", Rarity.RARE, mage.cards.w.WakerOfTheWilds.class));
|
||||
cards.add(new SetCardInfo("Walk the Plank", 130, Rarity.UNCOMMON, mage.cards.w.WalkThePlank.class));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -336,7 +336,6 @@ public final class KamigawaNeonDynasty extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Mechtitan Core", 249, Rarity.RARE, mage.cards.m.MechtitanCore.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Mechtitan Core", 402, Rarity.RARE, mage.cards.m.MechtitanCore.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Mechtitan Core", 497, Rarity.RARE, mage.cards.m.MechtitanCore.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Memory of Toshiro", 108, Rarity.UNCOMMON, mage.cards.m.MemoryOfToshiro.class));
|
||||
cards.add(new SetCardInfo("Michiko's Reign of Truth", 29, Rarity.UNCOMMON, mage.cards.m.MichikosReignOfTruth.class));
|
||||
cards.add(new SetCardInfo("Mindlink Mech", 373, Rarity.RARE, mage.cards.m.MindlinkMech.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Mindlink Mech", 448, Rarity.RARE, mage.cards.m.MindlinkMech.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -1591,7 +1591,6 @@ public class MagicOnlinePromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Loyal Retainers", 47973, Rarity.UNCOMMON, mage.cards.l.LoyalRetainers.class));
|
||||
cards.add(new SetCardInfo("Loyal Warhound", 92630, Rarity.RARE, mage.cards.l.LoyalWarhound.class));
|
||||
cards.add(new SetCardInfo("Lu Bu, Master-at-Arms", 36130, Rarity.RARE, mage.cards.l.LuBuMasterAtArms.class, RETRO_ART));
|
||||
cards.add(new SetCardInfo("Ludevic's Abomination", 42874, Rarity.RARE, mage.cards.l.LudevicsAbomination.class));
|
||||
cards.add(new SetCardInfo("Ludevic's Test Subject", 42874, Rarity.RARE, mage.cards.l.LudevicsTestSubject.class));
|
||||
cards.add(new SetCardInfo("Ludevic, Necro-Alchemist", 86166, Rarity.MYTHIC, mage.cards.l.LudevicNecroAlchemist.class));
|
||||
cards.add(new SetCardInfo("Lukka, Coppercoat Outcast", 80801, Rarity.MYTHIC, mage.cards.l.LukkaCoppercoatOutcast.class));
|
||||
|
|
|
|||
|
|
@ -177,7 +177,6 @@ public final class MagicOrigins extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Languish", 105, Rarity.RARE, mage.cards.l.Languish.class));
|
||||
cards.add(new SetCardInfo("Leaf Gilder", 184, Rarity.COMMON, mage.cards.l.LeafGilder.class));
|
||||
cards.add(new SetCardInfo("Lightning Javelin", 153, Rarity.COMMON, mage.cards.l.LightningJavelin.class));
|
||||
cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 106, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class));
|
||||
cards.add(new SetCardInfo("Liliana, Heretical Healer", 106, Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class));
|
||||
cards.add(new SetCardInfo("Llanowar Empath", 185, Rarity.COMMON, mage.cards.l.LlanowarEmpath.class));
|
||||
cards.add(new SetCardInfo("Llanowar Wastes", 248, Rarity.RARE, mage.cards.l.LlanowarWastes.class));
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ public class MagicOriginsPromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Kytheon, Hero of Akros", "23s", Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class));
|
||||
cards.add(new SetCardInfo("Languish", 105, Rarity.RARE, mage.cards.l.Languish.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Languish", "105s", Rarity.RARE, mage.cards.l.Languish.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Liliana, Defiant Necromancer", "106s", Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class));
|
||||
cards.add(new SetCardInfo("Liliana, Heretical Healer", "106s", Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class));
|
||||
cards.add(new SetCardInfo("Managorger Hydra", "186s", Rarity.RARE, mage.cards.m.ManagorgerHydra.class));
|
||||
cards.add(new SetCardInfo("Mizzium Meddler", 64, Rarity.RARE, mage.cards.m.MizziumMeddler.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -229,7 +229,6 @@ public class PioneerMasters extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Lifebane Zombie", 95, Rarity.RARE, mage.cards.l.LifebaneZombie.class));
|
||||
cards.add(new SetCardInfo("Liliana of the Dark Realms", 334, Rarity.MYTHIC, mage.cards.l.LilianaOfTheDarkRealms.class));
|
||||
cards.add(new SetCardInfo("Liliana Vess", 335, Rarity.MYTHIC, mage.cards.l.LilianaVess.class));
|
||||
cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 96, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class));
|
||||
cards.add(new SetCardInfo("Liliana, Heretical Healer", 96, Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class));
|
||||
cards.add(new SetCardInfo("Limits of Solidarity", 375, Rarity.UNCOMMON, mage.cards.l.LimitsOfSolidarity.class));
|
||||
cards.add(new SetCardInfo("Linvala, the Preserver", 25, Rarity.RARE, mage.cards.l.LinvalaThePreserver.class));
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ public class SanDiegoComicCon2015 extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Chandra, Fire of Kaladesh", 135, Rarity.MYTHIC, mage.cards.c.ChandraFireOfKaladesh.class));
|
||||
cards.add(new SetCardInfo("Jace, Vryn's Prodigy", 60, Rarity.MYTHIC, mage.cards.j.JaceVrynsProdigy.class));
|
||||
cards.add(new SetCardInfo("Kytheon, Hero of Akros", 23, Rarity.MYTHIC, mage.cards.k.KytheonHeroOfAkros.class));
|
||||
cards.add(new SetCardInfo("Liliana, Defiant Necromancer", 106, Rarity.MYTHIC, mage.cards.l.LilianaDefiantNecromancer.class));
|
||||
cards.add(new SetCardInfo("Liliana, Heretical Healer", 106, Rarity.MYTHIC, mage.cards.l.LilianaHereticalHealer.class));
|
||||
cards.add(new SetCardInfo("Nissa, Vastwood Seer", 189, Rarity.MYTHIC, mage.cards.n.NissaVastwoodSeer.class));
|
||||
cards.add(new SetCardInfo("Nissa, Sage Animist", 189, Rarity.MYTHIC, mage.cards.n.NissaSageAnimist.class));
|
||||
|
|
|
|||
|
|
@ -186,7 +186,6 @@ public class ShadowsOverInnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Island", 280, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Island", 281, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Island", 282, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("It That Rides as One", 36, Rarity.UNCOMMON, mage.cards.i.ItThatRidesAsOne.class));
|
||||
cards.add(new SetCardInfo("Jace's Scrutiny", 78, Rarity.COMMON, mage.cards.j.JacesScrutiny.class));
|
||||
cards.add(new SetCardInfo("Jace, Unraveler of Secrets", 77, Rarity.MYTHIC, mage.cards.j.JaceUnravelerOfSecrets.class));
|
||||
cards.add(new SetCardInfo("Kindly Stranger", 107, Rarity.UNCOMMON, mage.cards.k.KindlyStranger.class));
|
||||
|
|
|
|||
|
|
@ -196,7 +196,6 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Growing Rites of Itlimoc", 188, Rarity.RARE, mage.cards.g.GrowingRitesOfItlimoc.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Growing Rites of Itlimoc", 380, Rarity.RARE, mage.cards.g.GrowingRitesOfItlimoc.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Guardian of the Great Door", 16, Rarity.UNCOMMON, mage.cards.g.GuardianOfTheGreatDoor.class));
|
||||
cards.add(new SetCardInfo("Guidestone Compass", 62, Rarity.UNCOMMON, mage.cards.g.GuidestoneCompass.class));
|
||||
cards.add(new SetCardInfo("Helping Hand", 17, Rarity.UNCOMMON, mage.cards.h.HelpingHand.class));
|
||||
cards.add(new SetCardInfo("Hermitic Nautilus", 58, Rarity.UNCOMMON, mage.cards.h.HermiticNautilus.class));
|
||||
cards.add(new SetCardInfo("Hidden Cataract", 273, Rarity.COMMON, mage.cards.h.HiddenCataract.class));
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ public class XLNTreasureChest extends ExpansionSet {
|
|||
this.hasBoosters = false;
|
||||
this.hasBasicLands = false;
|
||||
|
||||
cards.add(new SetCardInfo("Adanto, the First Fort", 22, Rarity.RARE, mage.cards.a.AdantoTheFirstFort.class));
|
||||
cards.add(new SetCardInfo("Arguel's Blood Fast", 90, Rarity.RARE, mage.cards.a.ArguelsBloodFast.class));
|
||||
cards.add(new SetCardInfo("Azcanta, the Sunken Ruin", 74, Rarity.RARE, mage.cards.a.AzcantaTheSunkenRuin.class));
|
||||
cards.add(new SetCardInfo("Conqueror's Galleon", 234, Rarity.RARE, mage.cards.c.ConquerorsGalleon.class));
|
||||
|
|
@ -36,5 +35,5 @@ public class XLNTreasureChest extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Treasure Cove", 250, Rarity.RARE, mage.cards.t.TreasureCove.class));
|
||||
cards.add(new SetCardInfo("Treasure Map", 250, Rarity.RARE, mage.cards.t.TreasureMap.class));
|
||||
cards.add(new SetCardInfo("Vance's Blasting Cannons", 173, Rarity.RARE, mage.cards.v.VancesBlastingCannons.class));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue