diff --git a/Mage.Sets/src/mage/cards/a/AdantoTheFirstFort.java b/Mage.Sets/src/mage/cards/a/AdantoTheFirstFort.java deleted file mode 100644 index 287da954970..00000000000 --- a/Mage.Sets/src/mage/cards/a/AdantoTheFirstFort.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/g/GuidestoneCompass.java b/Mage.Sets/src/mage/cards/g/GuidestoneCompass.java deleted file mode 100644 index 7b7d39633ca..00000000000 --- a/Mage.Sets/src/mage/cards/g/GuidestoneCompass.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/i/ItThatRidesAsOne.java b/Mage.Sets/src/mage/cards/i/ItThatRidesAsOne.java deleted file mode 100644 index c5105c31ff9..00000000000 --- a/Mage.Sets/src/mage/cards/i/ItThatRidesAsOne.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/l/LambholtElder.java b/Mage.Sets/src/mage/cards/l/LambholtElder.java index 9706367e69e..205a4edfa76 100644 --- a/Mage.Sets/src/mage/cards/l/LambholtElder.java +++ b/Mage.Sets/src/mage/cards/l/LambholtElder.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LambholtRaconteur.java b/Mage.Sets/src/mage/cards/l/LambholtRaconteur.java index 8c0b060799b..fa26a1a5e3b 100644 --- a/Mage.Sets/src/mage/cards/l/LambholtRaconteur.java +++ b/Mage.Sets/src/mage/cards/l/LambholtRaconteur.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LambholtRavager.java b/Mage.Sets/src/mage/cards/l/LambholtRavager.java deleted file mode 100644 index 36eabbf2986..00000000000 --- a/Mage.Sets/src/mage/cards/l/LambholtRavager.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/l/LanternBearer.java b/Mage.Sets/src/mage/cards/l/LanternBearer.java index 4f44b1d854d..632d677f587 100644 --- a/Mage.Sets/src/mage/cards/l/LanternBearer.java +++ b/Mage.Sets/src/mage/cards/l/LanternBearer.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LanternsLift.java b/Mage.Sets/src/mage/cards/l/LanternsLift.java deleted file mode 100644 index 7cb53c9d83e..00000000000 --- a/Mage.Sets/src/mage/cards/l/LanternsLift.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/l/LegionsLanding.java b/Mage.Sets/src/mage/cards/l/LegionsLanding.java index 7051affd2a3..3df75b5c68e 100644 --- a/Mage.Sets/src/mage/cards/l/LegionsLanding.java +++ b/Mage.Sets/src/mage/cards/l/LegionsLanding.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LifeOfToshiroUmezawa.java b/Mage.Sets/src/mage/cards/l/LifeOfToshiroUmezawa.java index 265927d6274..758cccf71b1 100644 --- a/Mage.Sets/src/mage/cards/l/LifeOfToshiroUmezawa.java +++ b/Mage.Sets/src/mage/cards/l/LifeOfToshiroUmezawa.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java b/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java deleted file mode 100644 index a4250a436d0..00000000000 --- a/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/l/LilianaHereticalHealer.java b/Mage.Sets/src/mage/cards/l/LilianaHereticalHealer.java index 2f3557624a4..560727083e3 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaHereticalHealer.java +++ b/Mage.Sets/src/mage/cards/l/LilianaHereticalHealer.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LodestoneNeedle.java b/Mage.Sets/src/mage/cards/l/LodestoneNeedle.java index a68ba5a2eb1..3a04293fad3 100644 --- a/Mage.Sets/src/mage/cards/l/LodestoneNeedle.java +++ b/Mage.Sets/src/mage/cards/l/LodestoneNeedle.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LoneRider.java b/Mage.Sets/src/mage/cards/l/LoneRider.java index c6450c5473a..848c4ff6282 100644 --- a/Mage.Sets/src/mage/cards/l/LoneRider.java +++ b/Mage.Sets/src/mage/cards/l/LoneRider.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LoyalCathar.java b/Mage.Sets/src/mage/cards/l/LoyalCathar.java index b6c4857f69d..41bb3659fc3 100644 --- a/Mage.Sets/src/mage/cards/l/LoyalCathar.java +++ b/Mage.Sets/src/mage/cards/l/LoyalCathar.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LudevicNecrogenius.java b/Mage.Sets/src/mage/cards/l/LudevicNecrogenius.java index dae5e612be0..0dd0cd31069 100644 --- a/Mage.Sets/src/mage/cards/l/LudevicNecrogenius.java +++ b/Mage.Sets/src/mage/cards/l/LudevicNecrogenius.java @@ -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; + } +} diff --git a/Mage.Sets/src/mage/cards/l/LudevicsAbomination.java b/Mage.Sets/src/mage/cards/l/LudevicsAbomination.java deleted file mode 100644 index dcfe9517ef7..00000000000 --- a/Mage.Sets/src/mage/cards/l/LudevicsAbomination.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/l/LudevicsTestSubject.java b/Mage.Sets/src/mage/cards/l/LudevicsTestSubject.java index 4dd297875f1..57512b0ec94 100644 --- a/Mage.Sets/src/mage/cards/l/LudevicsTestSubject.java +++ b/Mage.Sets/src/mage/cards/l/LudevicsTestSubject.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/l/LuminousPhantom.java b/Mage.Sets/src/mage/cards/l/LuminousPhantom.java deleted file mode 100644 index 123b2665457..00000000000 --- a/Mage.Sets/src/mage/cards/l/LuminousPhantom.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/l/LunarchVeteran.java b/Mage.Sets/src/mage/cards/l/LunarchVeteran.java index 22eb68fa555..d96df1d99ae 100644 --- a/Mage.Sets/src/mage/cards/l/LunarchVeteran.java +++ b/Mage.Sets/src/mage/cards/l/LunarchVeteran.java @@ -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) { diff --git a/Mage.Sets/src/mage/cards/m/MemoryOfToshiro.java b/Mage.Sets/src/mage/cards/m/MemoryOfToshiro.java deleted file mode 100644 index 31ad7b29957..00000000000 --- a/Mage.Sets/src/mage/cards/m/MemoryOfToshiro.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/o/OlagLudevicsHubris.java b/Mage.Sets/src/mage/cards/o/OlagLudevicsHubris.java deleted file mode 100644 index 9b9a6abc671..00000000000 --- a/Mage.Sets/src/mage/cards/o/OlagLudevicsHubris.java +++ /dev/null @@ -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; - } -} diff --git a/Mage.Sets/src/mage/cards/s/SilverpeltWerewolf.java b/Mage.Sets/src/mage/cards/s/SilverpeltWerewolf.java deleted file mode 100644 index 8bf1157c998..00000000000 --- a/Mage.Sets/src/mage/cards/s/SilverpeltWerewolf.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/cards/u/UnhallowedCathar.java b/Mage.Sets/src/mage/cards/u/UnhallowedCathar.java deleted file mode 100644 index 9f61fbec892..00000000000 --- a/Mage.Sets/src/mage/cards/u/UnhallowedCathar.java +++ /dev/null @@ -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); - } -} diff --git a/Mage.Sets/src/mage/sets/CommanderCollectionBlack.java b/Mage.Sets/src/mage/sets/CommanderCollectionBlack.java index f54c7d6122e..9162e1962f1 100644 --- a/Mage.Sets/src/mage/sets/CommanderCollectionBlack.java +++ b/Mage.Sets/src/mage/sets/CommanderCollectionBlack.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/DarkAscension.java b/Mage.Sets/src/mage/sets/DarkAscension.java index 695dec3f829..d15ba1ee233 100644 --- a/Mage.Sets/src/mage/sets/DarkAscension.java +++ b/Mage.Sets/src/mage/sets/DarkAscension.java @@ -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); diff --git a/Mage.Sets/src/mage/sets/EldritchMoon.java b/Mage.Sets/src/mage/sets/EldritchMoon.java index 313c71920c4..7606ba3e3b6 100644 --- a/Mage.Sets/src/mage/sets/EldritchMoon.java +++ b/Mage.Sets/src/mage/sets/EldritchMoon.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/FromTheVaultTransform.java b/Mage.Sets/src/mage/sets/FromTheVaultTransform.java index a4f935eb31e..93e2a6d15bd 100644 --- a/Mage.Sets/src/mage/sets/FromTheVaultTransform.java +++ b/Mage.Sets/src/mage/sets/FromTheVaultTransform.java @@ -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)); } diff --git a/Mage.Sets/src/mage/sets/Innistrad.java b/Mage.Sets/src/mage/sets/Innistrad.java index 2ab792c1963..46f00e06e73 100644 --- a/Mage.Sets/src/mage/sets/Innistrad.java +++ b/Mage.Sets/src/mage/sets/Innistrad.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java index ccb71940027..7fcd6aa882b 100644 --- a/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java +++ b/Mage.Sets/src/mage/sets/InnistradCrimsonVow.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/InnistradDoubleFeature.java b/Mage.Sets/src/mage/sets/InnistradDoubleFeature.java index ff5320396ac..125f22ade25 100644 --- a/Mage.Sets/src/mage/sets/InnistradDoubleFeature.java +++ b/Mage.Sets/src/mage/sets/InnistradDoubleFeature.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java index 45b6c5e1908..93d90d7cf3d 100644 --- a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java +++ b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/InnistradPromos.java b/Mage.Sets/src/mage/sets/InnistradPromos.java index 7a0c46fd575..4a9cb8313ec 100644 --- a/Mage.Sets/src/mage/sets/InnistradPromos.java +++ b/Mage.Sets/src/mage/sets/InnistradPromos.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/InnistradRemastered.java b/Mage.Sets/src/mage/sets/InnistradRemastered.java index ea3984f1adc..491a4d8afb4 100644 --- a/Mage.Sets/src/mage/sets/InnistradRemastered.java +++ b/Mage.Sets/src/mage/sets/InnistradRemastered.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/Ixalan.java b/Mage.Sets/src/mage/sets/Ixalan.java index c03bde3dd7a..bf19ea0b035 100644 --- a/Mage.Sets/src/mage/sets/Ixalan.java +++ b/Mage.Sets/src/mage/sets/Ixalan.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/IxalanPromos.java b/Mage.Sets/src/mage/sets/IxalanPromos.java index 65828df8668..cd9eca7410c 100644 --- a/Mage.Sets/src/mage/sets/IxalanPromos.java +++ b/Mage.Sets/src/mage/sets/IxalanPromos.java @@ -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)); - } + } } diff --git a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java index 0435ddf6001..401a4ace3f1 100644 --- a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java +++ b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/MagicOnlinePromos.java b/Mage.Sets/src/mage/sets/MagicOnlinePromos.java index 24bbd1d3763..6422a6a3894 100644 --- a/Mage.Sets/src/mage/sets/MagicOnlinePromos.java +++ b/Mage.Sets/src/mage/sets/MagicOnlinePromos.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/MagicOrigins.java b/Mage.Sets/src/mage/sets/MagicOrigins.java index 45a9f4c7583..227cae441f4 100644 --- a/Mage.Sets/src/mage/sets/MagicOrigins.java +++ b/Mage.Sets/src/mage/sets/MagicOrigins.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/MagicOriginsPromos.java b/Mage.Sets/src/mage/sets/MagicOriginsPromos.java index 454948ca49a..afceae5a679 100644 --- a/Mage.Sets/src/mage/sets/MagicOriginsPromos.java +++ b/Mage.Sets/src/mage/sets/MagicOriginsPromos.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/PioneerMasters.java b/Mage.Sets/src/mage/sets/PioneerMasters.java index 7b6fd53aac0..d649083e04c 100644 --- a/Mage.Sets/src/mage/sets/PioneerMasters.java +++ b/Mage.Sets/src/mage/sets/PioneerMasters.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/SanDiegoComicCon2015.java b/Mage.Sets/src/mage/sets/SanDiegoComicCon2015.java index 3cf711f206d..2476a421f30 100644 --- a/Mage.Sets/src/mage/sets/SanDiegoComicCon2015.java +++ b/Mage.Sets/src/mage/sets/SanDiegoComicCon2015.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/ShadowsOverInnistradRemastered.java b/Mage.Sets/src/mage/sets/ShadowsOverInnistradRemastered.java index 5d5315643d2..a31f08cebdb 100644 --- a/Mage.Sets/src/mage/sets/ShadowsOverInnistradRemastered.java +++ b/Mage.Sets/src/mage/sets/ShadowsOverInnistradRemastered.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java b/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java index 9c20e897381..855a945c52e 100644 --- a/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java +++ b/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java @@ -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)); diff --git a/Mage.Sets/src/mage/sets/XLNTreasureChest.java b/Mage.Sets/src/mage/sets/XLNTreasureChest.java index d201c6e94b4..d49ac4f7bc1 100644 --- a/Mage.Sets/src/mage/sets/XLNTreasureChest.java +++ b/Mage.Sets/src/mage/sets/XLNTreasureChest.java @@ -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)); - } + } }