1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-02 11:25:59 -09:00

Menace is now a singleton like other keywords

This commit is contained in:
Evan Kranzler 2017-09-13 15:38:02 -04:00
parent 6cb4299b5a
commit b83e12f51c
93 changed files with 110 additions and 103 deletions
Mage.Sets/src/mage/cards
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords
Mage/src/main/java/mage
abilities/keyword
game/permanent/token

View file

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

View file

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

View file

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

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.) // <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( Ability ability = new ActivateIfConditionActivatedAbility(
Zone.BATTLEFIELD, Zone.BATTLEFIELD,
new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, filter), new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, filter),
new ManaCostsImpl("{3}{R}{R}"), new ManaCostsImpl("{3}{R}{R}"),
FormidableCondition.instance); FormidableCondition.instance);
ability.setAbilityWord(AbilityWord.FORMIDABLE); ability.setAbilityWord(AbilityWord.FORMIDABLE);

View file

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

View file

@ -60,7 +60,7 @@ public class BloodChinRager extends CardImpl {
this.toughness = new MageInt(2); 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.) // 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(new MenaceAbility(), Duration.EndOfTurn, filter), false)); this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, filter), false));
} }
public BloodChinRager(final BloodChinRager card) { public BloodChinRager(final BloodChinRager card) {

View file

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

View file

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

View file

@ -65,7 +65,7 @@ public class BontuTheGlorified extends CardImpl {
this.toughness = new MageInt(6); this.toughness = new MageInt(6);
//Menace //Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
//Indestructible //Indestructible
this.addAbility(IndestructibleAbility.getInstance()); 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. // As long as Bull Rancor is monstrous, creatures you control have menace.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
new GainAbilityControlledEffect(new MenaceAbility(), Duration.WhileOnBattlefield), new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield),
MonstrousCondition.instance, MonstrousCondition.instance,
"As long as Bull Rancor is monstrous, creatures you control have menace") "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.) // 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( this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
new MenaceAbility(), MenaceAbility.getInstance(),
Duration.WhileOnBattlefield, filterGoblin, Duration.WhileOnBattlefield, filterGoblin,
"Each Goblin you control has menace. (They can't be blocked except by two or more creatures.)"))); "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.) // 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( this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
new MenaceAbility(), MenaceAbility.getInstance(),
Duration.WhileOnBattlefield, filterElemental, Duration.WhileOnBattlefield, filterElemental,
"Each Elemental 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.)")));
} }

View file

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

View file

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

View file

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

View file

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

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.) // All creatures gain menace until end of turn. (They can't be blocked except by two or more creatures.)
this.getSpellAbility().addEffect(new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES)); this.getSpellAbility().addEffect(new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES));
// Threshold If seven or more cards are in your graveyard, creatures can't block this turn. // Threshold If seven or more cards are in your graveyard, creatures can't block this turn.
this.getSpellAbility().addEffect( this.getSpellAbility().addEffect(

View file

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

View file

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

View file

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

View file

@ -63,7 +63,7 @@ public class DrivenDespair extends SplitCard {
// Aftermath // Aftermath
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true)); ((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." // 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(new MenaceAbility(), Duration.EndOfTurn)); getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.EndOfTurn));
ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DiscardTargetEffect(1), false, true); ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DiscardTargetEffect(1), false, true);
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn) getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn)
.setText("and \"Whenever this creature deals combat damage to a player, that player discards a card.\"")); .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 effect = new BoostSourceEffect(1, 1, Duration.EndOfTurn);
effect.setText("it gets +1/+1"); effect.setText("it gets +1/+1");
BecomesExertSourceTriggeredAbility ability = new BecomesExertSourceTriggeredAbility(effect); BecomesExertSourceTriggeredAbility ability = new BecomesExertSourceTriggeredAbility(effect);
effect = new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn); effect = new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn);
effect.setText("and gains menace until end of turn"); effect.setText("and gains menace until end of turn");
ability.addEffect(effect); ability.addEffect(effect);
this.addAbility(new ExertAbility(ability)); 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. // Embraal Bruiser has menace as long as you control an artifact.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
new GainAbilitySourceEffect(new MenaceAbility()), new GainAbilitySourceEffect(MenaceAbility.getInstance()),
new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT), new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT),
"{this} has menace as long as you control an 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); this.toughness = new MageInt(1);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// 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. // 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( this.addAbility(new ConditionalTriggeredAbility(

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. // <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( this.addAbility(new AllyEntersBattlefieldTriggeredAbility(
new GainAbilityControlledEffect(new MenaceAbility(), Duration.EndOfTurn, FILTER_PERMANENT_CREATURES), false)); new GainAbilityControlledEffect(MenaceAbility.getInstance(), Duration.EndOfTurn, FILTER_PERMANENT_CREATURES), false));
} }
public FiremantleMage(final FiremantleMage card) { public FiremantleMage(final FiremantleMage card) {

View file

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

View file

@ -60,7 +60,7 @@ public class GatstafRavagers extends CardImpl {
this.nightCard = true; this.nightCard = true;
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Ravagers. // 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); TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false);
this.addAbility(new ConditionalTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE)); 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); this.toughness = new MageInt(2);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// <i>Landfall</i> - Whenever a land enters the battlefield under your control, Geyserfield Stalker gets +2/+2 until end of turn. // <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)); 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. // Enchanted creature gets +2/+1 and has menace.
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 1)); ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 1));
Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA); Effect effect = new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA);
effect.setText("and has menace"); effect.setText("and has menace");
ability.addEffect(effect); ability.addEffect(effect);
this.addAbility(ability); this.addAbility(ability);

View file

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

View file

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

View file

@ -72,7 +72,7 @@ public class GoblinDarkDwellers extends CardImpl {
this.toughness = new MageInt(4); this.toughness = new MageInt(4);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// When Goblin Dark-Dwellers enters the battlefield, you may cast target instant or sorcery card with converted mana cost 3 or less // 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. // 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}")); addAbility(new SurgeAbility(this, "{1}{R}"));
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
} }
public GoblinFreerunner(final GoblinFreerunner card) { 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. // As long as Goblin Glory Chaser is renowned, it has menace.
Effect effect = new ConditionalContinuousEffect( Effect effect = new ConditionalContinuousEffect(
new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield), new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield),
RenownedSourceCondition.instance, RenownedSourceCondition.instance,
"As long as {this} is renowned, it has menace"); "As long as {this} is renowned, it has menace");
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect); 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.) // Creatures you control have menace. (They can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
} }
public GoblinWarDrums(final GoblinWarDrums card) { public GoblinWarDrums(final GoblinWarDrums card) {

View file

@ -56,7 +56,7 @@ public class GorillaWarCry extends CardImpl {
this.addAbility(new CastOnlyDuringPhaseStepSourceAbility(TurnPhase.COMBAT, BeforeBlockersAreDeclaredCondition.instance)); 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> // 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(new MenaceAbility(), Duration.EndOfTurn, new FilterCreaturePermanent()); Effect effect = new GainAbilityAllEffect(MenaceAbility.getInstance(), 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>"); 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); this.getSpellAbility().addEffect(effect);

View file

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

View file

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

View file

@ -54,7 +54,7 @@ public class GruulNodorog extends CardImpl {
this.toughness = new MageInt(4); 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.) //{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(new MenaceAbility(), Duration.EndOfTurn), new ManaCostsImpl("{R}"))); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{R}")));
} }
public GruulNodorog(final GruulNodorog card) { 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.) // 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(new MenaceAbility(), Duration.WhileOnBattlefield, filter)); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter));
ability.addEffect(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false)); ability.addEffect(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -66,7 +66,7 @@ public class HordeOfBoggarts extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame))); 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.) // Menace (This creature can't be blocked except by two or more creatures.)
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
} }
public HordeOfBoggarts(final HordeOfBoggarts card) { 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. // <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, Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD,
new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield), DeliriumCondition.instance, RULE)); new ConditionalContinuousEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield), DeliriumCondition.instance, RULE));
ability.setAbilityWord(AbilityWord.DELIRIUM); ability.setAbilityWord(AbilityWord.DELIRIUM);
this.addAbility(ability); this.addAbility(ability);
} }

View file

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

View file

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

View file

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

View file

@ -64,7 +64,7 @@ public class IreShaman extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// Menace (This creature can't be blocked except by two or more creatures.) // Menace (This creature can't be blocked except by two or more creatures.)
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// Megamorph {R} // Megamorph {R}
this.addAbility(new MorphAbility(this, new ManaCostsImpl("{R}"), true)); 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)); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
// Creatures you control have menace. (They can't be blocked except by two or more creatures.) // Creatures you control have menace. (They can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
// Prevent all damage that would be dealt to attacking creatures you control. // Prevent all damage that would be dealt to attacking creatures you control.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PreventAllDamageToAllEffect(Duration.WhileOnBattlefield, filterAttacking))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PreventAllDamageToAllEffect(Duration.WhileOnBattlefield, filterAttacking)));

View file

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

View file

@ -64,7 +64,7 @@ public class KariZevSkyshipRaider extends CardImpl {
this.addAbility(FirstStrikeAbility.getInstance()); this.addAbility(FirstStrikeAbility.getInstance());
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// 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. // 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)); this.addAbility(new AttacksTriggeredAbility(new KariZevSkyshipRaiderEffect(), false));

View file

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

View file

@ -54,7 +54,7 @@ public class KhenraScrapper extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// You may exert Khenra Scrapper as it attacks. When you do, it gets +2/+0 until end of turn. // 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)))); 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); this.toughness = new MageInt(3);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// Whenever Kheru Mind-Eater deals combat damage to a player, that player exiles a card from his or her hand face down. // 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)); 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), 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.")); "When you cast {this}, if you have fewer than seven cards in hand, draw cards equal to the difference."));
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// Discard a card with converted mana cost X: Counter target spell with converted mana cost X. // 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()); 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 effect = new BoostSourceEffect(1, 0, Duration.EndOfTurn);
effect.setText("{this} gets +1/+0"); effect.setText("{this} gets +1/+0");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{C}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{C}"));
effect = new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn); effect = new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn);
effect.setText("and gains menace until end of turn"); effect.setText("and gains menace until end of turn");
ability.addEffect(effect); ability.addEffect(effect);
this.addAbility(ability); this.addAbility(ability);

View file

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

View file

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

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.) // 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 BoostEnchantedEffect(3, 0)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(MenaceAbility.getInstance(), AttachmentType.AURA)));
} }
public MadcapSkills(final MadcapSkills card) { public MadcapSkills(final MadcapSkills card) {

View file

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

View file

@ -76,7 +76,7 @@ public class MathasFiendSeeker extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// 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." // 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); 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); this.toughness = new MageInt(1);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// Fabricate 1 // Fabricate 1
this.addAbility(new FabricateAbility(1)); this.addAbility(new FabricateAbility(1));

View file

@ -60,7 +60,7 @@ public class MoonriseIntruder extends CardImpl {
this.transformable = true; this.transformable = true;
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonrise Intruder. // 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); 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); this.toughness = new MageInt(7);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// Whenever Morkrut Necropod attacks or blocks, sacrifice another creature or land. // Whenever Morkrut Necropod attacks or blocks, sacrifice another creature or land.
this.addAbility(new AttacksOrBlocksTriggeredAbility(new SacrificeControllerEffect(filter, 1, ""), false)); 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); this.toughness = new MageInt(4);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// 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. // 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()); Ability ability = new EntersBattlefieldTriggeredAbility(new NoxiousGearhulkEffect());

View file

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

View file

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

View file

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

View file

@ -62,7 +62,7 @@ public class PyreheartWolf extends CardImpl {
this.toughness = new MageInt(1); 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.) // 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(new MenaceAbility(), Duration.EndOfTurn, filter), false)); this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(MenaceAbility.getInstance(), 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.) // 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()); this.addAbility(new UndyingAbility());

View file

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

View file

@ -63,7 +63,7 @@ public class RelentlessDead extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// When Relentless Dead dies, you may pay {B}. If you do, return it to its owner's hand. // 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}")))); 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); this.toughness = new MageInt(5);
// Ripscale Predator can't be blocked except by two or more creatures. // Ripscale Predator can't be blocked except by two or more creatures.
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
} }
public RipscalePredator(final RipscalePredator card) { public RipscalePredator(final RipscalePredator card) {

View file

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

View file

@ -59,7 +59,7 @@ public class SearingSpearAskari extends CardImpl {
this.addAbility(new FlankingAbility()); 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.) // {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(new MenaceAbility(), Duration.EndOfTurn), new ManaCostsImpl("{1}{R}"))); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{1}{R}")));
} }
public SearingSpearAskari(final SearingSpearAskari card) { public SearingSpearAskari(final SearingSpearAskari card) {

View file

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

View file

@ -61,7 +61,7 @@ public class SinProdder extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// At the beginning of your upkeep, reveal the top card of your library. Any opponent may have you put that card into your graveyard. If a player does, // At the beginning of your upkeep, reveal the top card of your library. Any opponent may have you put that card into your graveyard. If a player does,
// Sin Prodder deals damage to that player equal to that card's converted mana cost. Otherwise, put that card into your hand. // Sin Prodder deals damage to that player equal to that card's converted mana cost. Otherwise, put that card into your hand.

View file

@ -62,7 +62,7 @@ public class SinuousVermin extends CardImpl {
// As long as Sinuous Vermin is monstrous, it has menace. // As long as Sinuous Vermin is monstrous, it has menace.
Ability ability = new SimpleStaticAbility( Ability ability = new SimpleStaticAbility(
Zone.BATTLEFIELD, Zone.BATTLEFIELD,
new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield), new ConditionalContinuousEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.WhileOnBattlefield),
MonstrousCondition.instance, MonstrousCondition.instance,
"As long as {this} is monstrous, it has menace")); "As long as {this} is monstrous, it has menace"));
this.addAbility(ability); this.addAbility(ability);

View file

@ -59,7 +59,7 @@ public class SithLord extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// Sith Lord enters the battlefield with X +1/+1 counters on it, where X is the total life lost by your opponents this turn. // Sith Lord enters the battlefield with X +1/+1 counters on it, where X is the total life lost by your opponents this turn.
this.addAbility(new EntersBattlefieldAbility(new SithLordEffect(), rule)); this.addAbility(new EntersBattlefieldAbility(new SithLordEffect(), rule));

View file

@ -53,7 +53,7 @@ public class SkyTerror extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
} }

View file

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

View file

@ -65,7 +65,7 @@ public class SummitApes extends CardImpl {
// As long as you control a Mountain, Summit Apes has menace. (It can't be blocked except by two or more creatures.) // As long as you control a Mountain, Summit Apes has menace. (It can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility()), new PermanentsOnTheBattlefieldCondition(filter), rule))); new ConditionalContinuousEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance()), new PermanentsOnTheBattlefieldCondition(filter), rule)));
} }
public SummitApes(final SummitApes card) { public SummitApes(final SummitApes card) {

View file

@ -54,7 +54,7 @@ public class SweatworksBrawler extends CardImpl {
addAbility(new ImproviseAbility()); addAbility(new ImproviseAbility());
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
} }
public SweatworksBrawler(final SweatworksBrawler card) { public SweatworksBrawler(final SweatworksBrawler card) {

View file

@ -76,7 +76,7 @@ public class TerrorOfKruinPass extends CardImpl {
this.addAbility(DoubleStrikeAbility.getInstance()); this.addAbility(DoubleStrikeAbility.getInstance());
// Werewolves you control have menace. (They can't be blocked except by two or more creatures.) // Werewolves you control have menace. (They can't be blocked except by two or more creatures.)
Effect effect = new ConditionalContinuousEffect(new GainAbilityAllEffect(new MenaceAbility(), Duration.Custom, filter), new TransformedCondition(), ruleText); Effect effect = new ConditionalContinuousEffect(new GainAbilityAllEffect(MenaceAbility.getInstance(), Duration.Custom, filter), new TransformedCondition(), ruleText);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Terror of Kruin Pass. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Terror of Kruin Pass.

View file

@ -59,7 +59,7 @@ public class ThrabenFoulbloods extends CardImpl {
// <i>Delirium</i> &mdash; Thraben Foulbloods gets +1/+1 and has menace as long as there are four or more card types among cards in your graveyard. <i>(A creature with menace can't be blocked except by two or more creatures.)<i> // <i>Delirium</i> &mdash; Thraben Foulbloods gets +1/+1 and has menace as long as there are four or more card types among cards in your graveyard. <i>(A creature with menace can't be blocked except by two or more creatures.)<i>
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), DeliriumCondition.instance, "<i>Delirium</i> &mdash; {this} gets +1/+1"); ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), DeliriumCondition.instance, "<i>Delirium</i> &mdash; {this} gets +1/+1");
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility()), DeliriumCondition.instance, ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(MenaceAbility.getInstance()), DeliriumCondition.instance,
"and has menace as long as there are four or more card types among cards in your graveyard. <i>(A creature with menace can't be blocked except by two or more creatures.)<i>")); "and has menace as long as there are four or more card types among cards in your graveyard. <i>(A creature with menace can't be blocked except by two or more creatures.)<i>"));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -63,7 +63,7 @@ public class TwoHeadedDragon extends CardImpl {
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2,0, Duration.EndOfTurn),new ManaCostsImpl("{1}{R}"))); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2,0, Duration.EndOfTurn),new ManaCostsImpl("{1}{R}")));
// Menace (This creature can't be blocked except by two or more creatures.) // Menace (This creature can't be blocked except by two or more creatures.)
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
// Two-Headed Dragon can block an additional creature each combat. // Two-Headed Dragon can block an additional creature each combat.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockAdditionalCreatureEffect())); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockAdditionalCreatureEffect()));

View file

@ -56,7 +56,7 @@ public class TwoHeadedSliver extends CardImpl {
// All Sliver creatures have menace. (They can't be blocked except by two or more creatures.) // All Sliver creatures have menace. (They can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect( this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(
new MenaceAbility(), MenaceAbility.getInstance(),
Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS,
"All Sliver creatures have menace. <i>(They can't be blocked except by two or more creatures.)</i>"))); "All Sliver creatures have menace. <i>(They can't be blocked except by two or more creatures.)</i>")));
} }

View file

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

View file

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

View file

@ -50,7 +50,7 @@ public class VineKami extends CardImpl {
this.toughness = new MageInt(4); this.toughness = new MageInt(4);
// Menace (This creature can't be blocked except by two or more creatures.) // Menace (This creature can't be blocked except by two or more creatures.)
this.addAbility(new MenaceAbility()); this.addAbility(MenaceAbility.getInstance());
this.addAbility(new SoulshiftAbility(6)); this.addAbility(new SoulshiftAbility(6));
} }

View file

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

View file

@ -55,7 +55,7 @@ public class WeldfastMonitor extends CardImpl {
// {R}: Weldfast Monitor gains menace until end of turn // {R}: Weldfast Monitor gains menace until end of turn
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn), new ColoredManaCost(ColoredManaSymbol.R))); new GainAbilitySourceEffect(MenaceAbility.getInstance(), Duration.EndOfTurn), new ColoredManaCost(ColoredManaSymbol.R)));
} }

View file

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

View file

@ -105,7 +105,7 @@ public class ExertTest extends CardTestPlayerBase {
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute(); execute();
assertAbility(playerA, minotaur, new MenaceAbility(), true); assertAbility(playerA, minotaur, MenaceAbility.getInstance(), true);
assertPowerToughness(playerA, minotaur, 5, 4); assertPowerToughness(playerA, minotaur, 5, 4);
} }

View file

@ -203,7 +203,7 @@ public class RenownTest extends CardTestPlayerBase {
Permanent goblin = getPermanent("Goblin Glory Chaser", playerA); Permanent goblin = getPermanent("Goblin Glory Chaser", playerA);
Assert.assertEquals("has has renown", true, goblin.isRenowned()); Assert.assertEquals("has has renown", true, goblin.isRenowned());
assertAbility(playerA, "Goblin Glory Chaser", new MenaceAbility(), true); assertAbility(playerA, "Goblin Glory Chaser", MenaceAbility.getInstance(), true);
assertPowerToughness(playerA, "Goblin Glory Chaser", 2, 2); assertPowerToughness(playerA, "Goblin Glory Chaser", 2, 2);
assertLife(playerA, 20); assertLife(playerA, 20);

View file

@ -5,28 +5,35 @@
*/ */
package mage.abilities.keyword; package mage.abilities.keyword;
import java.io.ObjectStreamException;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.StaticAbility; import mage.abilities.EvasionAbility;
import mage.abilities.MageSingleton;
import mage.abilities.effects.common.combat.CantBeBlockedByOneEffect; import mage.abilities.effects.common.combat.CantBeBlockedByOneEffect;
import mage.constants.Zone;
/** /**
* *
* @author LevelX2 * @author LevelX2
*/ */
public class MenaceAbility extends StaticAbility { public class MenaceAbility extends EvasionAbility implements MageSingleton {
public MenaceAbility() { private static final MenaceAbility instance = new MenaceAbility();
super(Zone.BATTLEFIELD, new CantBeBlockedByOneEffect(2));
private Object readResolve() throws ObjectStreamException {
return instance;
} }
public MenaceAbility(final MenaceAbility ability) { public static MenaceAbility getInstance() {
super(ability); return instance;
}
private MenaceAbility() {
this.addEffect(new CantBeBlockedByOneEffect(2));
} }
@Override @Override
public Ability copy() { public Ability copy() {
return new MenaceAbility(this); return instance;
} }
@Override @Override

View file

@ -45,6 +45,6 @@ public class PirateToken extends Token {
subtype.add(SubType.PIRATE); subtype.add(SubType.PIRATE);
power = new MageInt(2); power = new MageInt(2);
toughness = new MageInt(2); toughness = new MageInt(2);
addAbility(new MenaceAbility()); addAbility(MenaceAbility.getInstance());
} }
} }