mirror of
https://github.com/correl/mage.git
synced 2024-12-26 11:09:27 +00:00
Merge pull request #9720 from PurpleCrowbar/ashnod-flesh-mechanist
[BRO] Implement Ashnod, Flesh Mechanist
This commit is contained in:
commit
7af7654c80
14 changed files with 125 additions and 112 deletions
|
@ -18,9 +18,7 @@ import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -30,13 +28,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class AhnCropInvader extends CardImpl {
|
public final class AhnCropInvader extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter
|
|
||||||
= new FilterControlledCreaturePermanent("another creature");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public AhnCropInvader(UUID ownerId, CardSetInfo setInfo) {
|
public AhnCropInvader(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
||||||
|
|
||||||
|
@ -63,7 +54,7 @@ public final class AhnCropInvader extends CardImpl {
|
||||||
Ability ability = new SimpleActivatedAbility(
|
Ability ability = new SimpleActivatedAbility(
|
||||||
new BoostSourceEffect(2, 0, Duration.EndOfTurn), new GenericManaCost(1)
|
new BoostSourceEffect(2, 0, Duration.EndOfTurn), new GenericManaCost(1)
|
||||||
);
|
);
|
||||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
|
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,7 @@ import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -22,12 +21,6 @@ import mage.target.common.TargetControlledPermanent;
|
||||||
*/
|
*/
|
||||||
public final class ApocalypseDemon extends CardImpl {
|
public final class ApocalypseDemon extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ApocalypseDemon(UUID ownerId, CardSetInfo cardSetInfo) {
|
public ApocalypseDemon(UUID ownerId, CardSetInfo cardSetInfo) {
|
||||||
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
|
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
|
||||||
subtype.add(SubType.DEMON);
|
subtype.add(SubType.DEMON);
|
||||||
|
@ -39,7 +32,7 @@ public final class ApocalypseDemon extends CardImpl {
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessSourceEffect(new CardsInControllerGraveyardCount(), Duration.EndOfGame)));
|
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessSourceEffect(new CardsInControllerGraveyardCount(), Duration.EndOfGame)));
|
||||||
|
|
||||||
// At the beginning of your upkeep, tap Apocalypse Demon unless you sacrifice another creature.
|
// At the beginning of your upkeep, tap Apocalypse Demon unless you sacrifice another creature.
|
||||||
TapSourceUnlessPaysEffect tapEffect = new TapSourceUnlessPaysEffect(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
|
TapSourceUnlessPaysEffect tapEffect = new TapSourceUnlessPaysEffect(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||||
tapEffect.setText("tap {this} unless you sacrifice another creature.");
|
tapEffect.setText("tap {this} unless you sacrifice another creature.");
|
||||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(tapEffect, TargetController.YOU, false));
|
this.addAbility(new BeginningOfUpkeepTriggeredAbility(tapEffect, TargetController.YOU, false));
|
||||||
}
|
}
|
||||||
|
|
66
Mage.Sets/src/mage/cards/a/AshnodFleshMechanist.java
Normal file
66
Mage.Sets/src/mage/cards/a/AshnodFleshMechanist.java
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
package mage.cards.a;
|
||||||
|
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.AttacksTriggeredAbility;
|
||||||
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.common.ExileFromGraveCost;
|
||||||
|
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||||
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
|
import mage.abilities.effects.common.DoIfCostPaid;
|
||||||
|
import mage.abilities.keyword.DeathtouchAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.constants.SuperType;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
|
import mage.game.permanent.token.AshnodZombieToken;
|
||||||
|
import mage.game.permanent.token.PowerstoneToken;
|
||||||
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author PurpleCrowbar
|
||||||
|
*/
|
||||||
|
public final class AshnodFleshMechanist extends CardImpl {
|
||||||
|
|
||||||
|
public AshnodFleshMechanist(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
|
||||||
|
this.addSuperType(SuperType.LEGENDARY);
|
||||||
|
this.subtype.add(SubType.HUMAN, SubType.ARTIFICER);
|
||||||
|
this.power = new MageInt(1);
|
||||||
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
|
// Deathtouch
|
||||||
|
this.addAbility(DeathtouchAbility.getInstance());
|
||||||
|
|
||||||
|
// Whenever Ashnod, Flesh Mechanist attacks, you may sacrifice another creature. If you do, create a tapped Powerstone token.
|
||||||
|
this.addAbility(new AttacksTriggeredAbility(
|
||||||
|
new DoIfCostPaid(
|
||||||
|
new CreateTokenEffect(
|
||||||
|
new PowerstoneToken(), 1, true, false
|
||||||
|
), new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE))
|
||||||
|
), false
|
||||||
|
));
|
||||||
|
|
||||||
|
// {5}, Exile a creature card from your graveyard: Create a tapped 3/3 colorless Zombie artifact creature token.
|
||||||
|
Ability ability = new SimpleActivatedAbility(
|
||||||
|
new CreateTokenEffect(new AshnodZombieToken(), 1, true, false), new GenericManaCost(5)
|
||||||
|
);
|
||||||
|
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_A)));
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
private AshnodFleshMechanist(final AshnodFleshMechanist card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AshnodFleshMechanist copy() {
|
||||||
|
return new AshnodFleshMechanist(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,9 +10,7 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -22,13 +20,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class BloodmistInfiltrator extends CardImpl {
|
public final class BloodmistInfiltrator extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter
|
|
||||||
= new FilterControlledCreaturePermanent("another creature");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public BloodmistInfiltrator(UUID ownerId, CardSetInfo setInfo) {
|
public BloodmistInfiltrator(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||||
|
|
||||||
|
@ -39,7 +30,7 @@ public final class BloodmistInfiltrator extends CardImpl {
|
||||||
// Whenever Bloodmist Infiltrator attacks, you may sacrifice another creature. If you do, Bloodmist Infiltrator can't be blocked this turn.
|
// Whenever Bloodmist Infiltrator attacks, you may sacrifice another creature. If you do, Bloodmist Infiltrator can't be blocked this turn.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(
|
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(
|
||||||
new CantBeBlockedSourceEffect(Duration.EndOfTurn),
|
new CantBeBlockedSourceEffect(Duration.EndOfTurn),
|
||||||
new SacrificeTargetCost(new TargetControlledPermanent(filter))
|
new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE))
|
||||||
), false));
|
), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,7 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.game.permanent.token.TokenImpl;
|
import mage.game.permanent.token.TokenImpl;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
|
@ -24,13 +22,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class BogardanDragonheart extends CardImpl {
|
public final class BogardanDragonheart extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter
|
|
||||||
= new FilterControlledCreaturePermanent("another creature");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public BogardanDragonheart(UUID ownerId, CardSetInfo setInfo) {
|
public BogardanDragonheart(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
||||||
|
|
||||||
|
@ -43,7 +34,7 @@ public final class BogardanDragonheart extends CardImpl {
|
||||||
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
|
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
|
||||||
new BogardanDragonheartToken(), null, Duration.EndOfTurn, false,
|
new BogardanDragonheartToken(), null, Duration.EndOfTurn, false,
|
||||||
false, null, null, false
|
false, null, null, false
|
||||||
), new SacrificeTargetCost(new TargetControlledPermanent(filter))));
|
), new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE))));
|
||||||
}
|
}
|
||||||
|
|
||||||
private BogardanDragonheart(final BogardanDragonheart card) {
|
private BogardanDragonheart(final BogardanDragonheart card) {
|
||||||
|
|
|
@ -16,11 +16,9 @@ import mage.constants.CardType;
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.FilterCard;
|
import mage.filter.FilterCard;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
|
||||||
import mage.filter.common.FilterCreatureCard;
|
import mage.filter.common.FilterCreatureCard;
|
||||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.target.common.TargetCardInYourGraveyard;
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
import mage.target.common.TargetOpponentsCreaturePermanent;
|
import mage.target.common.TargetOpponentsCreaturePermanent;
|
||||||
|
@ -32,14 +30,11 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class CavalierOfNight extends CardImpl {
|
public final class CavalierOfNight extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter
|
private static final FilterCard filter
|
||||||
= new FilterControlledCreaturePermanent("another creature");
|
|
||||||
private static final FilterCard filter2
|
|
||||||
= new FilterCreatureCard("creature card with mana value 3 or less from your graveyard");
|
= new FilterCreatureCard("creature card with mana value 3 or less from your graveyard");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(AnotherPredicate.instance);
|
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));
|
||||||
filter2.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CavalierOfNight(UUID ownerId, CardSetInfo setInfo) {
|
public CavalierOfNight(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
@ -59,13 +54,13 @@ public final class CavalierOfNight extends CardImpl {
|
||||||
);
|
);
|
||||||
triggeredAbility.addTarget(new TargetOpponentsCreaturePermanent());
|
triggeredAbility.addTarget(new TargetOpponentsCreaturePermanent());
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
|
||||||
triggeredAbility, new SacrificeTargetCost(new TargetControlledPermanent(filter)),
|
triggeredAbility, new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)),
|
||||||
"Sacrifice a creature?"
|
"Sacrifice a creature?"
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// When Cavalier of Night dies, return target creature card with converted mana cost 3 or less from your graveyard to the battlefield.
|
// When Cavalier of Night dies, return target creature card with converted mana cost 3 or less from your graveyard to the battlefield.
|
||||||
Ability ability = new DiesSourceTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect());
|
Ability ability = new DiesSourceTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect());
|
||||||
ability.addTarget(new TargetCardInYourGraveyard(filter2));
|
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,7 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,12 +20,6 @@ import mage.target.common.TargetControlledPermanent;
|
||||||
*/
|
*/
|
||||||
public final class DemonlordOfAshmouth extends CardImpl {
|
public final class DemonlordOfAshmouth extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(" another creature");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DemonlordOfAshmouth(UUID ownerId, CardSetInfo setInfo) {
|
public DemonlordOfAshmouth(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
|
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{B}");
|
||||||
this.subtype.add(SubType.DEMON);
|
this.subtype.add(SubType.DEMON);
|
||||||
|
@ -37,7 +30,11 @@ public final class DemonlordOfAshmouth extends CardImpl {
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// When Demonlord of Ashmouth enters the battlefield, exile it unless you sacrifice another creature.
|
// When Demonlord of Ashmouth enters the battlefield, exile it unless you sacrifice another creature.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new ExileSourceUnlessPaysEffect(new SacrificeTargetCost(new TargetControlledPermanent(filter)))));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||||
|
new ExileSourceUnlessPaysEffect(
|
||||||
|
new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE))
|
||||||
|
)
|
||||||
|
));
|
||||||
|
|
||||||
this.addAbility(new UndyingAbility());
|
this.addAbility(new UndyingAbility());
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,11 +17,8 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.FilterCard;
|
import mage.filter.FilterCard;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
|
||||||
import mage.filter.common.FilterCreatureCard;
|
import mage.filter.common.FilterCreatureCard;
|
||||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.target.common.TargetCardInLibrary;
|
import mage.target.common.TargetCardInLibrary;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
@ -35,12 +32,6 @@ public final class FiendArtisan extends CardImpl {
|
||||||
|
|
||||||
private static final DynamicValue xValue
|
private static final DynamicValue xValue
|
||||||
= new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE);
|
= new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE);
|
||||||
private static final FilterControlledPermanent filter
|
|
||||||
= new FilterControlledCreaturePermanent("another creature");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public FiendArtisan(UUID ownerId, CardSetInfo setInfo) {
|
public FiendArtisan(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B/G}{B/G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B/G}{B/G}");
|
||||||
|
@ -59,7 +50,7 @@ public final class FiendArtisan extends CardImpl {
|
||||||
Zone.BATTLEFIELD, new FiendArtisanEffect(), new ManaCostsImpl<>("{X}{B/G}")
|
Zone.BATTLEFIELD, new FiendArtisanEffect(), new ManaCostsImpl<>("{X}{B/G}")
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
|
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ import mage.abilities.keyword.MorphAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
@ -35,12 +35,6 @@ import static mage.constants.Outcome.Benefit;
|
||||||
*/
|
*/
|
||||||
public final class GiftOfDoom extends CardImpl {
|
public final class GiftOfDoom extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public GiftOfDoom(UUID ownerId, CardSetInfo setInfo) {
|
public GiftOfDoom(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{B}");
|
||||||
|
|
||||||
|
@ -65,7 +59,7 @@ public final class GiftOfDoom extends CardImpl {
|
||||||
|
|
||||||
// Morph—Sacrifice another creature.
|
// Morph—Sacrifice another creature.
|
||||||
this.addAbility(new MorphAbility(new SacrificeTargetCost(
|
this.addAbility(new MorphAbility(new SacrificeTargetCost(
|
||||||
new TargetControlledPermanent(filter)
|
new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// As Gift of Doom is turned face up, you may attach it to a creature.
|
// As Gift of Doom is turned face up, you may attach it to a creature.
|
||||||
|
|
|
@ -4,7 +4,6 @@ import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.ActivatedAbilityImpl;
|
import mage.abilities.ActivatedAbilityImpl;
|
||||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
|
||||||
import mage.abilities.costs.Cost;
|
import mage.abilities.costs.Cost;
|
||||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
@ -16,9 +15,7 @@ import mage.constants.*;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,13 +24,6 @@ import mage.target.common.TargetControlledPermanent;
|
||||||
*/
|
*/
|
||||||
public final class UndercityNecrolisk extends CardImpl {
|
public final class UndercityNecrolisk extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter
|
|
||||||
= new FilterControlledCreaturePermanent("another creature");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public UndercityNecrolisk(UUID ownerId, CardSetInfo setInfo) {
|
public UndercityNecrolisk(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||||
|
|
||||||
|
@ -50,7 +40,7 @@ public final class UndercityNecrolisk extends CardImpl {
|
||||||
new GenericManaCost(1)
|
new GenericManaCost(1)
|
||||||
);
|
);
|
||||||
ability.addCost(new SacrificeTargetCost(
|
ability.addCost(new SacrificeTargetCost(
|
||||||
new TargetControlledPermanent(filter)
|
new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)
|
||||||
));
|
));
|
||||||
// It gains menace until end of turn. Activate this ability only any time you could cast a sorcery.
|
// It gains menace until end of turn. Activate this ability only any time you could cast a sorcery.
|
||||||
ability.addEffect(new GainAbilitySourceEffect(
|
ability.addEffect(new GainAbilitySourceEffect(
|
||||||
|
|
|
@ -11,9 +11,7 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -23,12 +21,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class UndercityScavenger extends CardImpl {
|
public final class UndercityScavenger extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("another creature");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public UndercityScavenger(UUID ownerId, CardSetInfo setInfo) {
|
public UndercityScavenger(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||||
|
|
||||||
|
@ -40,7 +32,7 @@ public final class UndercityScavenger extends CardImpl {
|
||||||
// When Undercity Scavenger enters the battlefield, you may sacrifice another creature. If you do, put two +1/+1 counters on Undercity Scavenger, then scry 2.
|
// When Undercity Scavenger enters the battlefield, you may sacrifice another creature. If you do, put two +1/+1 counters on Undercity Scavenger, then scry 2.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoIfCostPaid(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoIfCostPaid(
|
||||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
|
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
|
||||||
new SacrificeTargetCost(new TargetControlledPermanent(filter))
|
new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE))
|
||||||
).addEffect(new ScryEffect(2).concatBy(", then"))));
|
).addEffect(new ScryEffect(2).concatBy(", then"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,7 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.game.permanent.token.GoatToken;
|
import mage.game.permanent.token.GoatToken;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
|
@ -25,13 +23,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class WoeStrider extends CardImpl {
|
public final class WoeStrider extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter
|
|
||||||
= new FilterControlledCreaturePermanent("another creature");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WoeStrider(UUID ownerId, CardSetInfo setInfo) {
|
public WoeStrider(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||||
|
|
||||||
|
@ -44,7 +35,7 @@ public final class WoeStrider extends CardImpl {
|
||||||
|
|
||||||
// Sacrifice another creature: Scry 1.
|
// Sacrifice another creature: Scry 1.
|
||||||
this.addAbility(new SimpleActivatedAbility(
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
new ScryEffect(1, false), new SacrificeTargetCost(new TargetControlledPermanent(filter))
|
new ScryEffect(1, false), new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE))
|
||||||
));
|
));
|
||||||
|
|
||||||
// Escape—{3}{B}{B}, Exile four other cards from your graveyard.
|
// Escape—{3}{B}{B}, Exile four other cards from your graveyard.
|
||||||
|
|
|
@ -31,6 +31,7 @@ public final class TheBrothersWar extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Argivian Avenger", 232, Rarity.UNCOMMON, mage.cards.a.ArgivianAvenger.class));
|
cards.add(new SetCardInfo("Argivian Avenger", 232, Rarity.UNCOMMON, mage.cards.a.ArgivianAvenger.class));
|
||||||
cards.add(new SetCardInfo("Argoth, Sanctum of Nature", "256a", Rarity.RARE, mage.cards.a.ArgothSanctumOfNature.class));
|
cards.add(new SetCardInfo("Argoth, Sanctum of Nature", "256a", Rarity.RARE, mage.cards.a.ArgothSanctumOfNature.class));
|
||||||
cards.add(new SetCardInfo("Argothian Opportunist", 167, Rarity.COMMON, mage.cards.a.ArgothianOpportunist.class));
|
cards.add(new SetCardInfo("Argothian Opportunist", 167, Rarity.COMMON, mage.cards.a.ArgothianOpportunist.class));
|
||||||
|
cards.add(new SetCardInfo("Ashnod, Flesh Mechanist", 84, Rarity.RARE, mage.cards.a.AshnodFleshMechanist.class));
|
||||||
cards.add(new SetCardInfo("Ashnod's Harvester", 117, Rarity.UNCOMMON, mage.cards.a.AshnodsHarvester.class));
|
cards.add(new SetCardInfo("Ashnod's Harvester", 117, Rarity.UNCOMMON, mage.cards.a.AshnodsHarvester.class));
|
||||||
cards.add(new SetCardInfo("Audacity", 169, Rarity.UNCOMMON, mage.cards.a.Audacity.class));
|
cards.add(new SetCardInfo("Audacity", 169, Rarity.UNCOMMON, mage.cards.a.Audacity.class));
|
||||||
cards.add(new SetCardInfo("Autonomous Assembler", 34, Rarity.RARE, mage.cards.a.AutonomousAssembler.class));
|
cards.add(new SetCardInfo("Autonomous Assembler", 34, Rarity.RARE, mage.cards.a.AutonomousAssembler.class));
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package mage.game.permanent.token;
|
||||||
|
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author PurpleCrowbar
|
||||||
|
*/
|
||||||
|
public final class AshnodZombieToken extends TokenImpl {
|
||||||
|
|
||||||
|
public AshnodZombieToken() {
|
||||||
|
super("Zombie Token", "3/3 colorless Zombie artifact creature token");
|
||||||
|
cardType.add(CardType.ARTIFACT);
|
||||||
|
cardType.add(CardType.CREATURE);
|
||||||
|
subtype.add(SubType.ZOMBIE);
|
||||||
|
power = new MageInt(3);
|
||||||
|
toughness = new MageInt(3);
|
||||||
|
|
||||||
|
setOriginalExpansionSetCode("BRO");
|
||||||
|
}
|
||||||
|
|
||||||
|
public AshnodZombieToken(final AshnodZombieToken token) {
|
||||||
|
super(token);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AshnodZombieToken copy() {
|
||||||
|
return new AshnodZombieToken(this);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue