Merge pull request #71 from magefree/master

merge
This commit is contained in:
theelk801 2017-09-16 10:51:41 -04:00 committed by GitHub
commit e2c0b96f4a
143 changed files with 327 additions and 234 deletions

View file

@ -64,6 +64,7 @@ public enum MythicspoilerComSource implements CardImageSource {
private final Map<String, Set<String>> cardNameAliasesStart;
private final Map<String, Map<String, String>> sets;
private final Set<String> supportedSets;
private final Map<String, Map<String, String>> manualLinks;
@Override
public String getSourceName() {
@ -277,6 +278,21 @@ public enum MythicspoilerComSource implements CardImageSource {
cardNameAliases.put("XLN-infuriatedgladiodon", "ragingswordtooth");
cardNameAliases.put("XLN-redoubledvolley", "repeatingbarrage");
// <card name, card link>
manualLinks = new HashMap<>();
HashMap<String, String> links = new HashMap<>();
links.put("templeofaclazotz", "templeofaclazotz");
links.put("conquerorsfoothold", "conquerorsfoothold");
links.put("primalwellspring", "primalwellspring");
links.put("azcantathesunkenruin", "azcantathesunkenruin");
links.put("spiresoforazca", "spiresoforazca");
links.put("treasurecove", "treasurecove");
links.put("itlimoccradleofthesun", "itlimoccradleofthesun");
links.put("lostvale", "lostvale");
links.put("adantothefirstfort", "adantothefirstport");
links.put("spitfirebastion", "spitfirebastion");
manualLinks.put("XLN", links);
cardNameAliasesStart = new HashMap<>();
HashSet<String> names = new HashSet<>();
names.add("eldrazidevastator.jpg");
@ -372,7 +388,12 @@ public enum MythicspoilerComSource implements CardImageSource {
pageLinks.put(cardName, baseUrl + cardLink);
}
}
Map<String, String> linksToAdd = manualLinks.get(cardSet);
if (linksToAdd != null) {
for (Map.Entry<String, String> link : linksToAdd.entrySet()) {
pageLinks.put(link.getKey(), baseUrl + "cards/" + link.getValue() + ".jpg");
}
}
return pageLinks;
}

View file

@ -85,7 +85,8 @@ public class AdmiralBeckettBrass extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, true)));
// At the beginning of your end step, gain control of target nonland permanent controlled by a player who was dealt combat damage by three or more Pirates this turn.
Ability ability = new BeginningOfEndStepTriggeredAbility(new GainControlTargetEffect(Duration.Custom), TargetController.YOU, false);
Ability ability = new BeginningOfEndStepTriggeredAbility(new GainControlTargetEffect(Duration.Custom)
.setText("gain control of target nonland permanent controlled by a player who was dealt combat damage by three or more Pirates this turn"), TargetController.YOU, false);
ability.addTarget(new TargetNonlandPermanent());
originalId = ability.getOriginalId();
this.addAbility(ability, new DamagedByPiratesWatcher());

View file

@ -51,7 +51,7 @@ public class AdroitHateflayer extends CardImpl {
this.toughness = new MageInt(3);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Whenever Adroit Hateflayer attacks, each opponent loses 2 life.
this.addAbility(new AttacksTriggeredAbility(new LoseLifeOpponentsEffect(2), false));

View file

@ -50,7 +50,7 @@ public class AlleyStrangler extends CardImpl {
this.toughness = new MageInt(3);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
}
public AlleyStrangler(final AlleyStrangler card) {

View file

@ -32,13 +32,12 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.constants.*;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.target.common.TargetCreaturePermanent;
/**
*
@ -54,14 +53,16 @@ public class AnointedDeacon extends CardImpl {
public AnointedDeacon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
this.subtype.add(SubType.VAMPIRE);
this.subtype.add(SubType.CLERIC);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// At the beginning of combat on your turn, you may have target Vampire get +2/+0 until end of turn.
Ability ability = new BeginningOfCombatTriggeredAbility(Zone.BATTLEFIELD, new BoostTargetEffect(2, 0, Duration.EndOfTurn), TargetController.YOU, true, false);
Ability ability = new BeginningOfCombatTriggeredAbility(Zone.BATTLEFIELD,
new BoostTargetEffect(2, 0, Duration.EndOfTurn).setText("you may have target Vampire get +2/+0 until end of turn"),
TargetController.YOU, true, false);
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);
}

View file

@ -49,7 +49,7 @@ public class AradaraExpress extends CardImpl {
this.toughness = new MageInt(6);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Crew 4
this.addAbility(new CrewAbility(4));
}

View file

@ -52,7 +52,7 @@ public class AshesOfTheAbhorrent extends CardImpl {
public AshesOfTheAbhorrent(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
// Players can't cast spells from graveyards or activate abilities from graveyards.
// Players can't cast spells from graveyards or activate abilities of cards in graveyards.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AshesOfTheAbhorrentEffect()));
// Whenever a creature dies, you gain 1 life.
@ -73,7 +73,7 @@ class AshesOfTheAbhorrentEffect extends ContinuousRuleModifyingEffectImpl {
public AshesOfTheAbhorrentEffect() {
super(Duration.WhileOnBattlefield, Outcome.Neutral);
staticText = "Players can't cast spells from graveyards or activate abilities from graveyards";
staticText = "Players can't cast spells from graveyards or activate abilities of cards in graveyards";
}
public AshesOfTheAbhorrentEffect(final AshesOfTheAbhorrentEffect effect) {

View file

@ -63,7 +63,7 @@ public class AtarkaPummeler extends CardImpl {
// <i>Formidable</i> - {3}{R}{R}: Creatures you control gain menace until end of turn. Activate this ability only if creature you control have total power 8 or greater. (They can't be blocked except by two or more creatures.)
Ability ability = new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD,
new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, filter),
new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, filter),
new ManaCostsImpl("{3}{R}{R}"),
FormidableCondition.instance);
ability.setAbilityWord(AbilityWord.FORMIDABLE);

View file

@ -62,7 +62,7 @@ public class BelligerentSliver extends CardImpl {
this.toughness = new MageInt(2);
// Sliver creatures you control have menace. (They can't be blocked except by two or more creatures.)"
Effect effect = new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter);
Effect effect = new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter);
effect.setText("Sliver creatures you control have menace. (They can't be blocked except by two or more creatures.)");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
}

View file

@ -36,8 +36,8 @@ import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.ComparisonType;
import mage.constants.SubType;
import mage.filter.FilterCard;
import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.mageobject.CardTypePredicate;
@ -49,7 +49,7 @@ import mage.target.common.TargetCardInYourGraveyard;
* @author TacomenX
*/
public class BishopOfRebirth extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard("creature card with converted mana cost 3 or less from your graveyard");
static {
@ -59,7 +59,7 @@ public class BishopOfRebirth extends CardImpl {
public BishopOfRebirth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
this.subtype.add(SubType.VAMPIRE);
this.subtype.add(SubType.CLERIC);
this.power = new MageInt(3);
@ -69,7 +69,8 @@ public class BishopOfRebirth extends CardImpl {
this.addAbility(VigilanceAbility.getInstance());
// Whenever Bishop of Rebirth attacks, you may return target creature card with converted mana cost 3 or less from your graveyard to the battlefield.
Ability ability = new AttacksTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect(), true);
Ability ability = new AttacksTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect()
.setText("you may return target creature card with converted mana cost 3 or less from your graveyard to the battlefield"), true);
ability.addTarget(new TargetCardInYourGraveyard(filter));
this.addAbility(ability);
}

View file

@ -33,15 +33,15 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.LoseLifeTargetEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.target.TargetPlayer;
import mage.target.common.TargetOpponent;
/**
*
@ -64,9 +64,9 @@ public class BishopOfTheBloodstained extends CardImpl {
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// When Bishop of the Bloodstained enters the battlefield, target player loses 1 life for each vampire you control.
// When Bishop of the Bloodstained enters the battlefield, target opponent loses 1 life for each vampire you control.
Ability ability = new EntersBattlefieldTriggeredAbility(new LoseLifeTargetEffect(new PermanentsOnBattlefieldCount(filter)));
ability.addTarget(new TargetPlayer());
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
}

View file

@ -36,11 +36,11 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.LoseLifeTargetEffect;
import mage.constants.SubType;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.target.common.TargetOpponent;
@ -63,7 +63,7 @@ public class BlightKeeper extends CardImpl {
// {7}{B}, {T}, Sacrifice Blight Keeper: Target opponent loses 4 life and you gain 4 life.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(4), new ManaCostsImpl("{7}{B}"));
ability.addEffect(new GainLifeEffect(4));
ability.addEffect(new GainLifeEffect(4).setText("and you gain 4 life"));
ability.addTarget(new TargetOpponent());
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());

View file

@ -60,7 +60,7 @@ public class BloodChinRager extends CardImpl {
this.toughness = new MageInt(2);
// Whenever Blood-Chin Rager attacks, Warrior creatures you control gain menace until end of turn. (They can't be blocked except by two or more creatures.)
this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, filter), false));
this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, filter), false));
}
public BloodChinRager(final BloodChinRager card) {

View file

@ -60,7 +60,7 @@ public class BobaFett extends CardImpl {
this.toughness = new MageInt(4);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Deathtouch
this.addAbility(DeathtouchAbility.getInstance());

View file

@ -48,7 +48,7 @@ public class BoggartBrute extends CardImpl {
this.toughness = new MageInt(2);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
}
public BoggartBrute(final BoggartBrute card) {

View file

@ -65,7 +65,7 @@ public class BontuTheGlorified extends CardImpl {
this.toughness = new MageInt(6);
//Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
//Indestructible
this.addAbility(IndestructibleAbility.getInstance());

View file

@ -59,7 +59,7 @@ public class BullRancor extends CardImpl {
// As long as Bull Rancor is monstrous, creatures you control have menace.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield),
new GainAbilityControlledEffect(new MenaceAbility(), Duration.WhileOnBattlefield),
MonstrousCondition.instance,
"As long as Bull Rancor is monstrous, creatures you control have menace")
));

View file

@ -66,13 +66,13 @@ public class CaterwaulingBoggart extends CardImpl {
// Each Goblin you control has menace. (They can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
MenaceAbility.getInstance(),
new MenaceAbility(),
Duration.WhileOnBattlefield, filterGoblin,
"Each Goblin you control has menace. (They can't be blocked except by two or more creatures.)")));
// Each Elemental you control has menace. (They can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
MenaceAbility.getInstance(),
new MenaceAbility(),
Duration.WhileOnBattlefield, filterElemental,
"Each Elemental you control has menace. (They can't be blocked except by two or more creatures.)")));
}

View file

@ -56,7 +56,7 @@ public class ChitinousCloak extends CardImpl {
// Equipped creature gets +2/+2 and has menace.
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2));
Effect effect = new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.EQUIPMENT);
Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.EQUIPMENT);
effect.setText("and has menace");
ability.addEffect(effect);
this.addAbility(ability);

View file

@ -61,13 +61,13 @@ public class ChitteringHost extends MeldCard {
this.addAbility(HasteAbility.getInstance());
// Menace <i>(This creature can't be blocked except by two or more creatures.
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// When Chittering Host enters the battlefield, other creatures you control get +1/+0 and gain menace until end of turn.
Effect effect = new BoostControlledEffect(1, 0, Duration.EndOfTurn, true);
effect.setText("other creatures you control get +1/+0");
Ability ability = new EntersBattlefieldTriggeredAbility(effect, false);
effect = new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent("other creatures"), true);
effect = new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, new FilterControlledCreaturePermanent("other creatures"), true);
effect.setText("and gain menace until end of turn");
ability.addEffect(effect);
this.addAbility(ability);

View file

@ -33,7 +33,7 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.DrawDiscardControllerEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -71,7 +71,7 @@ public class ConquerorsFoothold extends CardImpl {
// {6}, {T}: Return target card from your graveyard to your hand.
SimpleActivatedAbility ability3 = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new ReturnToHandTargetEffect(),
new ReturnFromGraveyardToHandTargetEffect(),
new ManaCostsImpl("{6}"));
ability3.addCost(new TapSourceCost());
ability3.addTarget(new TargetCardInYourGraveyard());

View file

@ -50,7 +50,7 @@ public class CursedMinotaur extends CardImpl {
this.toughness = new MageInt(2);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
}

View file

@ -42,9 +42,9 @@ import mage.target.common.TargetCreatureOrPlayer;
public class DarkNourishment extends CardImpl {
public DarkNourishment(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{9}{7}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}");
// Dark Nourishment deals 3 damage to target creature or player. You gain 3 life.
// Dark Nourishment deals 3 damage to target creature or player. You gain 3 life.
this.getSpellAbility().addEffect(new DamageTargetEffect(3));
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
this.getSpellAbility().addEffect(new GainLifeEffect(3));

View file

@ -63,7 +63,7 @@ public class DarthVader extends CardImpl {
this.nightCard = true;
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Lifelink
this.addAbility(LifelinkAbility.getInstance());

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapTargetCost;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -59,7 +59,7 @@ public class DeathlessAncient extends CardImpl {
public DeathlessAncient(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}");
this.subtype.add(SubType.VAMPIRE);
this.subtype.add(SubType.KNIGHT);
this.power = new MageInt(4);
@ -69,7 +69,9 @@ public class DeathlessAncient extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// Tap three untapped Vampires you control: Return Deathless Ancient from your graveyard to your hand.
this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnToHandSourceEffect(), new TapTargetCost(new TargetControlledPermanent(3, 3, filter, true))));
this.addAbility(new SimpleActivatedAbility(Zone.GRAVEYARD,
new ReturnSourceFromGraveyardToHandEffect(),
new TapTargetCost(new TargetControlledPermanent(3, 3, filter, true))));
}

View file

@ -52,7 +52,7 @@ public class Demoralize extends CardImpl {
// All creatures gain menace until end of turn. (They can't be blocked except by two or more creatures.)
this.getSpellAbility().addEffect(new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES));
this.getSpellAbility().addEffect(new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES));
// Threshold If seven or more cards are in your graveyard, creatures can't block this turn.
this.getSpellAbility().addEffect(

View file

@ -50,7 +50,7 @@ public class DeputizedProtester extends CardImpl {
this.toughness = new MageInt(1);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Melee
this.addAbility(new MeleeAbility());
}

View file

@ -48,7 +48,7 @@ public class DerangedWhelp extends CardImpl {
this.toughness = new MageInt(1);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
}
public DerangedWhelp(final DerangedWhelp card) {

View file

@ -64,7 +64,8 @@ public class DireFleetCaptain extends CardImpl {
// Whenever Dire Fleet Captain attacks, it gets +1/+1 until end of turn for each other attacking Pirate.
PermanentsOnBattlefieldCount value = new PermanentsOnBattlefieldCount(filter);
this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect(value, value, Duration.EndOfTurn, true), false));
this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect(value, value, Duration.EndOfTurn, true)
.setText("it gets +1/+1 until end of turn for each other attacking Pirate"), false));
}
public DireFleetCaptain(final DireFleetCaptain card) {

View file

@ -52,7 +52,7 @@ public class DireFleetInterloper extends CardImpl {
this.toughness = new MageInt(2);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// When Dire Fleet Interloper enters the battlefield, it explores.
this.addAbility(new EntersBattlefieldTriggeredAbility(new ExploreSourceEffect()));

View file

@ -58,7 +58,7 @@ public class DireFleetRavager extends CardImpl {
this.toughness = new MageInt(4);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Deathtouch
this.addAbility(DeathtouchAbility.getInstance());

View file

@ -58,7 +58,7 @@ public class Dreamstealer extends CardImpl {
this.toughness = new MageInt(2);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// When Dreamstealer deals combat damage to a player, that player discards that many cards.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DreamstealerDiscardEffect(), false, true));

View file

@ -63,7 +63,7 @@ public class DrivenDespair extends SplitCard {
// Aftermath
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true));
// Until end of turn, creatures you control gain menace and "Whenever this creature deals combat damage to a player, that player discards a card."
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.EndOfTurn));
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(new MenaceAbility(), Duration.EndOfTurn));
ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DiscardTargetEffect(1), false, true);
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn)
.setText("and \"Whenever this creature deals combat damage to a player, that player discards a card.\""));

View file

@ -59,7 +59,7 @@ public class EmberhornMinotaur extends CardImpl {
Effect effect = new BoostSourceEffect(1, 1, Duration.EndOfTurn);
effect.setText("it gets +1/+1");
BecomesExertSourceTriggeredAbility ability = new BecomesExertSourceTriggeredAbility(effect);
effect = new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn);
effect = new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn);
effect.setText("and gains menace until end of turn");
ability.addEffect(effect);
this.addAbility(new ExertAbility(ability));

View file

@ -60,7 +60,7 @@ public class EmbraalBruiser extends CardImpl {
// Embraal Bruiser has menace as long as you control an artifact.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
new GainAbilitySourceEffect(MenaceAbility.getInstance()),
new GainAbilitySourceEffect(new MenaceAbility()),
new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT),
"{this} has menace as long as you control an artifact")));
}

View file

@ -70,7 +70,7 @@ public class FathomFleetCaptain extends CardImpl {
this.toughness = new MageInt(1);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Whenever Fathom Fleet Captain attacks, if you control another nontoken Pirate, you may pay {2}. If you do, creature a 2/2 black Pirate creature token with menace.
this.addAbility(new ConditionalTriggeredAbility(

View file

@ -32,10 +32,10 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.ControllerPredicate;
@ -66,6 +66,7 @@ public class FathomFleetCutthroat extends CardImpl {
// When Fathom Fleet Cutthroat enters the battlefield, destroy target creature an opponent controls that was dealt damage this turn.
Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);
}
public FathomFleetCutthroat(final FathomFleetCutthroat card) {

View file

@ -36,9 +36,9 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SuperType;
@ -79,6 +79,7 @@ public class FieldOfRuin extends CardImpl {
ability.addCost(new SacrificeSourceCost());
ability.addEffect(new FieldOfRuinEffect());
ability.addTarget(new TargetLandPermanent(filter));
this.addAbility(ability);
}
public FieldOfRuin(final FieldOfRuin card) {
@ -95,7 +96,7 @@ class FieldOfRuinEffect extends OneShotEffect {
FieldOfRuinEffect() {
super(Outcome.Benefit);
this.staticText = "Each player searches his or her library for a basic land card, puts it onto the battlefield, then shuffles his or her library.";
this.staticText = "Each player searches his or her library for a basic land card, puts it onto the battlefield, then shuffles his or her library";
}
FieldOfRuinEffect(final FieldOfRuinEffect effect) {
@ -116,13 +117,7 @@ class FieldOfRuinEffect extends OneShotEffect {
if (player != null) {
TargetCardInLibrary target = new TargetCardInLibrary(0, 1, StaticFilters.FILTER_BASIC_LAND_CARD);
if (player.searchLibrary(target, game)) {
for (UUID cardId : target.getTargets()) {
Card card = player.getLibrary().getCard(cardId, game);
if (card != null) {
card.putOntoBattlefield(game, Zone.LIBRARY, source.getSourceId(), player.getId());
}
}
player.moveCards(new CardsImpl(target.getTargets()), Zone.BATTLEFIELD, source, game);
player.shuffleLibrary(source, game);
}
}

View file

@ -57,7 +57,7 @@ public class FireShrineKeeper extends CardImpl {
this.toughness = new MageInt(1);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// {7}{R}, {T}, Sacrifice Fire Shrine Keeper: It deals 3 damage to each of up to two target creatures.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,

View file

@ -55,7 +55,7 @@ public class FiremantleMage extends CardImpl {
// <i>Rally</i> Whenver Firemantle Mage or another Ally enters the battlefield under your control, creatures you control gain menace until end of turn.
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(
new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, FILTER_PERMANENT_CREATURES), false));
new GainAbilityControlledEffect(new MenaceAbility(), Duration.EndOfTurn, FILTER_PERMANENT_CREATURES), false));
}
public FiremantleMage(final FiremantleMage card) {

View file

@ -53,7 +53,7 @@ public class FlamebladeAdept extends CardImpl {
this.toughness = new MageInt(2);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Whenever you cycle or discard a card, Flameblade Adept gets +1/+0 until end of turn.
this.addAbility(new CycleOrDiscardControllerTriggeredAbility(new BoostSourceEffect(1, 0, Duration.EndOfTurn)));

View file

@ -60,7 +60,7 @@ public class GatstafRavagers extends CardImpl {
this.nightCard = true;
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Ravagers.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false);
this.addAbility(new ConditionalTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));

View file

@ -51,7 +51,7 @@ public class GeyserfieldStalker extends CardImpl {
this.toughness = new MageInt(2);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// <i>Landfall</i> - Whenever a land enters the battlefield under your control, Geyserfield Stalker gets +2/+2 until end of turn.
this.addAbility(new LandfallAbility(new BoostSourceEffect(2, 2, Duration.EndOfTurn), false));
}

View file

@ -65,7 +65,7 @@ public class GiantSpectacle extends CardImpl {
// Enchanted creature gets +2/+1 and has menace.
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 1));
Effect effect = new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA);
Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA);
effect.setText("and has menace");
ability.addEffect(effect);
this.addAbility(ability);

View file

@ -66,7 +66,7 @@ public class GiltLeafWinnower extends CardImpl {
this.toughness = new MageInt(3);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// When Gilt-Leaf Winnower enters the battlefield, you may destroy target non-Elf creature whose power and toughness aren't equal.
Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true);

View file

@ -60,7 +60,7 @@ public class GlintSleeveSiphoner extends CardImpl {
this.toughness = new MageInt(1);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Whenever Glint-Sleeve Siphoner enters the battlefield or attacks, you get {E}.
this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new GetEnergyCountersControllerEffect(1)));

View file

@ -34,11 +34,11 @@ import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.VigilanceAbility;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
/**
@ -56,10 +56,10 @@ public class GlorifierOfDusk extends CardImpl {
this.toughness = new MageInt(4);
// Pay 2 life: Glorifier of Dusk gains flying until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new PayLifeCost(4)));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new PayLifeCost(2)));
// Pay 2 life: Glorifier of Dusk gains vigilance until end of turn.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn), new PayLifeCost(4)));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn), new PayLifeCost(2)));
}
public GlorifierOfDusk(final GlorifierOfDusk card) {

View file

@ -72,7 +72,7 @@ public class GoblinDarkDwellers extends CardImpl {
this.toughness = new MageInt(4);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// When Goblin Dark-Dwellers enters the battlefield, you may cast target instant or sorcery card with converted mana cost 3 or less
// from your graveyard without paying its mana cost. If that card would be put into your graveyard this turn, exile it instead.

View file

@ -54,7 +54,7 @@ public class GoblinFreerunner extends CardImpl {
addAbility(new SurgeAbility(this, "{1}{R}"));
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
}
public GoblinFreerunner(final GoblinFreerunner card) {

View file

@ -62,7 +62,7 @@ public class GoblinGloryChaser extends CardImpl {
// As long as Goblin Glory Chaser is renowned, it has menace.
Effect effect = new ConditionalContinuousEffect(
new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield),
new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield),
RenownedSourceCondition.instance,
"As long as {this} is renowned, it has menace");
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);

View file

@ -56,7 +56,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
// Creatures you control have menace. (They can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter)));
}
public GoblinWarDrums(final GoblinWarDrums card) {

View file

@ -56,7 +56,7 @@ public class GorillaWarCry extends CardImpl {
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(TurnPhase.COMBAT, BeforeBlockersAreDeclaredCondition.instance));
// All creatures gain menace until end of turn. <i>(They can't be blocked except by two or more creatures.)</i>
Effect effect = new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent());
Effect effect = new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, new FilterCreaturePermanent());
effect.setText("All creatures gain menace until end of turn. <i>(They can't be blocked except by two or more creatures.)</i>");
this.getSpellAbility().addEffect(effect);

View file

@ -37,8 +37,8 @@ import mage.abilities.keyword.DoubleStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.StaticFilters;
/**
@ -59,7 +59,7 @@ public class GoringCeratops extends CardImpl {
// Whenever Goring Ceratops attacks, other creatures you control gain double strike until end of turn.
Effect effect = new GainAbilityControlledEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, true);
effect.setText("other creatures you control gain double strike");
effect.setText("other creatures you control gain double strike until end of turn");
Ability ability = new AttacksTriggeredAbility(effect, false);
this.addAbility(ability);
}

View file

@ -65,7 +65,7 @@ public class GrafHarvest extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}");
// Zombies you control have menace.
Effect effect = new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter);
Effect effect = new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter);
effect.setText("Zombies you control have menace. <i>(They can't be blocked except by two or more creatures.)</i>");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));

View file

@ -19,7 +19,7 @@ public class GraniticTitan extends CardImpl {
toughness = new MageInt(4);
// Menace
addAbility(MenaceAbility.getInstance());
addAbility(new MenaceAbility());
// Cycling {2}
addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}")));

View file

@ -54,7 +54,7 @@ public class GruulNodorog extends CardImpl {
this.toughness = new MageInt(4);
//{R}: Gruul Nodorog gains menace until end of turn. (It can't be blocked except by two or more creatures.)
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{R}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn), new ManaCostsImpl("{R}")));
}
public GruulNodorog(final GruulNodorog card) {

View file

@ -60,7 +60,7 @@ public class GruulWarChant extends CardImpl {
// Attacking creatures you control get +1/+0 and have menace. (They can't be blocked except by two or more creatures.)
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter));
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter));
ability.addEffect(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false));
this.addAbility(ability);
}

View file

@ -71,7 +71,7 @@ public class HeadstrongBrute extends CardImpl {
// Headstrong Brute has menace as long as you control another Pirate.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new ConditionalContinuousEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield),
new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield),
new PermanentsOnTheBattlefieldCondition(filter), "{this} has menace as long as you control another Pirate")));
}

View file

@ -66,7 +66,7 @@ public class HordeOfBoggarts extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame)));
// Menace (This creature can't be blocked except by two or more creatures.)
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
}
public HordeOfBoggarts(final HordeOfBoggarts card) {

View file

@ -60,7 +60,7 @@ public class HoundOfTheFarbogs extends CardImpl {
// <i>Delirium</i> &mdash; Hound of the Farborgs has menace as long as there are four or more card types among cards in your graveyard.
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD,
new ConditionalContinuousEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield), DeliriumCondition.instance, RULE));
new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield), DeliriumCondition.instance, RULE));
ability.setAbilityWord(AbilityWord.DELIRIUM);
this.addAbility(ability);
}

View file

@ -61,7 +61,7 @@ public class IkraShidiqiTheUsurper extends CardImpl {
this.toughness = new MageInt(7);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Whenever a creature you control deals combat damage to a player, you gain life equal to that creature's toughness.
this.addAbility(new IkraShidiqiTheUsurperTriggeredAbility());

View file

@ -29,17 +29,16 @@ package mage.cards.i;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.constants.SubType;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.AnotherPredicate;
@ -72,7 +71,7 @@ public class ImperialAerosaur extends CardImpl {
// When Imperial Aerosaur enters the battlefield, another target creature you control gets +1/+1 and gains flying until end of turn.
Effect effect = new BoostTargetEffect(1, 1, Duration.EndOfTurn);
effect.setText("another target creature you control gets +1/+1");
Ability ability = new EntersBattlefieldTriggeredAbility(effect);
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(effect);
ability.addEffect(effect);
effect = new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn);
effect.setText("and gains flying until end of turn");

View file

@ -63,7 +63,7 @@ public class ImposingVisage extends CardImpl {
this.addAbility(ability);
// Enchanted creature has menace. (It can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA)));
}
public ImposingVisage(final ImposingVisage card) {

View file

@ -54,7 +54,7 @@ public class InsolentNeonate extends CardImpl {
this.toughness = new MageInt(1);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Discard a card, Sacrifice Insolent Neonate: Draw a card.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new DiscardCardCost());
ability.addCost(new SacrificeSourceCost());

View file

@ -64,7 +64,7 @@ public class IreShaman extends CardImpl {
this.toughness = new MageInt(1);
// Menace (This creature can't be blocked except by two or more creatures.)
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Megamorph {R}
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{R}"), true));

View file

@ -75,7 +75,7 @@ public class IroasGodOfVictory extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
// Creatures you control have menace. (They can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter)));
// Prevent all damage that would be dealt to attacking creatures you control.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PreventAllDamageToAllEffect(Duration.WhileOnBattlefield, filterAttacking)));

View file

@ -78,6 +78,7 @@ public class JacesSentinel extends CardImpl {
new CantBeBlockedSourceEffect(),
new PermanentsOnTheBattlefieldCondition(filter),
"and has can't be blocked"));
this.addAbility(ability);
}
public JacesSentinel(final JacesSentinel card) {

View file

@ -71,7 +71,7 @@ public class JangoFett extends CardImpl {
this.toughness = new MageInt(2);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Haste
this.addAbility(HasteAbility.getInstance());

View file

@ -64,7 +64,7 @@ public class KariZevSkyshipRaider extends CardImpl {
this.addAbility(FirstStrikeAbility.getInstance());
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Whenever Kari Zev, Skyship Raider attacks, create a legendary 2/1 red Monkey creature token named Ragavan that's tapped and attacking. Exile that token at end of combat.
this.addAbility(new AttacksTriggeredAbility(new KariZevSkyshipRaiderEffect(), false));

View file

@ -53,7 +53,7 @@ public class KederektCreeper extends CardImpl {
this.addAbility(DeathtouchAbility.getInstance());
// Menace (This creature can't be blocked except by two or more creatures.)
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
}
public KederektCreeper(final KederektCreeper card) {

View file

@ -54,7 +54,7 @@ public class KhenraScrapper extends CardImpl {
this.toughness = new MageInt(3);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// You may exert Khenra Scrapper as it attacks. When you do, it gets +2/+0 until end of turn.
this.addAbility(new ExertAbility(new BecomesExertSourceTriggeredAbility(new BoostSourceEffect(2, 0, Duration.EndOfTurn))));

View file

@ -67,7 +67,7 @@ public class KheruMindEater extends CardImpl {
this.toughness = new MageInt(3);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Whenever Kheru Mind-Eater deals combat damage to a player, that player exiles a card from his or her hand face down.
this.addAbility(new DealsDamageToAPlayerTriggeredAbility(new KheruMindEaterExileEffect(), false, true));

View file

@ -79,7 +79,7 @@ public class KozilekTheGreatDistortion extends CardImpl {
new CardsInHandCondition(ComparisonType.FEWER_THAN, 7),
"When you cast {this}, if you have fewer than seven cards in hand, draw cards equal to the difference."));
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Discard a card with converted mana cost X: Counter target spell with converted mana cost X.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new KozilekDiscardCost());

View file

@ -63,7 +63,7 @@ public class KozileksShrieker extends CardImpl {
Effect effect = new BoostSourceEffect(1, 0, Duration.EndOfTurn);
effect.setText("{this} gets +1/+0");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{C}"));
effect = new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn);
effect = new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn);
effect.setText("and gains menace until end of turn");
ability.addEffect(effect);
this.addAbility(ability);

View file

@ -35,10 +35,10 @@ import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.FilterSpell;
@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
*/
public class LightningRigCrew extends CardImpl {
private static final FilterSpell filter = new FilterSpell();
private static final FilterSpell filter = new FilterSpell("a Pirate spell");
static {
filter.add(new SubtypePredicate(SubType.PIRATE));

View file

@ -65,7 +65,7 @@ public class LordOfTheAccursed extends CardImpl {
//{2}{B}, Tap: All Zombies gain menace until end of turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
MenaceAbility.getInstance(),
new MenaceAbility(),
Duration.EndOfTurn,
filter, "All Zombies gains menace until end of turn."),
new ManaCostsImpl("{1}{B}"));

View file

@ -56,7 +56,7 @@ public class LoseCalm extends CardImpl {
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn, "It gains haste until end of turn"));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
effect = new GainAbilityTargetEffect(MenaceAbility.getInstance(), Duration.EndOfTurn);
effect = new GainAbilityTargetEffect(new MenaceAbility(), Duration.EndOfTurn);
effect.setText("and menace until end of turn. (A creature with menace can't be blocked except by two or more creatures.) ");
this.getSpellAbility().addEffect(effect);
}

View file

@ -32,11 +32,11 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.effects.common.CreatureExploresTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.ControllerPredicate;
@ -65,6 +65,7 @@ public class LurkingChupacabra extends CardImpl {
// Whenever a creature you control explores, target creature an opponent controls gets -2/-2 until end of turn
Ability ability = new CreatureExploresTriggeredAbility(new BoostTargetEffect(-2, -2, Duration.EndOfTurn));
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);
}
public LurkingChupacabra(final LurkingChupacabra card) {

View file

@ -65,7 +65,7 @@ public class MadcapSkills extends CardImpl {
// Enchanted creature gets +3/+0 and and has menace. (It can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 0)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA)));
}
public MadcapSkills(final MadcapSkills card) {

View file

@ -187,7 +187,7 @@ class MajesticMyriarchEffect extends OneShotEffect {
// Menace
if (game.getBattlefield().contains(filterMenace, source.getControllerId(), 1, game)) {
game.addEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn), source);
game.addEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn), source);
}
// Reach

View file

@ -29,6 +29,7 @@ package mage.cards.m;
import java.util.UUID;
import mage.abilities.Mode;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -60,7 +61,7 @@ public class MarchOfTheDrowned extends CardImpl {
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(new FilterCreatureCard("creature card from your graveyard")));
// &amp;bull; Return two target Pirate cards from your graveyard to your hand.
Mode mode = new Mode();
mode.getEffects().add(new ReturnToHandTargetEffect());
mode.getEffects().add(new ReturnFromGraveyardToHandTargetEffect());
mode.getTargets().add(new TargetCardInYourGraveyard(2, filter));
this.getSpellAbility().addMode(mode);
}

View file

@ -28,6 +28,7 @@
package mage.cards.m;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
@ -38,9 +39,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@ -52,10 +53,9 @@ import mage.target.common.TargetCreaturePermanent;
public class MarkOfTheVampire extends CardImpl {
public MarkOfTheVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
this.subtype.add(SubType.AURA);
// Enchant creature
TargetPermanent target = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(target);
@ -63,8 +63,9 @@ public class MarkOfTheVampire extends CardImpl {
this.addAbility(new EnchantAbility(target.getTargetName()));
// Enchanted creature gets +2/+2 and has lifelink.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.AURA)));
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield));
ability.addEffect(new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.AURA).setText("and has lifelink"));
this.addAbility(ability);
}
public MarkOfTheVampire(final MarkOfTheVampire card) {

View file

@ -76,7 +76,7 @@ public class MathasFiendSeeker extends CardImpl {
this.toughness = new MageInt(3);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// At the beginning of your end step, put a bounty counter on target creature an opponent controls. For as long as that creature has a bounty counter on it, it has "When this creature dies, each opponent draws a card and gains 2 life."
Ability ability = new BeginningOfYourEndStepTriggeredAbility(new AddCountersTargetEffect(CounterType.BOUNTY.createInstance()), false);

View file

@ -50,7 +50,7 @@ public class MaulfistSquad extends CardImpl {
this.toughness = new MageInt(1);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Fabricate 1
this.addAbility(new FabricateAbility(1));

View file

@ -60,7 +60,7 @@ public class MoonriseIntruder extends CardImpl {
this.transformable = true;
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonrise Intruder.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false);

View file

@ -64,7 +64,7 @@ public class MorkrutNecropod extends CardImpl {
this.toughness = new MageInt(7);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Whenever Morkrut Necropod attacks or blocks, sacrifice another creature or land.
this.addAbility(new AttacksOrBlocksTriggeredAbility(new SacrificeControllerEffect(filter, 1, ""), false));

View file

@ -64,7 +64,7 @@ public class NoxiousGearhulk extends CardImpl {
this.toughness = new MageInt(4);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// When Noxious Gearhulk enters the battlefield, you may destroy another target creature. If a creature is destroyed this way, you gain life equal to its toughness.
Ability ability = new EntersBattlefieldTriggeredAbility(new NoxiousGearhulkEffect());

View file

@ -161,7 +161,7 @@ class OdricLunarchMarshalEffect extends OneShotEffect {
// Menace
if (game.getBattlefield().contains(filterMenace, source.getControllerId(), 1, game)) {
game.addEffect(new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, filterCreatures), source);
game.addEffect(new GainAbilityControlledEffect(new MenaceAbility(), Duration.EndOfTurn, filterCreatures), source);
}
// Reach

View file

@ -28,15 +28,11 @@
package mage.cards.o;
import java.util.UUID;
import mage.constants.SubType;
import mage.target.common.TargetCreaturePermanent;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.constants.Outcome;
import mage.target.TargetPermanent;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
@ -44,7 +40,11 @@ import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
/**
*
@ -65,8 +65,10 @@ public class OneWithTheWind extends CardImpl {
this.addAbility(ability);
// Enchanted creature gets +2/+2 and has flying.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA)));
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield));
ability.addEffect(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA)
.setText("and has flying"));
this.addAbility(ability);
}
public OneWithTheWind(final OneWithTheWind card) {

View file

@ -70,7 +70,7 @@ public class PlagueBelcher extends CardImpl {
this.toughness = new MageInt(4);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// When Plague Belcher enters the battlefield, put two -1/-1 counters on target creature you control.
Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.M1M1.createInstance(2)));

View file

@ -78,7 +78,7 @@ public class PriestOfTheWakeningSun extends CardImpl {
this.addAbility(ability);
// {3}{W}{W}, Sacrifice Priest of the Wakening Sun: Search your library for a Dinosaur card, reveal it, put it into your hand, then shuffle your library.
TargetCardInLibrary target = new TargetCardInLibrary(0, 1, filter);
TargetCardInLibrary target = new TargetCardInLibrary(filter);
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(target), true, true), new ManaCostsImpl("{3}{W}{W}"));
ability2.addCost(new SacrificeSourceCost());
this.addAbility(ability2);

View file

@ -60,11 +60,11 @@ public class PurphorossEmissary extends CardImpl {
this.addAbility(new BestowAbility(this, "{6}{R}"));
// Menace (This creature can't be blocked except by two or more creatures.)
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Enchanted creature gets +3/+3 and and has menace.
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3,3));
Effect effect = new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA);
Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA);
effect.setText("and has menace");
ability.addEffect(effect);
this.addAbility(ability);

View file

@ -62,7 +62,7 @@ public class PyreheartWolf extends CardImpl {
this.toughness = new MageInt(1);
// Whenever Pyreheart Wolf attacks, creatures you control gain menace until end of turn. (They can't be blocked except by two or more creatures.)
this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, filter), false));
this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, filter), false));
// Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)
this.addAbility(new UndyingAbility());

View file

@ -71,7 +71,7 @@ public class RampagingFerocidon extends CardImpl {
this.toughness = new MageInt(3);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// Players can't gain life.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new RampagingFerocidonEffect()));

View file

@ -63,7 +63,7 @@ public class RelentlessDead extends CardImpl {
this.toughness = new MageInt(2);
// Menace
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
// When Relentless Dead dies, you may pay {B}. If you do, return it to its owner's hand.
this.addAbility(new DiesTriggeredAbility(new DoIfCostPaid(new ReturnToHandSourceEffect(), new ManaCostsImpl("{B}"))));

View file

@ -49,7 +49,7 @@ public class RipscalePredator extends CardImpl {
this.toughness = new MageInt(5);
// Ripscale Predator can't be blocked except by two or more creatures.
this.addAbility(MenaceAbility.getInstance());
this.addAbility(new MenaceAbility());
}
public RipscalePredator(final RipscalePredator card) {

View file

@ -35,10 +35,10 @@ import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
@ -53,7 +53,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public class RuthlessKnave extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("three other creatures");
private static final FilterControlledPermanent filter = new FilterControlledPermanent("three three Treasures");
static {
filter.add(new SubtypePredicate(SubType.TREASURE));

View file

@ -69,7 +69,9 @@ public class SavageStomp extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
// Savage Stomp costs {2} less to cast if it targets a Dinosaur you control.
this.addAbility(new SimpleStaticAbility(Zone.STACK, new SpellCostReductionSourceEffect(2, SavageStompCondition.instance)));
this.addAbility(new SimpleStaticAbility(Zone.STACK,
new SpellCostReductionSourceEffect(2, SavageStompCondition.instance))
.setRuleAtTheTop(true));
// Put a +1/+1 counter on target creature you control. Then that creature fights target creature you don't control.
Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance());

View file

@ -60,7 +60,7 @@ public class ScroungedScythe extends CardImpl {
// As long as equipped creature is a Human, it has menace.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new ConditionalContinuousEffect(new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.EQUIPMENT),
new ConditionalContinuousEffect(new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.EQUIPMENT),
new EquippedHasSubtypeCondition(SubType.HUMAN), staticText)));
// Equip {2}

View file

@ -59,7 +59,7 @@ public class SearingSpearAskari extends CardImpl {
this.addAbility(new FlankingAbility());
// {1}{R}: Searing Spear Askari gains menace until end of turn. (It can't be blocked except by two or more creatures.)
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{1}{R}")));
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn), new ManaCostsImpl("{1}{R}")));
}
public SearingSpearAskari(final SearingSpearAskari card) {

Some files were not shown because too many files have changed in this diff Show more