mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
parent
9a26221048
commit
0f5716d28e
27 changed files with 275 additions and 563 deletions
|
|
@ -1,47 +0,0 @@
|
|||
package mage.cards.b;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.abilities.mana.SimpleManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class BlossomCladWerewolf extends CardImpl {
|
||||
|
||||
public BlossomCladWerewolf(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(4);
|
||||
this.color.setGreen(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// {T}: Add two mana of any one color.
|
||||
this.addAbility(new SimpleManaAbility(
|
||||
Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(2), new TapSourceCost()
|
||||
));
|
||||
|
||||
// Nightbound
|
||||
this.addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private BlossomCladWerewolf(final BlossomCladWerewolf card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlossomCladWerewolf copy() {
|
||||
return new BlossomCladWerewolf(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
package mage.cards.j;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.Mana;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||
import mage.abilities.effects.ContinuousEffectImpl;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.abilities.keyword.EscapeAbility;
|
||||
import mage.abilities.mana.DynamicManaAbility;
|
||||
import mage.constants.*;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jimga150
|
||||
*/
|
||||
public final class JurassicPark extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent("Dinosaur you control");
|
||||
|
||||
static {
|
||||
filter.add(SubType.DINOSAUR.getPredicate());
|
||||
}
|
||||
|
||||
private static final Hint hint = new ValueHint(
|
||||
"Number of Dinosaurs you control", new PermanentsOnBattlefieldCount(filter)
|
||||
);
|
||||
|
||||
public JurassicPark(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.nightCard = true;
|
||||
|
||||
// (Transforms from Welcome to ....)
|
||||
// Each Dinosaur card in your graveyard has escape. The escape cost is equal to the card's mana cost plus exile three other cards from your graveyard.
|
||||
// Based on Underworld Breach
|
||||
this.addAbility(new SimpleStaticAbility(new JurassicParkEffect()));
|
||||
|
||||
// {T}: Add {G} for each Dinosaur you control.
|
||||
// Based on Gaea's Cradle
|
||||
DynamicManaAbility ability = new DynamicManaAbility(
|
||||
Mana.GreenMana(1),
|
||||
new PermanentsOnBattlefieldCount(filter)
|
||||
);
|
||||
this.addAbility(ability.addHint(hint));
|
||||
}
|
||||
|
||||
private JurassicPark(final JurassicPark card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JurassicPark copy() {
|
||||
return new JurassicPark(this);
|
||||
}
|
||||
}
|
||||
|
||||
class JurassicParkEffect extends ContinuousEffectImpl {
|
||||
|
||||
JurassicParkEffect() {
|
||||
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
|
||||
staticText = "Each Dinosaur card in your graveyard has escape. " +
|
||||
"The escape cost is equal to the card's mana cost plus exile three other cards from your graveyard.";
|
||||
}
|
||||
|
||||
private JurassicParkEffect(final JurassicParkEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
controller
|
||||
.getGraveyard()
|
||||
.getCards(game)
|
||||
.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.filter(card -> !card.getManaCost().getText().isEmpty()) // card must have a mana cost
|
||||
.filter(card -> card.hasSubtype(SubType.DINOSAUR, game))
|
||||
.forEach(card -> {
|
||||
Ability ability = new EscapeAbility(card, card.getManaCost().getText(), 3);
|
||||
ability.setSourceId(card.getId());
|
||||
ability.setControllerId(card.getOwnerId());
|
||||
game.getState().addOtherAbility(card, ability);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JurassicParkEffect copy() {
|
||||
return new JurassicParkEffect(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
package mage.cards.k;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
public final class KrallenhordeKiller extends CardImpl {
|
||||
|
||||
public KrallenhordeKiller(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.color.setGreen(true);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
// {3}{G}: Krallenhorde Killer gets +4/+4 until end of turn. Activate this ability only once each turn.
|
||||
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(4, 4, Duration.EndOfTurn), new ManaCostsImpl<>("{3}{G}")));
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Killer.
|
||||
this.addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private KrallenhordeKiller(final KrallenhordeKiller card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public KrallenhordeKiller copy() {
|
||||
return new KrallenhordeKiller(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
|
||||
package mage.cards.o;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.abilities.keyword.IndestructibleAbility;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class OrmendahlProfanePrince extends CardImpl {
|
||||
|
||||
public OrmendahlProfanePrince(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"");
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.DEMON);
|
||||
this.power = new MageInt(9);
|
||||
this.toughness = new MageInt(7);
|
||||
this.color.setBlack(true);
|
||||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
// Indestructible
|
||||
this.addAbility(IndestructibleAbility.getInstance());
|
||||
// Haste
|
||||
this.addAbility(HasteAbility.getInstance());
|
||||
}
|
||||
|
||||
private OrmendahlProfanePrince(final OrmendahlProfanePrince card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrmendahlProfanePrince copy() {
|
||||
return new OrmendahlProfanePrince(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,11 +1,19 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.DescendCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.decorator.ConditionalRestrictionEffect;
|
||||
import mage.abilities.effects.common.MillCardsControllerEffect;
|
||||
import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect;
|
||||
import mage.abilities.keyword.CraftAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.keyword.CrewAbility;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
|
|
@ -14,24 +22,44 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class WaterloggedHulk extends CardImpl {
|
||||
public final class WaterloggedHulk extends TransformingDoubleFacedCard {
|
||||
|
||||
public WaterloggedHulk(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{U}");
|
||||
this.secondSideCardClazz = mage.cards.w.WatertightGondola.class;
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{}, "{U}",
|
||||
"Watertight Gondola",
|
||||
new CardType[]{CardType.ARTIFACT}, new SubType[]{SubType.VEHICLE}, "U"
|
||||
);
|
||||
|
||||
// Waterlogged Hulk
|
||||
// {T}: Mill a card.
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
this.getLeftHalfCard().addAbility(new SimpleActivatedAbility(
|
||||
new MillCardsControllerEffect(1),
|
||||
new TapSourceCost()
|
||||
));
|
||||
|
||||
// Craft with Island {3}{U}
|
||||
this.addAbility(new CraftAbility(
|
||||
this.getLeftHalfCard().addAbility(new CraftAbility(
|
||||
"{3}{U}", "Island",
|
||||
"another Island you control or an Island card from your graveyard",
|
||||
SubType.ISLAND.getPredicate()
|
||||
));
|
||||
|
||||
// Watertight Gondola
|
||||
this.getRightHalfCard().setPT(4, 4);
|
||||
|
||||
// Vigilance
|
||||
this.getRightHalfCard().addAbility(VigilanceAbility.getInstance());
|
||||
|
||||
// Descend 8 -- Watertight Gondola can't be blocked as long as there are eight or more permanent cards in your graveyard.
|
||||
Ability ability = new SimpleStaticAbility(new ConditionalRestrictionEffect(
|
||||
new CantBeBlockedSourceEffect(),
|
||||
DescendCondition.EIGHT
|
||||
).setText("{this} can't be blocked as long as there are eight or more permanent cards in your graveyard"));
|
||||
this.getRightHalfCard().addAbility(ability.addHint(DescendCondition.getHint()).setAbilityWord(AbilityWord.DESCEND_8));
|
||||
|
||||
// Crew 1
|
||||
this.getRightHalfCard().addAbility(new CrewAbility(1));
|
||||
}
|
||||
|
||||
private WaterloggedHulk(final WaterloggedHulk card) {
|
||||
|
|
|
|||
|
|
@ -1,56 +0,0 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.DescendCondition;
|
||||
import mage.abilities.decorator.ConditionalRestrictionEffect;
|
||||
import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect;
|
||||
import mage.abilities.keyword.CrewAbility;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class WatertightGondola extends CardImpl {
|
||||
|
||||
public WatertightGondola(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "");
|
||||
this.nightCard = true;
|
||||
this.color.setBlue(true);
|
||||
|
||||
this.subtype.add(SubType.VEHICLE);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// Vigilance
|
||||
this.addAbility(VigilanceAbility.getInstance());
|
||||
|
||||
// Descend 8 -- Watertight Gondola can't be blocked as long as there are eight or more permanent cards in your graveyard.
|
||||
Ability ability = new SimpleStaticAbility(new ConditionalRestrictionEffect(
|
||||
new CantBeBlockedSourceEffect(),
|
||||
DescendCondition.EIGHT
|
||||
).setText("{this} can't be blocked as long as there are eight or more permanent cards in your graveyard"));
|
||||
this.addAbility(ability.addHint(DescendCondition.getHint()).setAbilityWord(AbilityWord.DESCEND_8));
|
||||
|
||||
// Crew 1
|
||||
this.addAbility(new CrewAbility(1));
|
||||
|
||||
}
|
||||
|
||||
private WatertightGondola(final WatertightGondola card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WatertightGondola copy() {
|
||||
return new WatertightGondola(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,11 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.AttacksEachCombatStaticAbility;
|
||||
import mage.abilities.keyword.DayboundAbility;
|
||||
import mage.abilities.keyword.DefenderAbility;
|
||||
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;
|
||||
|
||||
|
|
@ -13,23 +14,32 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class WearyPrisoner extends CardImpl {
|
||||
public final class WearyPrisoner extends TransformingDoubleFacedCard {
|
||||
|
||||
public WearyPrisoner(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}",
|
||||
"Wrathful Jailbreaker",
|
||||
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(6);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.w.WrathfulJailbreaker.class;
|
||||
// Weary Prisoner
|
||||
this.getLeftHalfCard().setPT(2, 6);
|
||||
|
||||
// Defender
|
||||
this.addAbility(DefenderAbility.getInstance());
|
||||
this.getLeftHalfCard().addAbility(DefenderAbility.getInstance());
|
||||
|
||||
// Daybound
|
||||
this.addAbility(new DayboundAbility());
|
||||
this.getLeftHalfCard().addAbility(new DayboundAbility());
|
||||
|
||||
// Wrathful Jailbreaker
|
||||
this.getRightHalfCard().setPT(6, 6);
|
||||
|
||||
// Wrathful Jailbreaker attacks each combat if able.
|
||||
this.getRightHalfCard().addAbility(new AttacksEachCombatStaticAbility());
|
||||
|
||||
// Nightbound
|
||||
this.getRightHalfCard().addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private WearyPrisoner(final WearyPrisoner card) {
|
||||
|
|
|
|||
|
|
@ -1,34 +1,50 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
|
||||
import mage.abilities.keyword.DayboundAbility;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.abilities.mana.AnyColorManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.mana.SimpleManaAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class WeaverOfBlossoms extends CardImpl {
|
||||
public final class WeaverOfBlossoms extends TransformingDoubleFacedCard {
|
||||
|
||||
public WeaverOfBlossoms(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{2}{G}",
|
||||
"Blossom-Clad Werewolf",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "G"
|
||||
);
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
this.secondSideCardClazz = mage.cards.b.BlossomCladWerewolf.class;
|
||||
// Weaver of Blossoms
|
||||
this.getLeftHalfCard().setPT(2, 3);
|
||||
|
||||
// {T}: Add one mana of any color.
|
||||
this.addAbility(new AnyColorManaAbility());
|
||||
this.getLeftHalfCard().addAbility(new AnyColorManaAbility());
|
||||
|
||||
// Daybound
|
||||
this.addAbility(new DayboundAbility());
|
||||
this.getLeftHalfCard().addAbility(new DayboundAbility());
|
||||
|
||||
// Blossom-Clad Werewolf
|
||||
this.getRightHalfCard().setPT(3, 4);
|
||||
|
||||
// {T}: Add two mana of any one color.
|
||||
this.getRightHalfCard().addAbility(new SimpleManaAbility(
|
||||
Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(2), new TapSourceCost()
|
||||
));
|
||||
|
||||
// Nightbound
|
||||
this.getRightHalfCard().addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private WeaverOfBlossoms(final WeaverOfBlossoms card) {
|
||||
|
|
|
|||
|
|
@ -1,41 +1,46 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.SourceHasCounterCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.HumanToken;
|
||||
import mage.watchers.common.AttackedThisTurnWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author weirddan455
|
||||
*/
|
||||
public final class WeddingAnnouncement extends CardImpl {
|
||||
public final class WeddingAnnouncement extends TransformingDoubleFacedCard {
|
||||
|
||||
public WeddingAnnouncement(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
|
||||
|
||||
this.secondSideCardClazz = mage.cards.w.WeddingFestivity.class;
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{}, "{2}{W}",
|
||||
"Wedding Festivity",
|
||||
new CardType[]{CardType.ENCHANTMENT}, new SubType[]{}, "W"
|
||||
);
|
||||
|
||||
// Wedding Announcement
|
||||
// At the beginning of your end step, put an invitation counter on Wedding Announcement.
|
||||
// If you attacked with two or more creatures this turn, draw card.
|
||||
// Otherwise, create a 1/1 white Human creature token.
|
||||
// Then if Wedding Announcement has three or more invitation counters on it, transform it.
|
||||
this.addAbility(new TransformAbility());
|
||||
Ability ability = new BeginningOfEndStepTriggeredAbility(new AddCountersSourceEffect(CounterType.INVITATION.createInstance()));
|
||||
ability.addEffect(new ConditionalOneShotEffect(
|
||||
new DrawCardSourceControllerEffect(1),
|
||||
|
|
@ -48,7 +53,11 @@ public final class WeddingAnnouncement extends CardImpl {
|
|||
new SourceHasCounterCondition(CounterType.INVITATION, 3),
|
||||
"Then if {this} has three or more invitation counters on it, transform it"
|
||||
));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Wedding Festivity
|
||||
// Creatures you control get +1/+1
|
||||
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield)));
|
||||
}
|
||||
|
||||
private WeddingAnnouncement(final WeddingAnnouncement card) {
|
||||
|
|
|
|||
|
|
@ -1,57 +0,0 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DiesThisOrAnotherTriggeredAbility;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class WeddingCrasher extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent("Wolf or Werewolf you control");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
SubType.WOLF.getPredicate(),
|
||||
SubType.WEREWOLF.getPredicate()
|
||||
));
|
||||
}
|
||||
|
||||
public WeddingCrasher(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(6);
|
||||
this.toughness = new MageInt(5);
|
||||
this.color.setGreen(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Whenever Wedding Crasher or another Wolf or Werewolf you control dies, draw a card.
|
||||
this.addAbility(new DiesThisOrAnotherTriggeredAbility(
|
||||
new DrawCardSourceControllerEffect(1), false, filter
|
||||
));
|
||||
|
||||
// Nightbound
|
||||
this.addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private WeddingCrasher(final WeddingCrasher card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WeddingCrasher copy() {
|
||||
return new WeddingCrasher(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author weirddan455
|
||||
*/
|
||||
public class WeddingFestivity extends CardImpl {
|
||||
|
||||
public WeddingFestivity(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "");
|
||||
|
||||
this.color.setWhite(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Creatures you control get +1/+1
|
||||
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield)));
|
||||
}
|
||||
|
||||
private WeddingFestivity(final WeddingFestivity card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WeddingFestivity copy() {
|
||||
return new WeddingFestivity(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,59 +1,77 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.Mana;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SagaAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||
import mage.abilities.effects.ContinuousEffect;
|
||||
import mage.abilities.effects.ContinuousEffectImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.DestroyAllEffect;
|
||||
import mage.abilities.effects.common.ExileSagaAndReturnTransformedEffect;
|
||||
import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.abilities.keyword.DefenderAbility;
|
||||
import mage.abilities.keyword.EscapeAbility;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.abilities.mana.DynamicManaAbility;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.DinosaurToken;
|
||||
import mage.game.permanent.token.custom.CreatureToken;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.targetadjustment.ForEachPlayerTargetsAdjuster;
|
||||
import mage.target.targetpointer.EachTargetPointer;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jimga150
|
||||
*/
|
||||
public final class WelcomeTo extends CardImpl {
|
||||
public final class WelcomeTo extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent("Walls");
|
||||
private static final FilterPermanent filterNoncreatureArtifact = new FilterPermanent("noncreature artifact");
|
||||
private static final FilterPermanent filterDinosaur = new FilterControlledPermanent("Dinosaur you control");
|
||||
|
||||
static {
|
||||
filter.add(SubType.WALL.getPredicate());
|
||||
filterNoncreatureArtifact.add(Predicates.not(CardType.CREATURE.getPredicate()));
|
||||
filterNoncreatureArtifact.add(CardType.ARTIFACT.getPredicate());
|
||||
filterDinosaur.add(SubType.DINOSAUR.getPredicate());
|
||||
}
|
||||
|
||||
private static final Hint hint = new ValueHint(
|
||||
"Number of Dinosaurs you control", new PermanentsOnBattlefieldCount(filterDinosaur)
|
||||
);
|
||||
|
||||
// Based on Azusa's Many Journeys // Likeness of the Seeker, Vronos Masked Inquisitor, In the Darkness Bind Then,
|
||||
public WelcomeTo(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{G}");
|
||||
|
||||
this.subtype.add(SubType.SAGA);
|
||||
this.secondSideCardClazz = mage.cards.j.JurassicPark.class;
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{}, new CardType[]{CardType.ENCHANTMENT}, new SubType[]{SubType.SAGA}, "{1}{G}{G}",
|
||||
"Jurassic Park",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.LAND}, new SubType[]{}, ""
|
||||
);
|
||||
|
||||
// Welcome to . . .
|
||||
// (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 -- For each opponent, up to one target noncreature artifact they control becomes a 0/4 Wall artifact creature with defender for as long as you control this Saga.
|
||||
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_I, ability -> {
|
||||
sagaAbility.addChapterEffect(this.getLeftHalfCard(), SagaChapter.CHAPTER_I, ability -> {
|
||||
ability.addEffect(
|
||||
new BecomesCreatureTargetEffect(
|
||||
new CreatureToken(0, 4)
|
||||
|
|
@ -69,16 +87,28 @@ public final class WelcomeTo extends CardImpl {
|
|||
|
||||
// II -- Create a 3/3 green Dinosaur creature token with trample. It gains haste until end of turn.
|
||||
// Based on Mordor on the March
|
||||
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, new WelcomeToEffect());
|
||||
sagaAbility.addChapterEffect(this.getLeftHalfCard(), SagaChapter.CHAPTER_II, new WelcomeToEffect());
|
||||
|
||||
// III -- Destroy all Walls. Exile this Saga, then return it to the battlefield transformed under your control.
|
||||
this.addAbility(new TransformAbility());
|
||||
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_III, ability -> {
|
||||
sagaAbility.addChapterEffect(this.getLeftHalfCard(), SagaChapter.CHAPTER_III, ability -> {
|
||||
ability.addEffect(new DestroyAllEffect(filter));
|
||||
ability.addEffect(new ExileSagaAndReturnTransformedEffect());
|
||||
});
|
||||
|
||||
this.addAbility(sagaAbility);
|
||||
this.getLeftHalfCard().addAbility(sagaAbility);
|
||||
|
||||
// Jurassic Park
|
||||
// Each Dinosaur card in your graveyard has escape. The escape cost is equal to the card's mana cost plus exile three other cards from your graveyard.
|
||||
// Based on Underworld Breach
|
||||
this.getRightHalfCard().addAbility(new SimpleStaticAbility(new JurassicParkEffect()));
|
||||
|
||||
// {T}: Add {G} for each Dinosaur you control.
|
||||
// Based on Gaea's Cradle
|
||||
DynamicManaAbility ability = new DynamicManaAbility(
|
||||
Mana.GreenMana(1),
|
||||
new PermanentsOnBattlefieldCount(filterDinosaur)
|
||||
);
|
||||
this.getRightHalfCard().addAbility(ability.addHint(hint));
|
||||
}
|
||||
|
||||
private WelcomeTo(final WelcomeTo card) {
|
||||
|
|
@ -121,5 +151,44 @@ class WelcomeToEffect extends OneShotEffect {
|
|||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class JurassicParkEffect extends ContinuousEffectImpl {
|
||||
|
||||
JurassicParkEffect() {
|
||||
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
|
||||
staticText = "Each Dinosaur card in your graveyard has escape. " +
|
||||
"The escape cost is equal to the card's mana cost plus exile three other cards from your graveyard.";
|
||||
}
|
||||
|
||||
private JurassicParkEffect(final JurassicParkEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
controller
|
||||
.getGraveyard()
|
||||
.getCards(game)
|
||||
.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.filter(card -> !card.getManaCost().getText().isEmpty()) // card must have a mana cost
|
||||
.filter(card -> card.hasSubtype(SubType.DINOSAUR, game))
|
||||
.forEach(card -> {
|
||||
Ability ability = new EscapeAbility(card, card.getManaCost().getText(), 3);
|
||||
ability.setSourceId(card.getId());
|
||||
ability.setControllerId(card.getOwnerId());
|
||||
game.getState().addOtherAbility(card, ability);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JurassicParkEffect copy() {
|
||||
return new JurassicParkEffect(this);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.PayLifeCost;
|
||||
|
|
@ -12,43 +9,64 @@ import mage.abilities.costs.mana.GenericManaCost;
|
|||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.common.UntapSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.abilities.keyword.IndestructibleAbility;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.abilities.mana.ColorlessManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.game.permanent.token.HumanClericToken;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class WestvaleAbbey extends CardImpl {
|
||||
public final class WestvaleAbbey extends TransformingDoubleFacedCard {
|
||||
|
||||
public WestvaleAbbey(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
this.secondSideCardClazz = mage.cards.o.OrmendahlProfanePrince.class;
|
||||
super(ownerId, setInfo,
|
||||
new SuperType[]{}, new CardType[]{CardType.LAND}, new SubType[]{}, "",
|
||||
"Ormendahl, Profane Prince",
|
||||
new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.DEMON}, "B"
|
||||
);
|
||||
|
||||
// Westvale Abbey
|
||||
// {T}: Add {C}.
|
||||
this.addAbility(new ColorlessManaAbility());
|
||||
this.getLeftHalfCard().addAbility(new ColorlessManaAbility());
|
||||
|
||||
// {5}, {T}, Pay 1 life: Create a 1/1 white and black Human Cleric creature token.
|
||||
Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(new HumanClericToken()), new GenericManaCost(5));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new PayLifeCost(1));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// {5}, {T}, Sacrifice five creatures: Transform Westvale Abbey and untap it.
|
||||
this.addAbility(new TransformAbility());
|
||||
ability = new SimpleActivatedAbility(new TransformSourceEffect(), new GenericManaCost(5));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeTargetCost(5, StaticFilters.FILTER_PERMANENT_CREATURES));
|
||||
ability.addEffect(new UntapSourceEffect().setText("untap it").concatBy(", then"));
|
||||
this.addAbility(ability);
|
||||
this.getLeftHalfCard().addAbility(ability);
|
||||
|
||||
// Ormendahl, Profane Prince
|
||||
this.getRightHalfCard().setPT(9, 7);
|
||||
|
||||
// Flying
|
||||
this.getRightHalfCard().addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Lifelink
|
||||
this.getRightHalfCard().addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// Indestructible
|
||||
this.getRightHalfCard().addAbility(IndestructibleAbility.getInstance());
|
||||
|
||||
// Haste
|
||||
this.getRightHalfCard().addAbility(HasteAbility.getInstance());
|
||||
}
|
||||
|
||||
private WestvaleAbbey(final WestvaleAbbey card) {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
|
||||
import mage.abilities.common.WerewolfBackTriggeredAbility;
|
||||
import mage.abilities.common.WerewolfFrontTriggeredAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.TransformingDoubleFacedCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
|
|
@ -18,24 +17,32 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
public final class WolfbittenCaptive extends CardImpl {
|
||||
public final class WolfbittenCaptive extends TransformingDoubleFacedCard {
|
||||
|
||||
public WolfbittenCaptive(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{G}",
|
||||
"Krallenhorde Killer",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "G"
|
||||
);
|
||||
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.k.KrallenhordeKiller.class;
|
||||
// Wolfbitten Captive
|
||||
this.getLeftHalfCard().setPT(1, 1);
|
||||
|
||||
// {1}{G}: Wolfbitten Captive gets +2/+2 until end of turn. Activate this ability only once each turn.
|
||||
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{G}")));
|
||||
this.getLeftHalfCard().addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 2, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{G}")));
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Wolfbitten Captive.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new WerewolfFrontTriggeredAbility());
|
||||
this.getLeftHalfCard().addAbility(new WerewolfFrontTriggeredAbility());
|
||||
|
||||
// Krallenhorde Killer
|
||||
this.getRightHalfCard().setPT(2, 2);
|
||||
|
||||
// {3}{G}: Krallenhorde Killer gets +4/+4 until end of turn. Activate this ability only once each turn.
|
||||
this.getRightHalfCard().addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(4, 4, Duration.EndOfTurn), new ManaCostsImpl<>("{3}{G}")));
|
||||
|
||||
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Killer.
|
||||
this.getRightHalfCard().addAbility(new WerewolfBackTriggeredAbility());
|
||||
}
|
||||
|
||||
private WolfbittenCaptive(final WolfbittenCaptive card) {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,17 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DiesThisOrAnotherTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
|
||||
import mage.abilities.hint.ConditionHint;
|
||||
import mage.abilities.hint.Hint;
|
||||
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.Zone;
|
||||
|
|
@ -22,15 +24,20 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class WolfkinOutcast extends CardImpl {
|
||||
public final class WolfkinOutcast extends TransformingDoubleFacedCard {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent("you control a Wolf or Werewolf");
|
||||
private static final FilterPermanent filter2 = new FilterControlledPermanent("Wolf or Werewolf you control");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(
|
||||
SubType.WOLF.getPredicate(),
|
||||
SubType.WEREWOLF.getPredicate()
|
||||
));
|
||||
filter2.add(Predicates.or(
|
||||
SubType.WOLF.getPredicate(),
|
||||
SubType.WEREWOLF.getPredicate()
|
||||
));
|
||||
}
|
||||
|
||||
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
|
||||
|
|
@ -39,21 +46,35 @@ public final class WolfkinOutcast extends CardImpl {
|
|||
);
|
||||
|
||||
public WolfkinOutcast(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}");
|
||||
super(ownerId, setInfo,
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.WEREWOLF}, "{5}{G}",
|
||||
"Wedding Crasher",
|
||||
new CardType[]{CardType.CREATURE}, new SubType[]{SubType.WEREWOLF}, "G"
|
||||
);
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(4);
|
||||
this.secondSideCardClazz = mage.cards.w.WeddingCrasher.class;
|
||||
// Wolfkin Outcast
|
||||
this.getLeftHalfCard().setPT(5, 4);
|
||||
|
||||
// This spell costs {2} less to cast if you control a Wolf or Werewolf.
|
||||
this.addAbility(new SimpleStaticAbility(
|
||||
Zone.ALL, new SpellCostReductionSourceEffect(2, condition).setCanWorksOnStackOnly(true)
|
||||
).setRuleAtTheTop(true));
|
||||
this.getLeftHalfCard().addAbility(new SimpleStaticAbility(
|
||||
Zone.ALL, new SpellCostReductionSourceEffect(2, condition).setCanWorksOnStackOnly(true))
|
||||
.setRuleAtTheTop(true)
|
||||
.addHint(hint)
|
||||
);
|
||||
|
||||
// Daybound
|
||||
this.addAbility(new DayboundAbility());
|
||||
this.getLeftHalfCard().addAbility(new DayboundAbility());
|
||||
|
||||
// Wedding Crasher
|
||||
this.getRightHalfCard().setPT(6, 5);
|
||||
|
||||
// Whenever Wedding Crasher or another Wolf or Werewolf you control dies, draw a card.
|
||||
this.getRightHalfCard().addAbility(new DiesThisOrAnotherTriggeredAbility(
|
||||
new DrawCardSourceControllerEffect(1), false, filter2
|
||||
));
|
||||
|
||||
// Nightbound
|
||||
this.getRightHalfCard().addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private WolfkinOutcast(final WolfkinOutcast card) {
|
||||
|
|
|
|||
|
|
@ -1,43 +0,0 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.AttacksEachCombatStaticAbility;
|
||||
import mage.abilities.keyword.NightboundAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class WrathfulJailbreaker extends CardImpl {
|
||||
|
||||
public WrathfulJailbreaker(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.WEREWOLF);
|
||||
this.power = new MageInt(6);
|
||||
this.toughness = new MageInt(6);
|
||||
this.color.setRed(true);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
// Wrathful Jailbreaker attacks each combat if able.
|
||||
this.addAbility(new AttacksEachCombatStaticAbility());
|
||||
|
||||
// Nightbound
|
||||
this.addAbility(new NightboundAbility());
|
||||
}
|
||||
|
||||
private WrathfulJailbreaker(final WrathfulJailbreaker card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WrathfulJailbreaker copy() {
|
||||
return new WrathfulJailbreaker(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -128,7 +128,6 @@ public final class DarkAscension extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Increasing Vengeance", 95, Rarity.RARE, mage.cards.i.IncreasingVengeance.class));
|
||||
cards.add(new SetCardInfo("Jar of Eyeballs", 152, Rarity.RARE, mage.cards.j.JarOfEyeballs.class));
|
||||
cards.add(new SetCardInfo("Kessig Recluse", 121, Rarity.COMMON, mage.cards.k.KessigRecluse.class));
|
||||
cards.add(new SetCardInfo("Krallenhorde Killer", 133, Rarity.RARE, mage.cards.k.KrallenhordeKiller.class));
|
||||
cards.add(new SetCardInfo("Lambholt Elder", 122, Rarity.UNCOMMON, mage.cards.l.LambholtElder.class));
|
||||
cards.add(new SetCardInfo("Lingering Souls", 12, Rarity.UNCOMMON, mage.cards.l.LingeringSouls.class));
|
||||
cards.add(new SetCardInfo("Lost in the Woods", 123, Rarity.RARE, mage.cards.l.LostInTheWoods.class));
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Bloodvial Purveyor", 290, Rarity.RARE, mage.cards.b.BloodvialPurveyor.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Bloodvial Purveyor", 98, Rarity.RARE, mage.cards.b.BloodvialPurveyor.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Bloody Betrayal", 147, Rarity.COMMON, mage.cards.b.BloodyBetrayal.class));
|
||||
cards.add(new SetCardInfo("Blossom-Clad Werewolf", 226, Rarity.COMMON, mage.cards.b.BlossomCladWerewolf.class));
|
||||
cards.add(new SetCardInfo("Boarded Window", 253, Rarity.UNCOMMON, mage.cards.b.BoardedWindow.class));
|
||||
cards.add(new SetCardInfo("Bramble Armor", 188, Rarity.COMMON, mage.cards.b.BrambleArmor.class));
|
||||
cards.add(new SetCardInfo("Bramble Wurm", 189, Rarity.UNCOMMON, mage.cards.b.BrambleWurm.class));
|
||||
|
|
@ -439,9 +438,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Weaver of Blossoms", 226, Rarity.COMMON, mage.cards.w.WeaverOfBlossoms.class));
|
||||
cards.add(new SetCardInfo("Wedding Announcement", 355, Rarity.RARE, mage.cards.w.WeddingAnnouncement.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Wedding Announcement", 45, Rarity.RARE, mage.cards.w.WeddingAnnouncement.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Wedding Crasher", 229, Rarity.UNCOMMON, mage.cards.w.WeddingCrasher.class));
|
||||
cards.add(new SetCardInfo("Wedding Festivity", 355, Rarity.RARE, mage.cards.w.WeddingFestivity.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Wedding Festivity", 45, Rarity.RARE, mage.cards.w.WeddingFestivity.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Wedding Invitation", 260, Rarity.COMMON, mage.cards.w.WeddingInvitation.class));
|
||||
cards.add(new SetCardInfo("Wedding Security", 138, Rarity.UNCOMMON, mage.cards.w.WeddingSecurity.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Wedding Security", 299, Rarity.UNCOMMON, mage.cards.w.WeddingSecurity.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -454,7 +450,6 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Witness the Future", 90, Rarity.UNCOMMON, mage.cards.w.WitnessTheFuture.class));
|
||||
cards.add(new SetCardInfo("Wolf Strike", 228, Rarity.COMMON, mage.cards.w.WolfStrike.class));
|
||||
cards.add(new SetCardInfo("Wolfkin Outcast", 229, Rarity.UNCOMMON, mage.cards.w.WolfkinOutcast.class));
|
||||
cards.add(new SetCardInfo("Wrathful Jailbreaker", 184, Rarity.COMMON, mage.cards.w.WrathfulJailbreaker.class));
|
||||
cards.add(new SetCardInfo("Wretched Throng", 91, Rarity.COMMON, mage.cards.w.WretchedThrong.class));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -77,7 +77,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Bloodtithe Harvester", 499, Rarity.UNCOMMON, mage.cards.b.BloodtitheHarvester.class));
|
||||
cards.add(new SetCardInfo("Bloodvial Purveyor", 365, Rarity.RARE, mage.cards.b.BloodvialPurveyor.class));
|
||||
cards.add(new SetCardInfo("Bloody Betrayal", 414, Rarity.COMMON, mage.cards.b.BloodyBetrayal.class));
|
||||
cards.add(new SetCardInfo("Blossom-Clad Werewolf", 493, Rarity.COMMON, mage.cards.b.BlossomCladWerewolf.class));
|
||||
cards.add(new SetCardInfo("Boarded Window", 520, Rarity.UNCOMMON, mage.cards.b.BoardedWindow.class));
|
||||
cards.add(new SetCardInfo("Borrowed Time", 6, Rarity.UNCOMMON, mage.cards.b.BorrowedTime.class));
|
||||
cards.add(new SetCardInfo("Bounding Wolf", 170, Rarity.COMMON, mage.cards.b.BoundingWolf.class));
|
||||
|
|
@ -550,8 +549,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Weary Prisoner", 451, Rarity.COMMON, mage.cards.w.WearyPrisoner.class));
|
||||
cards.add(new SetCardInfo("Weaver of Blossoms", 493, Rarity.COMMON, mage.cards.w.WeaverOfBlossoms.class));
|
||||
cards.add(new SetCardInfo("Wedding Announcement", 312, Rarity.RARE, mage.cards.w.WeddingAnnouncement.class));
|
||||
cards.add(new SetCardInfo("Wedding Crasher", 496, Rarity.UNCOMMON, mage.cards.w.WeddingCrasher.class));
|
||||
cards.add(new SetCardInfo("Wedding Festivity", 312, Rarity.RARE, mage.cards.w.WeddingFestivity.class));
|
||||
cards.add(new SetCardInfo("Wedding Invitation", 527, Rarity.COMMON, mage.cards.w.WeddingInvitation.class));
|
||||
cards.add(new SetCardInfo("Wedding Security", 405, Rarity.UNCOMMON, mage.cards.w.WeddingSecurity.class));
|
||||
cards.add(new SetCardInfo("Welcoming Vampire", 313, Rarity.RARE, mage.cards.w.WelcomingVampire.class));
|
||||
|
|
@ -563,7 +560,6 @@ public final class InnistradDoubleFeature extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Witness the Future", 357, Rarity.UNCOMMON, mage.cards.w.WitnessTheFuture.class));
|
||||
cards.add(new SetCardInfo("Wolf Strike", 495, Rarity.COMMON, mage.cards.w.WolfStrike.class));
|
||||
cards.add(new SetCardInfo("Wolfkin Outcast", 496, Rarity.UNCOMMON, mage.cards.w.WolfkinOutcast.class));
|
||||
cards.add(new SetCardInfo("Wrathful Jailbreaker", 451, Rarity.COMMON, mage.cards.w.WrathfulJailbreaker.class));
|
||||
cards.add(new SetCardInfo("Wrenn and Seven", 208, Rarity.MYTHIC, mage.cards.w.WrennAndSeven.class));
|
||||
cards.add(new SetCardInfo("Wretched Throng", 358, Rarity.COMMON, mage.cards.w.WretchedThrong.class));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -352,8 +352,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Olivia Voldaren", 246, Rarity.MYTHIC, mage.cards.o.OliviaVoldaren.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Olivia Voldaren", 490, Rarity.MYTHIC, mage.cards.o.OliviaVoldaren.class, FULL_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Olivia's Dragoon", 127, Rarity.COMMON, mage.cards.o.OliviasDragoon.class));
|
||||
cards.add(new SetCardInfo("Ormendahl, Profane Prince", 287, Rarity.RARE, mage.cards.o.OrmendahlProfanePrince.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ormendahl, Profane Prince", 474, Rarity.RARE, mage.cards.o.OrmendahlProfanePrince.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Overcharged Amalgam", 80, Rarity.RARE, mage.cards.o.OverchargedAmalgam.class));
|
||||
cards.add(new SetCardInfo("Overgrown Farmland", 281, Rarity.RARE, mage.cards.o.OvergrownFarmland.class));
|
||||
cards.add(new SetCardInfo("Pack Guardian", 211, Rarity.UNCOMMON, mage.cards.p.PackGuardian.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -505,8 +503,6 @@ public class InnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Wandering Mind", 437, Rarity.UNCOMMON, mage.cards.w.WanderingMind.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Wedding Announcement", 453, Rarity.RARE, mage.cards.w.WeddingAnnouncement.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Wedding Announcement", 51, Rarity.RARE, mage.cards.w.WeddingAnnouncement.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Wedding Festivity", 453, Rarity.RARE, mage.cards.w.WeddingFestivity.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Wedding Festivity", 51, Rarity.RARE, mage.cards.w.WeddingFestivity.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Westvale Abbey", 287, Rarity.RARE, mage.cards.w.WestvaleAbbey.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Westvale Abbey", 474, Rarity.RARE, mage.cards.w.WestvaleAbbey.class, RETRO_ART_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Wild Hunger", 225, Rarity.UNCOMMON, mage.cards.w.WildHunger.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ public final class JurassicWorldCollection extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Indoraptor, the Perfect Hybrid", 40, Rarity.RARE, mage.cards.i.IndoraptorThePerfectHybrid.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Island", 22, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
|
||||
cards.add(new SetCardInfo("Island", "22b", Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
|
||||
cards.add(new SetCardInfo("Jurassic Park", 7, Rarity.RARE, mage.cards.j.JurassicPark.class));
|
||||
cards.add(new SetCardInfo("Life Finds a Way", 31, Rarity.RARE, mage.cards.l.LifeFindsAWay.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Life Finds a Way", 5, Rarity.RARE, mage.cards.l.LifeFindsAWay.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Mountain", 24, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -3022,7 +3022,6 @@ public class MagicOnlinePromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Weathered Wayfarer", 102223, Rarity.RARE, mage.cards.w.WeatheredWayfarer.class));
|
||||
cards.add(new SetCardInfo("Weaver of Harmony", 98031, Rarity.RARE, mage.cards.w.WeaverOfHarmony.class));
|
||||
cards.add(new SetCardInfo("Wedding Announcement", 95267, Rarity.RARE, mage.cards.w.WeddingAnnouncement.class));
|
||||
cards.add(new SetCardInfo("Wedding Festivity", 95267, Rarity.RARE, mage.cards.w.WeddingFestivity.class));
|
||||
cards.add(new SetCardInfo("Wee Dragonauts", 35174, Rarity.COMMON, mage.cards.w.WeeDragonauts.class));
|
||||
cards.add(new SetCardInfo("Werewolf Pack Leader", 92760, Rarity.RARE, mage.cards.w.WerewolfPackLeader.class));
|
||||
cards.add(new SetCardInfo("Wheel and Deal", 62411, Rarity.RARE, mage.cards.w.WheelAndDeal.class));
|
||||
|
|
|
|||
|
|
@ -1062,7 +1062,6 @@ public class SecretLairDrop extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Bloodline Keeper", 1157, Rarity.RARE, mage.cards.b.BloodlineKeeper.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Nicol Bolas, the Ravager", 1158, Rarity.MYTHIC, mage.cards.n.NicolBolasTheRavager.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Westvale Abbey", 1159, Rarity.RARE, mage.cards.w.WestvaleAbbey.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ormendahl, Profane Prince", 1159, Rarity.RARE, mage.cards.o.OrmendahlProfanePrince.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Emrakul, the Promised End", 1160, Rarity.MYTHIC, mage.cards.e.EmrakulThePromisedEnd.class));
|
||||
cards.add(new SetCardInfo("Serra Angel", 1161, Rarity.RARE, mage.cards.s.SerraAngel.class));
|
||||
cards.add(new SetCardInfo("Brainstorm", 1162, Rarity.RARE, mage.cards.b.Brainstorm.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
@ -1116,7 +1115,6 @@ public class SecretLairDrop extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Bloodline Keeper", 1210, Rarity.RARE, mage.cards.b.BloodlineKeeper.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Nicol Bolas, the Ravager", 1211, Rarity.MYTHIC, mage.cards.n.NicolBolasTheRavager.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Westvale Abbey", 1212, Rarity.RARE, mage.cards.w.WestvaleAbbey.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Ormendahl, Profane Prince", 1212, Rarity.RARE, mage.cards.o.OrmendahlProfanePrince.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Phyrexian Unlife", 1213, Rarity.RARE, mage.cards.p.PhyrexianUnlife.class));
|
||||
cards.add(new SetCardInfo("Phyrexian Crusader", 1214, Rarity.RARE, mage.cards.p.PhyrexianCrusader.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Plague Engineer", 1215, Rarity.RARE, mage.cards.p.PlagueEngineer.class));
|
||||
|
|
|
|||
|
|
@ -219,7 +219,6 @@ public final class ShadowsOverInnistrad extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Olivia, Mobilized for War", 248, Rarity.MYTHIC, mage.cards.o.OliviaMobilizedForWar.class));
|
||||
cards.add(new SetCardInfo("Ongoing Investigation", 77, Rarity.UNCOMMON, mage.cards.o.OngoingInvestigation.class));
|
||||
cards.add(new SetCardInfo("Open the Armory", 32, Rarity.UNCOMMON, mage.cards.o.OpenTheArmory.class));
|
||||
cards.add(new SetCardInfo("Ormendahl, Profane Prince", 281, Rarity.RARE, mage.cards.o.OrmendahlProfanePrince.class));
|
||||
cards.add(new SetCardInfo("Pack Guardian", 221, Rarity.UNCOMMON, mage.cards.p.PackGuardian.class));
|
||||
cards.add(new SetCardInfo("Pale Rider of Trostad", 128, Rarity.UNCOMMON, mage.cards.p.PaleRiderOfTrostad.class));
|
||||
cards.add(new SetCardInfo("Paranoid Parish-Blade", 33, Rarity.UNCOMMON, mage.cards.p.ParanoidParishBlade.class));
|
||||
|
|
|
|||
|
|
@ -80,7 +80,6 @@ public class ShadowsOverInnistradPromos extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Nephalia Moondrakes", 75, Rarity.RARE, mage.cards.n.NephaliaMoondrakes.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Odric, Lunarch Marshal", "31s", Rarity.RARE, mage.cards.o.OdricLunarchMarshal.class));
|
||||
cards.add(new SetCardInfo("Olivia, Mobilized for War", "248s", Rarity.MYTHIC, mage.cards.o.OliviaMobilizedForWar.class));
|
||||
cards.add(new SetCardInfo("Ormendahl, Profane Prince", "281s", Rarity.RARE, mage.cards.o.OrmendahlProfanePrince.class));
|
||||
cards.add(new SetCardInfo("Port Town", "278s", Rarity.RARE, mage.cards.p.PortTown.class));
|
||||
cards.add(new SetCardInfo("Prized Amalgam", "249s", Rarity.RARE, mage.cards.p.PrizedAmalgam.class));
|
||||
cards.add(new SetCardInfo("Rattlechains", "81s", Rarity.RARE, mage.cards.r.Rattlechains.class));
|
||||
|
|
|
|||
|
|
@ -225,7 +225,6 @@ public class ShadowsOverInnistradRemastered extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Olivia's Dragoon", 128, Rarity.COMMON, mage.cards.o.OliviasDragoon.class));
|
||||
cards.add(new SetCardInfo("Olivia, Mobilized for War", 239, Rarity.MYTHIC, mage.cards.o.OliviaMobilizedForWar.class));
|
||||
cards.add(new SetCardInfo("Ongoing Investigation", 84, Rarity.UNCOMMON, mage.cards.o.OngoingInvestigation.class));
|
||||
cards.add(new SetCardInfo("Ormendahl, Profane Prince", 275, Rarity.RARE, mage.cards.o.OrmendahlProfanePrince.class));
|
||||
cards.add(new SetCardInfo("Pack Guardian", 208, Rarity.UNCOMMON, mage.cards.p.PackGuardian.class));
|
||||
cards.add(new SetCardInfo("Permeating Mass", 209, Rarity.RARE, mage.cards.p.PermeatingMass.class));
|
||||
cards.add(new SetCardInfo("Pick the Brain", 129, Rarity.UNCOMMON, mage.cards.p.PickTheBrain.class));
|
||||
|
|
|
|||
|
|
@ -447,7 +447,6 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Warden of the Inner Sky", 359, Rarity.RARE, mage.cards.w.WardenOfTheInnerSky.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Warden of the Inner Sky", 43, Rarity.RARE, mage.cards.w.WardenOfTheInnerSky.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Waterlogged Hulk", 83, Rarity.UNCOMMON, mage.cards.w.WaterloggedHulk.class));
|
||||
cards.add(new SetCardInfo("Watertight Gondola", 83, Rarity.UNCOMMON, mage.cards.w.WatertightGondola.class));
|
||||
cards.add(new SetCardInfo("Waterwind Scout", 84, Rarity.COMMON, mage.cards.w.WaterwindScout.class));
|
||||
cards.add(new SetCardInfo("Waylaying Pirates", 85, Rarity.COMMON, mage.cards.w.WaylayingPirates.class));
|
||||
cards.add(new SetCardInfo("Zoetic Glyph", 86, Rarity.UNCOMMON, mage.cards.z.ZoeticGlyph.class));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue